SlideShare a Scribd company logo
Joys and Pains of Node.js in
       the Enterprise

 Marc Fasel @marcfasel
 Shine Technologies http://blog.shinetech.com
Node.js is Hot




http://cavemancircus.com/2010/02/26/hipster-douchebags/
http://www.quora.com/Brogramming/How-does-a-programmer-become-a-brogrammer
Node.js is Hot




http://cavemancircus.com/2010/02/26/hipster-douchebags/
http://www.quora.com/Brogramming/How-does-a-programmer-become-a-brogrammer
Node.js is Hot




            Hipster Hackers
http://cavemancircus.com/2010/02/26/hipster-douchebags/
http://www.quora.com/Brogramming/How-does-a-programmer-become-a-brogrammer
Node.js is Hot




            Hipster Hackers
http://cavemancircus.com/2010/02/26/hipster-douchebags/
http://www.quora.com/Brogramming/How-does-a-programmer-become-a-brogrammer
Node.js is Hot




            Hipster Hackers                                         Brogrammers
http://cavemancircus.com/2010/02/26/hipster-douchebags/
http://www.quora.com/Brogramming/How-does-a-programmer-become-a-brogrammer
Node.js is Controversy




http://teddziuba.com/2011/10/node-js-is-cancer.html
http://blog.brianbeck.com/post/10967024222/node-js-cures-cancer
Node.js is Controversy




http://teddziuba.com/2011/10/node-js-is-cancer.html
http://blog.brianbeck.com/post/10967024222/node-js-cures-cancer
Node.js is Controversy




http://teddziuba.com/2011/10/node-js-is-cancer.html
http://blog.brianbeck.com/post/10967024222/node-js-cures-cancer
Shine Technologies
 Specialises in Enterprise software development
 Large corporations
 Node.js since version 0.2
 Several Enterprise Node.js projects
The Enterprise
 Team of Developers
 Long life-cycle
 Other stakeholders
http://citysearch.com.au
Node.js
 JavaScript on the server
 Asynchronous event-driven non-blocking I/O
    Event-loop
    Asynchronous non-blocking I/O libraries
Multi-Threading
Event Loop
Node is Different!
Experiences

 Node.js
 JavaScript
 Ecosystem
Node.js
Node.js
 Early adopters
 Only version 0.6: Not officially production-ready
 Surprisingly stable since 0.2
 Fundamental API changes
 Significant infrastructure still missing
Asynchronous Evented I/O

 Highly specialised I/O model
 Particularly useful for high concurrency
 Steep learning curve
 Control flow burden on the programmer
Hello World




http://nodejs.org/
Callback Hell




http://stackoverflow.com/questions/4234619/how-to-avoid-long-nesting-of-asynchronous-functions-in-node-js
Performance
JavaScript
JavaScript
 Most common programming language in the world
 Will only increase in popularity
 Dynamic, interpreted language
    Quick development turn-around
JavaScript from Nose to Tail

 jQuery - Node.js - CouchDB
 Single development language
 No translation between layers
 JavaScript Object is a JSON object is a JavaScript object
JavaScript: Not All Joy
 Ben Teese: JavaScript is a dog of a language.
 Interpreted: All errors occur at runtime
 Test, test, test
 Dynamic typing: Refactoring difficult
 Programming conventions not widely used
 No provisions for programming-in-the-large
Community

 Open, helpful, and welcoming
 Exploding ecosystem
 TJ Holowaychuk: “If I only had a dime for every Ruby
 library poorly ported to Node”
When Choose Node.js?
High concurrency
JavaScript from head to tail
Quick development turn-around
Keep in mind
   Asynchronous programming is a burden
   Define programming conventions early
   Stay in sync with Node.js versions
Questions?

 When is the coffee break?
References
 Node.js vs. PHP: http://www.synchrosinteractive.com/blog/9-nodejs/22-nodejs-has-a-bright-
 future

 Node.js vs. Python: http://blog.mixu.net/2011/01/17/performance-benchmarking-the-node-js-
 backend-of-our-48h-product-wehearvoices-net/

 Express vs. Sinatra: http://tjholowaychuk.com/post/543953703/express-vs-sinatra-benchmarks

 JavaScript from Nose to Tail: http://www.slideshare.net/cliffano/javascript-everywhere-from-nose-
 to-tail

More Related Content

What's hot (17)

PDF
Have we forgotten how to program? - Tunisian WebDev MeetUp
Bedis ElAchèche
 
PDF
Firefox os how large open source project works
Fred Lin
 
PDF
Introduction to Django
Fernando Espíndola
 
PDF
5 best practices for (web/ software) development (2010)
Erwin Elling
 
PPTX
JavaScript와 TypeScript의 으리 있는 만남
영욱 김
 
PDF
Webview: The fifth element
Fernando Cejas
 
PDF
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
MarcinStachniuk
 
PDF
Swt J Face 3/3
cho hyun jong
 
PPTX
BotCommons: Metadata for Bots - Devoxx 2017
Cisco DevNet
 
PDF
html5 & phonegap
Caesar Chi
 
PDF
2013 10-02-backbone-robots-aarhus
SC5.io
 
PDF
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
Baruch Sadogursky
 
PPTX
git commit -m "carreira"
Lucas Andrey
 
PDF
AMKSS Career Conference 2018: Software Engineering
Melvin Zhang
 
PDF
Patterns and antipatterns in Docker image lifecycle as was presented at Scale...
Baruch Sadogursky
 
PPT
Word Camp Kansai 2014 - MVC Framework
codebyjeff
 
PDF
Starters with Django
BeDjango
 
Have we forgotten how to program? - Tunisian WebDev MeetUp
Bedis ElAchèche
 
Firefox os how large open source project works
Fred Lin
 
Introduction to Django
Fernando Espíndola
 
5 best practices for (web/ software) development (2010)
Erwin Elling
 
JavaScript와 TypeScript의 으리 있는 만남
영욱 김
 
Webview: The fifth element
Fernando Cejas
 
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
MarcinStachniuk
 
Swt J Face 3/3
cho hyun jong
 
BotCommons: Metadata for Bots - Devoxx 2017
Cisco DevNet
 
html5 & phonegap
Caesar Chi
 
2013 10-02-backbone-robots-aarhus
SC5.io
 
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
Baruch Sadogursky
 
git commit -m "carreira"
Lucas Andrey
 
AMKSS Career Conference 2018: Software Engineering
Melvin Zhang
 
Patterns and antipatterns in Docker image lifecycle as was presented at Scale...
Baruch Sadogursky
 
Word Camp Kansai 2014 - MVC Framework
codebyjeff
 
Starters with Django
BeDjango
 

Similar to Joys and Pains of Node.js in the Enterprise (20)

PDF
JavaScript - The Universal Platform?
Jonas Bandi
 
PPTX
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 
PDF
Open source secret_sauce_apache_con_2010
Ted Husted
 
PDF
Rapidly Building and Deploying Scalable Web Architectures
Keith Fitzgerald
 
PDF
Apache Flex and the imperfect Web
masuland
 
PDF
Web Frameworks of the Future
elliando dias
 
PDF
Open Source Secret Sauce - Lugor Sep 2011
Ted Husted
 
PDF
Building Rich Applications with Appcelerator
Matt Raible
 
PDF
Morden F2E Education - Think of Progressive Web Apps
Caesar Chi
 
PDF
Don't screw it up! How to build durable API
Alessandro Cinelli (cirpo)
 
PDF
Open source-secret-sauce-rit-2010
Ted Husted
 
KEY
Active Web Development
Divya Manian
 
PDF
Getting started with developing Nodejs
Phil Hawksworth
 
PDF
JavaScript & Enterprise BED-Con 2014 Berlin German
Adam Boczek
 
PPTX
Advancing JavaScript without breaking the web - MunichJS
Christian Heilmann
 
PDF
[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...
DevDay Da Nang
 
PDF
Play Framework: Intro & High-Level Overview
Josh Padnick
 
PDF
Composer at Scale, Release and Dependency Management
Joe Ferguson
 
PDF
Progressing JavaScript and Apps the Web way…
Christian Heilmann
 
PPT
The future of server side JavaScript
Oleg Podsechin
 
JavaScript - The Universal Platform?
Jonas Bandi
 
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 
Open source secret_sauce_apache_con_2010
Ted Husted
 
Rapidly Building and Deploying Scalable Web Architectures
Keith Fitzgerald
 
Apache Flex and the imperfect Web
masuland
 
Web Frameworks of the Future
elliando dias
 
Open Source Secret Sauce - Lugor Sep 2011
Ted Husted
 
Building Rich Applications with Appcelerator
Matt Raible
 
Morden F2E Education - Think of Progressive Web Apps
Caesar Chi
 
Don't screw it up! How to build durable API
Alessandro Cinelli (cirpo)
 
Open source-secret-sauce-rit-2010
Ted Husted
 
Active Web Development
Divya Manian
 
Getting started with developing Nodejs
Phil Hawksworth
 
JavaScript & Enterprise BED-Con 2014 Berlin German
Adam Boczek
 
Advancing JavaScript without breaking the web - MunichJS
Christian Heilmann
 
[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...
DevDay Da Nang
 
Play Framework: Intro & High-Level Overview
Josh Padnick
 
Composer at Scale, Release and Dependency Management
Joe Ferguson
 
Progressing JavaScript and Apps the Web way…
Christian Heilmann
 
The future of server side JavaScript
Oleg Podsechin
 
Ad

Recently uploaded (20)

PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Ad

Joys and Pains of Node.js in the Enterprise

Editor's Notes

  • #2: \n
  • #3: \n
  • #4: \n
  • #5: \n
  • #6: \n
  • #7: \n
  • #8: \n
  • #9: Node.js started in 6/2009\nStarted to appear on radar 6/2010\nShine involved since 11/2010\n\n
  • #10: Enterprise as in Enterprise Java\nEnterprise: Big and important\nProjects with long life-cycle\nSeparate deployment team, test team\n
  • #11: \nCitySearch is an online city guide for all major Australian cities\nInformation on Restaurants, Bars&Clubs,Music,... \nRun by Sensis, a subsidiary of Telstra\nUsed to be Enterprise Java\nRuns on two clustered Node.js servers front-end and 2 clustered CouchDB servers back-end\n6 Million requests per month\n\n
  • #12: Alternative to multi-threading\nOne event loop for all requests\nJavaScript on the Server with a side of asynchronous evented I/O \n
  • #13: Constraints: Memory and CPU\nMinimum memory per thread in JVM 48K\n\n
  • #14: \n
  • #15: \n
  • #16: \n
  • #17: \n
  • #18: Early adopters\n\n
  • #19: Do we have high concurrency? What is high concurrency? C10K requests\nGoogle gets 3 billion per day, 34000 searches per second, 200ms \n= 6800 concurrent requests\n\nSynchronous Application programmer: Business logic\nAsynchronous: More burden on control flow\n\nOnce you start using asynchronous code, all your code will turn asynchronous\n\nGoogle = Java, C++, Python\nFacebook = Optimised PHP\neBay = Java\n\n
  • #20: Bare metal\n
  • #21: \n
  • #22: \n\n
  • #23: On par similar interpreted languages\nLinkedIn switched from Rails to Node.js for their mobile site and saw a huge performance increase\n\nPHP’s lack of performance didn’t hinder its rise to fame\n
  • #24: \n
  • #25: \n
  • #26: Marriage of HTML5/CSS/JavaScript\nFat client apps are coming\nFat-client HTML5/CSS/JavaScript is JQuery ^2: Sproutcore, Cappuchino\nGMail\nTwitter\nJavaScript is a mixed blessing!\nInterpreted\nAll errors occur at runtime\nTesting, testing, testing\nDynamic typing\nCode refactoring difficult\n\nJavaScript is a mixed blessing\n
  • #27: Node.js makes this possible!\nBackbone.js\nValidation logic\nJQuery - Node - CouchDB \nEven in the DB layer!\n\nJavaScript from Head to Tail is a win\n
  • #28: 60% test code vs. 40% application code; 10000 LOC application code 15000 LOC test code\n\nImagine upgrading the Node.js library\n
  • #29: Quick turn-around\nInterpreted: Short cycle between code changes \nDynamic typing: No need to bother with complex object model\nPattern language: Delegates, Facades, Service locators, \nSpeed-up JavaScript vs. Java: 1 day vs. 1 week\n\n
  • #30: Example: 15 000 LOC test code for 10 000 LOC application code\n\nNo programming patterns -> No programming standards\nModule system with imports\nPublic methods and interfaces \nClasses and Inheritance \nNo programming standards established\nModule naming, logging, file naming\nProgramming patterns\n\nAs team grows and project grows\n
  • #31: Node.js addresses these issues by retrofitting the language with these concepts (CommonJS for interface/ public methods, import) \nThis is ill-fitting at best\nModule system with imports\nPublic methods and interfaces \nClasses and Inheritance \nCoffee-Script\nNo programming standards established\nModule naming, logging, file naming\nProgramming patterns\n\n\n
  • #32: “I write Enterprise Software” is meant to sound like “I write big and important software”\nEnterprise Java world\nTedious\nEnterprise Architecture\n200 000 requests per day\n
  • #33: Easy to read, easy to use!\n
  • #34: \n
  • #35: \n
  • #36: \n
  • #37: How hard is it to find developers for this technology? New technology, but surprisingly not too complex. It is relatively easy to start developing\nWill they be around in 5 years? With the current Renaissance of JavaScript as a fat-client programming language - Quite possible; it is lacking a strong corporate sponsor; maybe Yahoo will do that\nHow hard is it to install Node.js, monitor Node.js , deploy applications to Node.js? Easy\nHow hard is it to convince operators to do that? Difficult\n\n\n
  • #38: How does Node.js programs scale?\nCan I write a lot lot code and still manage it? \nNo defined package structure\nModules are from CommonJS with public and private methods\nNo Interfaces\nNo Inheritance\nAsynchronous Programming\nSmall to medium projects best -> If the client logic is done in JavaScript, then there is not that much left to do in Node.js\n \n\n
  • #39: 200 000 requests per day\nPHP > Ruby > Python > Node.js \nJava EE\n\n
  • #40: 200 000 requests per day\n
  • #41: 200 000 requests per day\n
  • #42: 200 000 requests per day\n
  • #43: 200 000 requests per day\n
  • #44: 200 000 requests per day\n
  • #45: 200 000 requests per day\n
  • #46: Feel the excitement!\nYoung developers lack Enterprise experience\nGithub: Social Coding\n“Look Ma, I built a framework!”\nFramework\n* Experience\n* Responsibility\nCreator of some central Node.js frameworks\n \n
  • #47: Github\n
  • #48: \n
  • #49: \n
  • #50: Quick turn-around in development\n* Small team\n* Small code base\n
  • #51: \n
  • #52: \n