SlideShare a Scribd company logo
6000 Greenwood Plaza Blvd
                           Suite 110
                           Greenwood Village, CO 80111
                           303.798.5458

                           www.aspenware.com




Business
Considerations
for Node.js Applications

                           Michael Filbin
                           m.filbin@aspenware.com
Agenda…
•    Definitions
•    Introduction to Node.js
•    Problems it attempts to solve
•    Drawbacks and challenges to adoption
•    Use cases and case studies
•    Hello World example (if time)
•    Summary and conclusion




Business Considerations
for Node.js Applications
Who Am I?
       •     Consultant at Aspenware Internet Solutions Inc.
       •     Background in Open Source technologies
       •     Currently JavaScript engineer at Pearson
       •     Member of Linux and Free Software foundations
       •     Co-founder of Gogy Inc.




Business Considerations
for Node.js Applications
Who Are You?




Business Considerations
for Node.js Applications
Acknowledgements




Business Considerations
for Node.js Applications
Key Terms…
              •  API: A collection of publically exposed methods to
                 facilitate use of a library
              •  Asynchronous: The execution of a function and its
                 result are not mutually exclusive.
              •  JavaScript Runtime: Optimizes and executes
                 JavaScript code
              •  Language Binding: Uses of one programming language
                 to ‘wrap’ a library in another
              •  Callback: A reference to executable code that is passed
                 as an argument to a function.
              •  I/O Operations: Operations that involve reading/writing
                 data through some time of interface.
              •  Procedural Programming: Programs are expressed in
                 terms of steps (procedures) to be carried out
              •  Event-driven Programming: Execution of a program is
                 carried out in response to events.
              •  Blocking Process: A process that prevents the
                 continuation of execution until it returns.


Business Considerations         Brief Introduction to Node
for Node.js Applications
What Is Node?


Business Considerations
for Node.js Applications
What does Node do?
•  API for interacting with low-level system libraries
   asynchronously
•  Leverages features inherent in the JavaScript language
•  Intends to manage concurrency, latency, parallelism




  Business Considerations
  for Node.js Applications
Visualizing Latency
                                  300000000	
  

                                  250000000	
                                                           240000000	
  
        Processor	
  Cycles	
  




                                  200000000	
  

                                  150000000	
  

                                  100000000	
  
                                                                                         41000000	
  
                                   50000000	
  
                                                        3	
     14	
         250	
  
                                               0	
  
                                                                               1	
  
                                     L1	
  Cache	
                             3	
  
                                     L2	
  Cache	
                            14	
  
                                     RAM	
                                   250	
  
                                     Hard	
  Disk	
                      41000000	
  
                                     Network	
                           240000000	
  

Business Considerations
for Node.js Applications
Web Application Life Cycle?
                                           Route Request to Controller Action

                                   Respond to Request
                                                                           Make Database Query




                      Write to log file

                                    Operate on results
Business Considerations
for Node.js Applications
Traditional Scaling Model…
                        Route Request to Controller Action                                           Route Request to Controller Action                                           Route Request to Controller Action                                           Route Request to Controller Action                                           Route Request to Controller Action

               Respond to Request                                                          Respond to Request                                                           Respond to Request                                                            Respond to Request                                                          Respond to Request
                                                        Make Database Query                                                          Make Database Query                                                          Make Database Query                                                          Make Database Query                                                          Make Database Query




  Operate on results                                                          Operate on results                                                           Operate on results                                                            Operate on results                                                          Operate on results

                 Operate on results                                                          Operate on results                                                           Operate on results                                                            Operate on results                                                          Operate on results




                                Route Request to Controller Action                                           Route Request to Controller Action                                           Route Request to Controller Action                                           Route Request to Controller Action                                           Route Request to Controller Action

                       Respond to Request                                                          Respond to Request                                                           Respond to Request                                                            Respond to Request                                                          Respond to Request
                                                                Make Database Query                                                          Make Database Query                                                          Make Database Query                                                          Make Database Query                                                          Make Database Query




         Operate on results                                                           Operate on results                                                           Operate on results                                                           Operate on results                                                           Operate on results

                        Operate on results                                                           Operate on results                                                           Operate on results                                                           Operate on results                                                           Operate on results




                                Route Request to Controller Action                                          Route Request to Controller Action                                           Route Request to Controller Action                                            Route Request to Controller Action                                          Route Request to Controller Action

                       Respond to Request                                                          Respond to Request                                                           Respond to Request                                                            Respond to Request                                                          Respond to Request
                                                                Make Database Query                                                          Make Database Query                                                          Make Database Query                                                          Make Database Query                                                          Make Database Query




         Operate on results                                                           Operate on results                                                           Operate on results                                                           Operate on results                                                           Operate on results

                        Operate on results                                                           Operate on results                                                           Operate on results                                                           Operate on results                                                           Operate on results




Business Considerations
for Node.js Applications
Resource Limited Scaling

                                          Load	
  Balancer	
  



                            Web	
               App	
                       App	
  
                           Server	
            Server	
                    Server	
  




                             Search	
  
                                                            Database	
  
                             Engine	
  



Business Considerations
for Node.js Applications
Resource Limited Scaling




Business Considerations
for Node.js Applications
Node’s Execution Model
 •  Using an event loop
     •  Event occurs (emitted)
     •  Non-I/O operations return immediately
     •  I/O operations defer to libeio or libuv
     •  I/O interrupt received and callback is executed
     •  Data returned to client



        Event	
  1	
                                                                            libeio	
     FS	
  
        …	
                                                                                                  Network	
  
                                                                                                             Crypto	
  
        Event	
  N	
                                                                            libuv	
  




                         All	
  on	
  a	
  single	
  thread	
  on	
  a	
  single	
  processor	
  
RESTful Web Services
with Node.js
Event Loop Analogy




RESTful Web Services
with Node.js
Node Architecture…




                                                                       Async	
  DNS	
  
                           V8	
  RunLme	
  




                                                                                          OpenSSL	
  
                                                           libuv	
  
                                              libeio	
  




Business Considerations
for Node.js Applications
Scaling Node Applications:


                           Load	
  Balancer	
  /	
  Reverse	
  Proxy	
  



                                             App	
  
     Content	
  
                                            Server	
  
     Delivery	
  
     Network	
  
      (CDN)	
  
                           Search	
  
                                                         Database	
  
                           Engine	
  


Business Considerations
for Node.js Applications
Managing Node Dependencies
•  ‘Requiring’ external libraries is handled though the
   CommonJS module pattern.
•  3rd party libraries distributed though NPM package
   management tool
•  Packages can be installed globally or locally
•  Application dependencies can be expressed in a manifest
   file (package.json)




  Business Considerations
  for Node.js Applications
Including Dependencies




          <script type="text/javascript" src="scripts/myscript.js"></script>




Business Considerations
for Node.js Applications
Including Dependencies
                           // System-wide (global) libraries/modules
                           // Stored in /usr/local/lib/node_modules
                           var path = require('path');
                           var fileSystem = require('fileSystem')

                           // Local (project) libraries
                           // ./node_modules
                           var restify = require('restify');
                           var nconf = require('nconf');

                           // Including scripts from somewhere in
                           // the file system
                           var MyModel = require("./lib/models/
                           MyModel");



Business Considerations
for Node.js Applications
Use Cases for Node.js
•     Creating REST APIs (JSON APIs)
•     Creating chat servers or messaging clients
•     Single-page RIA
•     Data Streaming




     Business Considerations
     for Node.js Applications
Challenges to
Adoption

Business Considerations
for Node.js Applications
Evolving API
 •  (2012.01.06 – 24.10.2012): 46 Releases!
 •  Minor, even release number is stable
 •  Minor, odd release number is development




Business Considerations
for Node.js Applications
Windows Support
•  Was written originally for *NIX systems
•  Node core largely supports WIN, 3rd party libs… not so
   much
•  Build tools recently switched to better support WIN




  Business Considerations
  for Node.js Applications
Error Handling & Debugging
•  Asynchronous code breaks call stacks
•  For synchronous code, you must handle exceptions
   carefully (try/catch)
•  For asynchronous code, you must pass errors around to
   callbacks




  Business Considerations
  for Node.js Applications
Example:
outerFunction(arg1, arg2, function (callback){
     if(!arg1 || !arg2){
           return callback(new Error("Are you forgetting something?"));
     } else {
           return innerFunction(ar1, arg2, function (error, data){
                  if(error){
                        callback(error);
                  } else {
                        try{
                              var json = JSON.parse(data)
                              callback(null, json);
                        } catch(error){
                              callback(error);
                        }
                  }
           })
     }
});

Business Considerations
for Node.js Applications
Asynchronous Code is Complex
•  Deeply nested callbacks can become difficult to read &
   maintain




  Business Considerations
  for Node.js Applications
Single Threaded




Business Considerations
for Node.js Applications
Entire Stack Must Be Non-Blocking




Business Considerations
for Node.js Applications
Case Studies


Business Considerations
for Node.js Applications
Linkedin
•  Originally build on Rails Application Framework
•  Need to composite service calls for the client
•  Persistent socket connections
•  Much smaller code base (~50Kb when minified)
•  Reduce the amount of memory leak (from mongrel)
•  Benchmarked at 20X faster
•  Using 10% original resource (from 30 servers to just 3! &
   300MB or RAM to just over 30MB)
•  More Stable


     Business Considerations
     for Node.js Applications
Linkedin Mobile Architecture


                     iOS	
                  Android	
                    Mobile	
                  Client	
  
                                                                          Web	
                  Libraries	
  



                            Node.js	
  
                                                    Mobile	
  Server	
   MongoDB	
  Database	
  
                           ApplicaLon	
  



                  Bg.	
                                    Data	
                   Data	
         Other	
  
                                   Tracking	
  
                 Queue	
                                  Service	
                Service	
      Process	
  


Business Considerations                     Credit: Kirin Prasad, Linkedin Mobile Engineer
for Node.js Applications
Yammer
•  Similar use case as LinkedIn (cross-domain proxy)
•  JSON Out/JSON In




  Business Considerations
  for Node.js Applications
Resources:
       •  Concurrent Programming for Scalable Web Architectures, Benjamine Erb.
          http://berb.github.com/diploma-thesis/community/042_serverarch.html
       •  Benchmark Comparisons:
          http://shootout.alioth.debian.org/u64/benchmark.php?
          test=all&lang=nodejs&lang2=fsharp




Business Considerations
for Node.js Applications
Conclusion


Business Considerations
for Node.js Applications
Summation
       •  Node.js leverages an evented programming model
          to handle concurrency and availability
       •  Because Node does not rely on threads/processes to
          scale, it can use considerably fewer resources
       •  Fewer resources means lower cost
       •  More concurrent users means greater revenue
          potential
       •  Because node support the real-time web, you can
          improve your user’s experience


Business Considerations
for Node.js Applications
6000 Greenwood Plaza Blvd
                                                            Suite 110
                                                            Greenwood Village, CO 80111
                                                            303.798.5458

                                                            www.aspenware.com




Michael
Filbin
Michael Filbin, Software Developer m.filbin@aspenware.com

More Related Content

KEY
7장 Oracle As Datasource
PDF
Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...
PDF
Eight subsequent steps diverging a flow chart cycle power point templates
PDF
7 converging and diverging factors process flow charts networks power point t...
PDF
Tdd ec-agile2012
PDF
Diverging seven arrows explaining concepts diagram software power point slides
PDF
Business process design powerpoint presentation slides ppt templates
PDF
NodeJS for Beginner
7장 Oracle As Datasource
Squire: A polyglot application combining Neo4j, MongoDB, Ruby and Scala @ FOS...
Eight subsequent steps diverging a flow chart cycle power point templates
7 converging and diverging factors process flow charts networks power point t...
Tdd ec-agile2012
Diverging seven arrows explaining concepts diagram software power point slides
Business process design powerpoint presentation slides ppt templates
NodeJS for Beginner

Viewers also liked (11)

PDF
Intro to node.js web apps
PPTX
Intro To Mongo Db
PDF
Intro to node.js
PDF
Entities on Node.JS
PPTX
NodeJS - Server Side JS
KEY
Getting Started with MongoDB and Node.js
PPTX
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
PPTX
MongoDB-Beginner tutorial explaining basic operation via mongo shell
PDF
Intro To MongoDB
PPT
Introduction to MongoDB
Intro to node.js web apps
Intro To Mongo Db
Intro to node.js
Entities on Node.JS
NodeJS - Server Side JS
Getting Started with MongoDB and Node.js
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
MongoDB-Beginner tutorial explaining basic operation via mongo shell
Intro To MongoDB
Introduction to MongoDB
Ad

Similar to Business considerations for node.js applications (20)

KEY
A Service-Based Architecture for Multi-domain Search on the Web
PDF
A Behind the Scenes Look at the Force.com Platform
PDF
Oracle Application Management Suite
PDF
All Aboard the Databus
PDF
Composite Applications with SOA, BPEL and Java EE
PDF
API Strategy Austin - App-centric vs Job-centric Microservices
PPTX
Sps bris - Customising Office 365 on the Client side
PPTX
SharePoint 2010 Online for Developer
PDF
Introducing spring
PDF
Bottlenecks exposed web app db servers
PDF
Alfresco Day Madrid - Jeff Potts - Activiti
PDF
Alfresco day madrid jeff potts - activiti
PDF
Flash Camp Chennai - Social network with ORM
PDF
Connected Applications using WF and WCF
PPTX
Windows azure uk universities overview march 2012
PPTX
[.Net Juniors Academy] Introdução ao Cloud Computing e Windows Azure Platform
PDF
Open Cloud Interop Public
PPT
Real-world Entity Framework
PPTX
Play with cloud foundry
PPT
Session 49 Practical Semantic Sticky Note
A Service-Based Architecture for Multi-domain Search on the Web
A Behind the Scenes Look at the Force.com Platform
Oracle Application Management Suite
All Aboard the Databus
Composite Applications with SOA, BPEL and Java EE
API Strategy Austin - App-centric vs Job-centric Microservices
Sps bris - Customising Office 365 on the Client side
SharePoint 2010 Online for Developer
Introducing spring
Bottlenecks exposed web app db servers
Alfresco Day Madrid - Jeff Potts - Activiti
Alfresco day madrid jeff potts - activiti
Flash Camp Chennai - Social network with ORM
Connected Applications using WF and WCF
Windows azure uk universities overview march 2012
[.Net Juniors Academy] Introdução ao Cloud Computing e Windows Azure Platform
Open Cloud Interop Public
Real-world Entity Framework
Play with cloud foundry
Session 49 Practical Semantic Sticky Note
Ad

More from Aspenware (20)

PPTX
Playing nice with the MEAN stack
PDF
Stop competing and start leading: A user experience case study.
PPTX
Tips for building fast multi touch enabled web sites
PPTX
Build once deploy everywhere using the telerik platform
PPTX
Building web applications using kendo ui and the mvvm pattern
PDF
Rich Web Applications with Aspenware
PDF
Taking the Share out of Sharepoint: SharePoint Application Security.
PPTX
Implementing Scrum with Microsoft Team Foundation Service (TFS)
PPTX
Implementing Scrum with Microsoft Team Foundation Service (TFS)
PDF
Building a Windows Store App for SharePoint 2013
PDF
Aspenware TechMunch presents: mobile communities of interest
PDF
Hate JavaScript? Try TypeScript.
PDF
Understanding Game Mechanics
PDF
What people are saying about working with Aspenware.
PPTX
Aspenware Customer Labs lift line experience
PDF
Aspenware 2013 consulting program
PPTX
On Culture and Perks
PDF
Maintaining Culture and Staying True to Your Values in Times of Change: Tye E...
PPTX
Fast multi touch enabled web sites
PPTX
Restful web services with nodejs
Playing nice with the MEAN stack
Stop competing and start leading: A user experience case study.
Tips for building fast multi touch enabled web sites
Build once deploy everywhere using the telerik platform
Building web applications using kendo ui and the mvvm pattern
Rich Web Applications with Aspenware
Taking the Share out of Sharepoint: SharePoint Application Security.
Implementing Scrum with Microsoft Team Foundation Service (TFS)
Implementing Scrum with Microsoft Team Foundation Service (TFS)
Building a Windows Store App for SharePoint 2013
Aspenware TechMunch presents: mobile communities of interest
Hate JavaScript? Try TypeScript.
Understanding Game Mechanics
What people are saying about working with Aspenware.
Aspenware Customer Labs lift line experience
Aspenware 2013 consulting program
On Culture and Perks
Maintaining Culture and Staying True to Your Values in Times of Change: Tye E...
Fast multi touch enabled web sites
Restful web services with nodejs

Recently uploaded (20)

PDF
cuic standard and advanced reporting.pdf
PPTX
Cloud computing and distributed systems.
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Spectroscopy.pptx food analysis technology
PDF
Machine learning based COVID-19 study performance prediction
PPT
Teaching material agriculture food technology
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
cuic standard and advanced reporting.pdf
Cloud computing and distributed systems.
Building Integrated photovoltaic BIPV_UPV.pdf
A comparative analysis of optical character recognition models for extracting...
20250228 LYD VKU AI Blended-Learning.pptx
Big Data Technologies - Introduction.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
NewMind AI Weekly Chronicles - August'25-Week II
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Review of recent advances in non-invasive hemoglobin estimation
The Rise and Fall of 3GPP – Time for a Sabbatical?
The AUB Centre for AI in Media Proposal.docx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Advanced methodologies resolving dimensionality complications for autism neur...
Spectroscopy.pptx food analysis technology
Machine learning based COVID-19 study performance prediction
Teaching material agriculture food technology
MIND Revenue Release Quarter 2 2025 Press Release
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton

Business considerations for node.js applications

  • 1. 6000 Greenwood Plaza Blvd Suite 110 Greenwood Village, CO 80111 303.798.5458 www.aspenware.com Business Considerations for Node.js Applications Michael Filbin m.filbin@aspenware.com
  • 2. Agenda… •  Definitions •  Introduction to Node.js •  Problems it attempts to solve •  Drawbacks and challenges to adoption •  Use cases and case studies •  Hello World example (if time) •  Summary and conclusion Business Considerations for Node.js Applications
  • 3. Who Am I? •  Consultant at Aspenware Internet Solutions Inc. •  Background in Open Source technologies •  Currently JavaScript engineer at Pearson •  Member of Linux and Free Software foundations •  Co-founder of Gogy Inc. Business Considerations for Node.js Applications
  • 4. Who Are You? Business Considerations for Node.js Applications
  • 6. Key Terms… •  API: A collection of publically exposed methods to facilitate use of a library •  Asynchronous: The execution of a function and its result are not mutually exclusive. •  JavaScript Runtime: Optimizes and executes JavaScript code •  Language Binding: Uses of one programming language to ‘wrap’ a library in another •  Callback: A reference to executable code that is passed as an argument to a function. •  I/O Operations: Operations that involve reading/writing data through some time of interface. •  Procedural Programming: Programs are expressed in terms of steps (procedures) to be carried out •  Event-driven Programming: Execution of a program is carried out in response to events. •  Blocking Process: A process that prevents the continuation of execution until it returns. Business Considerations Brief Introduction to Node for Node.js Applications
  • 7. What Is Node? Business Considerations for Node.js Applications
  • 8. What does Node do? •  API for interacting with low-level system libraries asynchronously •  Leverages features inherent in the JavaScript language •  Intends to manage concurrency, latency, parallelism Business Considerations for Node.js Applications
  • 9. Visualizing Latency 300000000   250000000   240000000   Processor  Cycles   200000000   150000000   100000000   41000000   50000000   3   14   250   0   1   L1  Cache   3   L2  Cache   14   RAM   250   Hard  Disk   41000000   Network   240000000   Business Considerations for Node.js Applications
  • 10. Web Application Life Cycle? Route Request to Controller Action Respond to Request Make Database Query Write to log file Operate on results Business Considerations for Node.js Applications
  • 11. Traditional Scaling Model… Route Request to Controller Action Route Request to Controller Action Route Request to Controller Action Route Request to Controller Action Route Request to Controller Action Respond to Request Respond to Request Respond to Request Respond to Request Respond to Request Make Database Query Make Database Query Make Database Query Make Database Query Make Database Query Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Route Request to Controller Action Route Request to Controller Action Route Request to Controller Action Route Request to Controller Action Route Request to Controller Action Respond to Request Respond to Request Respond to Request Respond to Request Respond to Request Make Database Query Make Database Query Make Database Query Make Database Query Make Database Query Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Route Request to Controller Action Route Request to Controller Action Route Request to Controller Action Route Request to Controller Action Route Request to Controller Action Respond to Request Respond to Request Respond to Request Respond to Request Respond to Request Make Database Query Make Database Query Make Database Query Make Database Query Make Database Query Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Operate on results Business Considerations for Node.js Applications
  • 12. Resource Limited Scaling Load  Balancer   Web   App   App   Server   Server   Server   Search   Database   Engine   Business Considerations for Node.js Applications
  • 13. Resource Limited Scaling Business Considerations for Node.js Applications
  • 14. Node’s Execution Model •  Using an event loop •  Event occurs (emitted) •  Non-I/O operations return immediately •  I/O operations defer to libeio or libuv •  I/O interrupt received and callback is executed •  Data returned to client Event  1   libeio   FS   …   Network   Crypto   Event  N   libuv   All  on  a  single  thread  on  a  single  processor   RESTful Web Services with Node.js
  • 15. Event Loop Analogy RESTful Web Services with Node.js
  • 16. Node Architecture… Async  DNS   V8  RunLme   OpenSSL   libuv   libeio   Business Considerations for Node.js Applications
  • 17. Scaling Node Applications: Load  Balancer  /  Reverse  Proxy   App   Content   Server   Delivery   Network   (CDN)   Search   Database   Engine   Business Considerations for Node.js Applications
  • 18. Managing Node Dependencies •  ‘Requiring’ external libraries is handled though the CommonJS module pattern. •  3rd party libraries distributed though NPM package management tool •  Packages can be installed globally or locally •  Application dependencies can be expressed in a manifest file (package.json) Business Considerations for Node.js Applications
  • 19. Including Dependencies <script type="text/javascript" src="scripts/myscript.js"></script> Business Considerations for Node.js Applications
  • 20. Including Dependencies // System-wide (global) libraries/modules // Stored in /usr/local/lib/node_modules var path = require('path'); var fileSystem = require('fileSystem') // Local (project) libraries // ./node_modules var restify = require('restify'); var nconf = require('nconf'); // Including scripts from somewhere in // the file system var MyModel = require("./lib/models/ MyModel"); Business Considerations for Node.js Applications
  • 21. Use Cases for Node.js •  Creating REST APIs (JSON APIs) •  Creating chat servers or messaging clients •  Single-page RIA •  Data Streaming Business Considerations for Node.js Applications
  • 23. Evolving API •  (2012.01.06 – 24.10.2012): 46 Releases! •  Minor, even release number is stable •  Minor, odd release number is development Business Considerations for Node.js Applications
  • 24. Windows Support •  Was written originally for *NIX systems •  Node core largely supports WIN, 3rd party libs… not so much •  Build tools recently switched to better support WIN Business Considerations for Node.js Applications
  • 25. Error Handling & Debugging •  Asynchronous code breaks call stacks •  For synchronous code, you must handle exceptions carefully (try/catch) •  For asynchronous code, you must pass errors around to callbacks Business Considerations for Node.js Applications
  • 26. Example: outerFunction(arg1, arg2, function (callback){ if(!arg1 || !arg2){ return callback(new Error("Are you forgetting something?")); } else { return innerFunction(ar1, arg2, function (error, data){ if(error){ callback(error); } else { try{ var json = JSON.parse(data) callback(null, json); } catch(error){ callback(error); } } }) } }); Business Considerations for Node.js Applications
  • 27. Asynchronous Code is Complex •  Deeply nested callbacks can become difficult to read & maintain Business Considerations for Node.js Applications
  • 29. Entire Stack Must Be Non-Blocking Business Considerations for Node.js Applications
  • 31. Linkedin •  Originally build on Rails Application Framework •  Need to composite service calls for the client •  Persistent socket connections •  Much smaller code base (~50Kb when minified) •  Reduce the amount of memory leak (from mongrel) •  Benchmarked at 20X faster •  Using 10% original resource (from 30 servers to just 3! & 300MB or RAM to just over 30MB) •  More Stable Business Considerations for Node.js Applications
  • 32. Linkedin Mobile Architecture iOS   Android   Mobile   Client   Web   Libraries   Node.js   Mobile  Server   MongoDB  Database   ApplicaLon   Bg.   Data   Data   Other   Tracking   Queue   Service   Service   Process   Business Considerations Credit: Kirin Prasad, Linkedin Mobile Engineer for Node.js Applications
  • 33. Yammer •  Similar use case as LinkedIn (cross-domain proxy) •  JSON Out/JSON In Business Considerations for Node.js Applications
  • 34. Resources: •  Concurrent Programming for Scalable Web Architectures, Benjamine Erb. http://berb.github.com/diploma-thesis/community/042_serverarch.html •  Benchmark Comparisons: http://shootout.alioth.debian.org/u64/benchmark.php? test=all&lang=nodejs&lang2=fsharp Business Considerations for Node.js Applications
  • 36. Summation •  Node.js leverages an evented programming model to handle concurrency and availability •  Because Node does not rely on threads/processes to scale, it can use considerably fewer resources •  Fewer resources means lower cost •  More concurrent users means greater revenue potential •  Because node support the real-time web, you can improve your user’s experience Business Considerations for Node.js Applications
  • 37. 6000 Greenwood Plaza Blvd Suite 110 Greenwood Village, CO 80111 303.798.5458 www.aspenware.com Michael Filbin Michael Filbin, Software Developer m.filbin@aspenware.com