SlideShare a Scribd company logo
Node.js Ask Us Anything
1 3/17/2017#DevoxxUS
Agenda
 Introductions
–Who we are
–Audience
 Common Questions
 Q/A
2 3/17/2017
About Michael Dawson
Loves the web and building software (with Node.js!)
Senior Software Developer @ IBM
IBM Runtime Technologies Node.js Technical Lead
Node.js collaborator and CTC member
Active in LTS, build, benchmarking , api
and post-mortem working groups
Contact me:
michael_dawson@ca.ibm.com
Twitter: @mhdawson1
https://www.linkedin.com/in/michael-dawson-6051282
3 3/17/2017
About Sam Roberts
Senior Software Developer @ IBM
Likes doing network and system programming in dynamic
languages. Node.js collaborator, active in security, docs,
clustering, monitoring.
Contact me:
Email: rsam@ca.ibm.com
Github: @sam-github
Twitter: @octetcloud
4 3/17/2017
About the Audience
 Have you written anything in Node.js?
 Have you pushed a module to npm?
 Are you running Node.js in production?
 Is it outward facing?
 Is your company planning to use Node.js?
5 3/17/2017
Common Questions – What/Why
 WW1 - What is Node.js
 WW2 - Why are people interested
 WW3 - What are the key components
 WW4 - What platforms are supported
 WW5 - What are the common use cases
 WW6 - When should I use Node.js versus Java
6 3/17/2017
WW1 - Why Node.js – What is it ?
 JavaScript != Java
 Node.js = Server-side JavaScript
 Event-oriented
 Non-blocking
 Asynchronous
7 3/17/2017
http://www.modulecounts.com/
WW2 - Why Node.js ? - Ecosystem
• There is a module for that
• 404k+ modules
• #1 on module counts
• 3x growth rate versus other runtimes
• #1 on Github (#projects)
• #1 on StackOverflow(2015)
8 3/17/2017
WW2 - Why Node.js ? - Productivity
 Faster development less code
 PayPal - https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
 Took 1/2 time with less people
 33% fewer lines of code
 NextFlix- http://www.infoworld.com/article/2610110/javascript/paypal-and-netflix-cozy-
up-to-node-js.html
9 3/17/2017
WW2 - Why Node.js ? – Productivity
 Reuse of “isomorphic” code components
 Availability of JavaScript talent
 Developer satisfaction
10 3/17/2017
WW2 - Why Node.js ? = Productivity
11 3/17/2017
WW2 - Why Node.js ? - Performance
Event based: perfect fit for asynchronous non-blocking I/0
12 3/17/2017
WW2 - Why Node.js ? - Performance
Best suited for asynchronous workloads
-80
-60
-40
-20
0
20
40
-75 -60.5 -18
28
JSON Serialization
Single Query
Multiple Queries
Data Updates
%ageofJavaPerformance
More
Computation
More
I/O
13 3/17/2017
 Thousands of concurrent connections
 PayPal - https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
 Double number of requests/sec
 Response times 35% lower
 Groupon – http://www.nearform.com/nodecrunch/node-js-becoming-go-technology-enterprise/
 Reduced page load times by 50%
WW2 - Why Node.js ? - Performance
14 3/17/2017
WW2 - Why Node.js – Compact/Fast
 Small (linux.tar.xz)
 Download 8.2MB
 Uncompressed 35.5 MB
 Fast startup
 40 ms
 Small footprint
 16.5 MB
https://nodejs.org/en/download/
https://benchmarking.nodejs.org/
15 3/17/2017
WW3 - Key Components
V8 – Javascript
Engine
V8
JavaScript Engine Libuv
Other
Dependencies
ICU
Cares
Zlib
http_parser
…
Node Binding Layer
Operating System
Node Libraries
Modules (npm or local) + Application
OpenSSL
16 3/17/2017
WW4 – Platform Support
 Linux on x / p / z/arm, AIX,
Windows, Mac, SmartOS
 IBM working on support for z/OS
 IBM Actively supports
17 3/17/2017
WW5 - Use Cases
 Back-end API services
 Service oriented architectures (SOA)
 Microservice-based applications
 Generating/serving dynamic web page content
 SPA applications with bidirectional
communication over WebSockets and/or HTTP/2
 Agents and data collectors
 Small scripts
https://github.com/nodejs/benchmarking/blob/master/docs/use_cases.md
18 3/17/2017
WW6 - Node.js versus Java
 Strengths and weaknesses
 Choosing the right language
19 3/17/2017
WW6 - Node.js versus Java – Scaling with Java
 One thread (or process) per connection
 Each thread waits on a response
 Scalability determined by number of threads
 Each thread:
 Consumes memory
 Is relatively idle
 Concurrency determined by number of
depot workers
20 3/17/2017
WW6 - Node.js versus Java – Scaling with Node.js
 One thread multiplexes for multiple requests
 No waiting for a response
 Handles return from I/O when notified
 Scalability determined by:
 CPU Usage
 “Back end” responsiveness
 Concurrency determined by how fast the
food server can work
21 3/17/2017
WW6 - Node.js versus Node.js – Tradeoff
-80
-60
-40
-20
0
20
40
-75 -60.5 -18
28
JSON Serialization
Single Query
Multiple Queries
Data Updates
%ageofJavaPerformance
More
Computation
More
I/O
22 3/17/2017
WW6 - Node.js versus Java – Choosing the Right Language
 Higher performance for I/O
 Easier async programming
 Fullstack/isomorphic development
23 3/17/2017
WW6 - Node.js versus Java – Choosing the Right Language
 Higher processing performance
 Type safety for calculations
 Rich processing frameworks
24 3/17/2017
WW6 - Node.js versus Java – Choosing the Right Language
 Highly performant, scalable rich web applications
 Highly performant, reliable transaction processing
 Self-contained micro-service components
+
25 3/17/2017
Common Questions – Project Organization
 PO1 - What does the leadership for the project look like
and how is the direction set
 PO2 - What is the Node.js foundation and how does it
interact with the technical work
 PO3 – What is the history of Node.js
 PO4 - What is semver and how does the Node.js project
use it
 PO5 - What are LTS releases
 PO6 - What version of Node.js should I use
26 3/17/2017
Common Questions – Project Organization
 PO7 - How does the project operate day to day
 PO8 - What does the community do in order to ensure
good quality
 PO9 - How do I get started in contributing to the Node.js
project
 PO10 - What are Node.js working groups, and how do I
get involved
27 3/17/2017
PO1 - Leadership
 Board
 TSC
 CTC
 WGs
 Teams
28 3/17/2017
PO2 - Node.js Community - Foundation
 Mission:
 Corporate members
 8 platinum(including IBM), 1 Gold, 19 Silver (Needs update)
 Individual members
https://nodejs.org/en/foundation/
The Node.js Foundation's mission is to enable widespread adoption and help accelerate
development of Node.js and other related modules through an open governance model that
encourages participation, technical contribution, and a framework for long term stewardship
by an ecosystem invested in Node.js' success.
29 3/17/2017
PO3 - Node.js Community - History
 2009 – written by Ryan Dhal
 Jan 2010 - npm
 Sep 2010 – Joyent sponsors Node.js
 June 2011 – Windows support
 2012 – 2014 – Hand over to Isaac Schlueter, then Timothy J. Fontaine
 December 2014 – io.js fork
 June 2015 – Node.js Foundation
 Oct 2015 – Node.js 4.x unites io.js/node.js 0.12.x lines
 Oct 2016 – Node.js 6.x
30 3/17/2017
PO4 - Semver
X.Y.Z:
 X – Major: backwards incompatible changes
 Y – Minor: additive, new features
 Z – Patch: no API changes or new features
31 3/17/2017
PO5 - Node.js Long Term Support (LTS)
https://github.com/nodejs/lts
 Current Release
 every 6 months
 Semver major
 LTS release every
October
 Even semver majors
 30 months of support
32 3/17/2017
PO6 – Versions
 Most stable – LTS
 Latest gives you longest runway
 Plan to upgrade at least 6 months in advance
 Changes already validated in Current
 Current – Live closer to the edge
 Most up to date fully tested release
 More rapid pace of chance, less settling time
 Nightly
 Experiment with new features in master
33 3/17/2017
PO7 - Node.js Community – Day to Day
 TSC - Technical Steering Committee
 CTC - Core technical Committee
 Collaborators (~76)
 Working Groups (Build, LTS, Benchmarking, API etc.)
 Teams
https://github.com/nodejs/TSC/
https://github.com/nodejs/node/
https://github.com/nodejs/node/blob/master/WORKING_GROUPS.md
https://github.com/orgs/nodejs/teams
34 3/17/2017
PO8 – Quality with Speed?
35 3/17/2017
 Different release types
 Change flow processes
 Enhancement Proposal process
 Automation and Testing
 Functional Tests
 Module Testing
 Stress Testing (Future)
 Platform/OS coverage (Future)
 Development Workflows (Future)
 Performance Benchmarks
 Tools
PO9 – I want to contribute, where to start ?
36 3/17/2017
 Node Todo: http://nodetodo.org/
 http://coverage.nodej.org
 Issues
 Follow/comment on issues
 “Good first contribution tag”
 Find issue related to your interest
 Tests/doc, lots to do here
 Working Groups
 build, LTS, testing, benchmarking, post-mortem, translation,
…. find one that interests you!
Common Questions – Production Concerns
 PC1 - What are some of the common use cases
 PC2 - How does a company typically start using Node.js
 PC3 - How do I monitor applications
 PC4 - What kinds of tools do I need for a production app
 PC5 - What about web frameworks
 PC6 - How/where do I run my Node.js applications
37 3/17/2017
PC1 – Common Use Cases
 Back-end API services
 Service oriented architectures (SOA)
 Microservice-based applications
 Generating/serving dynamic web page content
 SPA applications with bidirectional
communication over WebSockets and/or HTTP/2
 Agents and data collectors
 Small scripts
https://github.com/nodejs/benchmarking/blob/master/docs/use_cases.md
38 3/17/2017
PC2 - How does a company start using Node.js
 Starts using it internally for non-critical
 Expands to more critical but still internal uses
 After success and experience, uses it externally
39 3/17/2017
PC3 - How do I monitor applications?
 Aggregate logs: Splunk, Loggly, Syslog, …
 Graph your metrics: ELK, statsd/graphite, appmetrics
 Consider higher level tools: Newrelic, Appdynamics,
IBM BAM/APM,…
40 3/17/2017
PC4 – Tools for production app ?
 heapdump (appmetrics has it pre-compiled)
–dumps can be analyzed with Chrome Dev Tools
–https://strongloop.com/strongblog/how-to-heap-snapshots/
 node-report – human readable first failure information
 core dump on uncaught exception
–core files can be analyzed with llnode
41 3/17/2017
PC5 – What about web frameworks
 Pick one!
 express: bare bones, build it yourself, good way to tinker
 hapi, restify, koa, sails, loopback: when you want more
42 3/17/2017
PC6 – Where to run my applications
 And other clouds of course …
 Node is always one of the top tier
languages
 And works great on premise if that’s
still your thing
–Your choice of hardware due to
broad platform support
43 3/17/2017
Common Questions – Technical
 T1 - Whats this event loop thing
 T2 - How should I use semver and manage project
dependencies
 T3 - What is the Node.js programming model
 T4 - How do you integrate with Native code
 T5 - Why do I have to recompile my native modules for
major versions
 T6 - Tools to deal with asynchrony
 T7 - Common tools (beside npm, git)
44 3/17/2017
T1 – Event Loop
45 3/17/2017
46 3/17/2017
T2 – Managing dependencies
- Use “loose” dependency specifications
- Freeze packages at deploy time,
https://strongloop.com/strongblog/node-js-deploy-
production-best-practice
- Keep up to date!
T3– Programming Model
 Dynamic
 Functional
 Asynchronous
 Event Based
47 3/17/2017
var http = require('http');
var server = http.createServer();
server.listen(8080);
server.on('request', function(request, response) {
response.writeHead(200, {"Content-Type":
"text/plain"});
response.write("Hello World!n");
response.end();
});
server.on('connection', function(socket) {});
server.on('close', function() {});
server.on('connect', function(socket) {});
server.on('upgrade', function(request, socket, head) {});
server.on('clientError', function(exception, socket) {});
 Event Based
T3– Programming Model
48 3/17/2017
T4– Native Code
#include <node.h>
void nativeMethod(const FunctionCallbackInfo<Value> & args) {
Isolate* is = args.GetIsolate();
args.GetReturnValue().Set(String::NewFromUtf8(is, “Hi from native”));
}
void init(Local<Object> exports) {
NODE_SET_METHOD(exports, “callNative”, nativeMethod);
}
NODE_MODULE(nativeModule, init);
https://nodejs.org/api/addons.html
49 3/17/2017
T4– Native Code
https://nodejs.org/api/addons.html
const nativeModule = require(‘./build/Release/nativeModule’);
console.log(nativeModule.callNative());
50 3/17/2017
T5 – Why do I have to recompile for each release
51 3/17/2017
 Direct use of V8
 Fast pace of change
 Nan, helps but recompile still needed …
 ABI stable module API effort
 https://github.com/nodejs/abi-stable-node
 https://developer.ibm.com/node/2017/03/07/node-js-
vm-summit-moving-forward-with-n-api/
T6 - Tools to deal with asynchrony
52 3/17/2017
 promises (use bluebird): pros/cons
 callback-based (use async): pros/cons
 Read blogs! Lots of traps for beginners
(especially with promises).
53 3/17/2017
 Lodash
 Eslint
 Package scripts
 Chrome Dev Tools
T7 – Common tools (other than npm, git)
Common Questions – Security
 SEC1 – What tools should I be using
 SEC2 – What Node.js version should I use
 SEC3 – What should I be watching for updates
 SEC4 – What’s the nsp contribution to the Foundation
54 3/17/2017
SEC1 – What tools should I be using
 snyk
 nsp
 https://groups.google.com/group/nodejs-sec
 Not strictly security, but
– eslint
– coverity
55 3/17/2017
SEC2 – What Node.js version should I use
 6.x! It’s the best so far:
 https://blog.wikimedia.org/2017/02/17/node-6-
wikimedia/
56 3/17/2017
SEC3 – What should I be watching for updates
 Watch https://nodejs.org/en/blog/ to keep up to date.
57 3/17/2017
Copyrights and Trademarks
© IBM Corporation 2017. All Rights Reserved
IBM, the IBM logo, ibm.com are trademarks or registered
trademarks of International Business Machines Corp.,
registered in many jurisdictions worldwide. Other product and
service names might be trademarks of IBM or other companies.
A current list of IBM trademarks is available on the Web at
“Copyright and trademark information” at
www.ibm.com/legal/copytrade.shtml
Node.js is an official trademark of Joyent. IBM SDK for Node.js is not formally
related to or endorsed by the official Joyent Node.js open source or
commercial project.
Java, JavaScript and all Java-based trademarks and logos are trademarks or
registered trademarks of Oracle and/or its affiliates.
npm is a trademark of npm, Inc.
58 3/17/2017
Ad

More Related Content

Viewers also liked (8)

Node JS Express: Steps to Create Restful Web App
Node JS Express: Steps to Create Restful Web AppNode JS Express: Steps to Create Restful Web App
Node JS Express: Steps to Create Restful Web App
Edureka!
 
Mengembangkan Solusi Cloud dengan PaaS
Mengembangkan Solusi Cloud dengan PaaSMengembangkan Solusi Cloud dengan PaaS
Mengembangkan Solusi Cloud dengan PaaS
The World Bank
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
Colin Mackay
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
Ganesh Kondal
 
Node js
Node jsNode js
Node js
Rohan Chandane
 
All aboard the NodeJS Express
All aboard the NodeJS ExpressAll aboard the NodeJS Express
All aboard the NodeJS Express
David Boyer
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
Akshay Mathur
 
Modern UI Development With Node.js
Modern UI Development With Node.jsModern UI Development With Node.js
Modern UI Development With Node.js
Ryan Anklam
 
Node JS Express: Steps to Create Restful Web App
Node JS Express: Steps to Create Restful Web AppNode JS Express: Steps to Create Restful Web App
Node JS Express: Steps to Create Restful Web App
Edureka!
 
Mengembangkan Solusi Cloud dengan PaaS
Mengembangkan Solusi Cloud dengan PaaSMengembangkan Solusi Cloud dengan PaaS
Mengembangkan Solusi Cloud dengan PaaS
The World Bank
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
Colin Mackay
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
Ganesh Kondal
 
All aboard the NodeJS Express
All aboard the NodeJS ExpressAll aboard the NodeJS Express
All aboard the NodeJS Express
David Boyer
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
Akshay Mathur
 
Modern UI Development With Node.js
Modern UI Development With Node.jsModern UI Development With Node.js
Modern UI Development With Node.js
Ryan Anklam
 

Similar to Node.js – ask us anything! (20)

InterConnect 2017 : Programming languages in the enterprise: Which language s...
InterConnect 2017 : Programming languages in the enterprise: Which language s...InterConnect 2017 : Programming languages in the enterprise: Which language s...
InterConnect 2017 : Programming languages in the enterprise: Which language s...
DevOps for Enterprise Systems
 
Why Choose Node.js For Your Next Web Development Project?
Why Choose Node.js For Your Next Web Development Project?Why Choose Node.js For Your Next Web Development Project?
Why Choose Node.js For Your Next Web Development Project?
WeblineIndia
 
12 Reasons to Choose NodeJS for Product Development.pdf
12 Reasons to Choose NodeJS for Product Development.pdf12 Reasons to Choose NodeJS for Product Development.pdf
12 Reasons to Choose NodeJS for Product Development.pdf
WDP Technologies
 
Node.js vs Python_ Choosing the Right Back-end Technology for Your Next Proje...
Node.js vs Python_ Choosing the Right Back-end Technology for Your Next Proje...Node.js vs Python_ Choosing the Right Back-end Technology for Your Next Proje...
Node.js vs Python_ Choosing the Right Back-end Technology for Your Next Proje...
mohitd6
 
Node.js Web Development SEO Expert Bangladesh LTD.pdf
Node.js Web Development  SEO Expert Bangladesh LTD.pdfNode.js Web Development  SEO Expert Bangladesh LTD.pdf
Node.js Web Development SEO Expert Bangladesh LTD.pdf
Tasnim Jahan
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
Sascha Sambale
 
All You Need to Know About Using Node.pdf
All You Need to Know About Using Node.pdfAll You Need to Know About Using Node.pdf
All You Need to Know About Using Node.pdf
iDataScientists
 
Top Reasons to Use Node.JS Development for Your Next Project
Top Reasons to Use Node.JS Development for Your Next ProjectTop Reasons to Use Node.JS Development for Your Next Project
Top Reasons to Use Node.JS Development for Your Next Project
WeblineIndia
 
What is Node.js_ Pros and Cons of Node.js Web App Development
What is Node.js_ Pros and Cons of Node.js Web App DevelopmentWhat is Node.js_ Pros and Cons of Node.js Web App Development
What is Node.js_ Pros and Cons of Node.js Web App Development
Sufalam Technologies
 
What is Node.js_ Pros and Cons of Node.js Web App Development.pdf
What is Node.js_ Pros and Cons of Node.js Web App Development.pdfWhat is Node.js_ Pros and Cons of Node.js Web App Development.pdf
What is Node.js_ Pros and Cons of Node.js Web App Development.pdf
Sufalam Technologies
 
Would Mr. Spok choose Open Source
Would Mr. Spok choose Open SourceWould Mr. Spok choose Open Source
Would Mr. Spok choose Open Source
vlcinsky
 
Node.js and .NET Core.pdf
Node.js and .NET Core.pdfNode.js and .NET Core.pdf
Node.js and .NET Core.pdf
Appdeveloper10
 
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
Bitnami
 
Academy PRO: Node.js platform. Lecture 1
Academy PRO: Node.js platform. Lecture 1  Academy PRO: Node.js platform. Lecture 1
Academy PRO: Node.js platform. Lecture 1
Binary Studio
 
Definitive Guide to Powerful Nodejs Development.pptx
Definitive Guide to Powerful Nodejs Development.pptxDefinitive Guide to Powerful Nodejs Development.pptx
Definitive Guide to Powerful Nodejs Development.pptx
75waytechnologies
 
node.js interview questions and answers.
node.js interview questions and answers.node.js interview questions and answers.
node.js interview questions and answers.
JyothiAmpally
 
The Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.jsThe Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.js
Nicholas Jansma
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
lubnayasminsebl
 
Why You Should Use MERN Stack for Startup Apps?
Why You Should Use MERN Stack for Startup Apps?Why You Should Use MERN Stack for Startup Apps?
Why You Should Use MERN Stack for Startup Apps?
PixelCrayons
 
Node.js and Enterprise Web Apps: Know all About it
Node.js and Enterprise Web Apps: Know all About itNode.js and Enterprise Web Apps: Know all About it
Node.js and Enterprise Web Apps: Know all About it
Fibonalabs
 
InterConnect 2017 : Programming languages in the enterprise: Which language s...
InterConnect 2017 : Programming languages in the enterprise: Which language s...InterConnect 2017 : Programming languages in the enterprise: Which language s...
InterConnect 2017 : Programming languages in the enterprise: Which language s...
DevOps for Enterprise Systems
 
Why Choose Node.js For Your Next Web Development Project?
Why Choose Node.js For Your Next Web Development Project?Why Choose Node.js For Your Next Web Development Project?
Why Choose Node.js For Your Next Web Development Project?
WeblineIndia
 
12 Reasons to Choose NodeJS for Product Development.pdf
12 Reasons to Choose NodeJS for Product Development.pdf12 Reasons to Choose NodeJS for Product Development.pdf
12 Reasons to Choose NodeJS for Product Development.pdf
WDP Technologies
 
Node.js vs Python_ Choosing the Right Back-end Technology for Your Next Proje...
Node.js vs Python_ Choosing the Right Back-end Technology for Your Next Proje...Node.js vs Python_ Choosing the Right Back-end Technology for Your Next Proje...
Node.js vs Python_ Choosing the Right Back-end Technology for Your Next Proje...
mohitd6
 
Node.js Web Development SEO Expert Bangladesh LTD.pdf
Node.js Web Development  SEO Expert Bangladesh LTD.pdfNode.js Web Development  SEO Expert Bangladesh LTD.pdf
Node.js Web Development SEO Expert Bangladesh LTD.pdf
Tasnim Jahan
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
Sascha Sambale
 
All You Need to Know About Using Node.pdf
All You Need to Know About Using Node.pdfAll You Need to Know About Using Node.pdf
All You Need to Know About Using Node.pdf
iDataScientists
 
Top Reasons to Use Node.JS Development for Your Next Project
Top Reasons to Use Node.JS Development for Your Next ProjectTop Reasons to Use Node.JS Development for Your Next Project
Top Reasons to Use Node.JS Development for Your Next Project
WeblineIndia
 
What is Node.js_ Pros and Cons of Node.js Web App Development
What is Node.js_ Pros and Cons of Node.js Web App DevelopmentWhat is Node.js_ Pros and Cons of Node.js Web App Development
What is Node.js_ Pros and Cons of Node.js Web App Development
Sufalam Technologies
 
What is Node.js_ Pros and Cons of Node.js Web App Development.pdf
What is Node.js_ Pros and Cons of Node.js Web App Development.pdfWhat is Node.js_ Pros and Cons of Node.js Web App Development.pdf
What is Node.js_ Pros and Cons of Node.js Web App Development.pdf
Sufalam Technologies
 
Would Mr. Spok choose Open Source
Would Mr. Spok choose Open SourceWould Mr. Spok choose Open Source
Would Mr. Spok choose Open Source
vlcinsky
 
Node.js and .NET Core.pdf
Node.js and .NET Core.pdfNode.js and .NET Core.pdf
Node.js and .NET Core.pdf
Appdeveloper10
 
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
Bitnami
 
Academy PRO: Node.js platform. Lecture 1
Academy PRO: Node.js platform. Lecture 1  Academy PRO: Node.js platform. Lecture 1
Academy PRO: Node.js platform. Lecture 1
Binary Studio
 
Definitive Guide to Powerful Nodejs Development.pptx
Definitive Guide to Powerful Nodejs Development.pptxDefinitive Guide to Powerful Nodejs Development.pptx
Definitive Guide to Powerful Nodejs Development.pptx
75waytechnologies
 
node.js interview questions and answers.
node.js interview questions and answers.node.js interview questions and answers.
node.js interview questions and answers.
JyothiAmpally
 
The Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.jsThe Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.js
Nicholas Jansma
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
lubnayasminsebl
 
Why You Should Use MERN Stack for Startup Apps?
Why You Should Use MERN Stack for Startup Apps?Why You Should Use MERN Stack for Startup Apps?
Why You Should Use MERN Stack for Startup Apps?
PixelCrayons
 
Node.js and Enterprise Web Apps: Know all About it
Node.js and Enterprise Web Apps: Know all About itNode.js and Enterprise Web Apps: Know all About it
Node.js and Enterprise Web Apps: Know all About it
Fibonalabs
 
Ad

More from Dev_Events (20)

Eclipse OMR: a modern, open-source toolkit for building language runtimes
Eclipse OMR: a modern, open-source toolkit for building language runtimesEclipse OMR: a modern, open-source toolkit for building language runtimes
Eclipse OMR: a modern, open-source toolkit for building language runtimes
Dev_Events
 
Eclipse MicroProfile: Accelerating the adoption of Java Microservices
Eclipse MicroProfile: Accelerating the adoption of Java MicroservicesEclipse MicroProfile: Accelerating the adoption of Java Microservices
Eclipse MicroProfile: Accelerating the adoption of Java Microservices
Dev_Events
 
From Science Fiction to Science Fact: How AI Will Change Our Approach to Buil...
From Science Fiction to Science Fact: How AI Will Change Our Approach to Buil...From Science Fiction to Science Fact: How AI Will Change Our Approach to Buil...
From Science Fiction to Science Fact: How AI Will Change Our Approach to Buil...
Dev_Events
 
Blockchain Hyperledger Lab
Blockchain Hyperledger LabBlockchain Hyperledger Lab
Blockchain Hyperledger Lab
Dev_Events
 
Introduction to Blockchain and Hyperledger
Introduction to Blockchain and HyperledgerIntroduction to Blockchain and Hyperledger
Introduction to Blockchain and Hyperledger
Dev_Events
 
Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8
Dev_Events
 
Lean and Easy IoT Applications with OSGi and Eclipse Concierge
Lean and Easy IoT Applications with OSGi and Eclipse ConciergeLean and Easy IoT Applications with OSGi and Eclipse Concierge
Lean and Easy IoT Applications with OSGi and Eclipse Concierge
Dev_Events
 
Eclipse JDT Embraces Java 9 – An Insider’s View
Eclipse JDT Embraces Java 9 – An Insider’s ViewEclipse JDT Embraces Java 9 – An Insider’s View
Eclipse JDT Embraces Java 9 – An Insider’s View
Dev_Events
 
Swift on the Server
Swift on the Server Swift on the Server
Swift on the Server
Dev_Events
 
Being serverless and Swift... Is that allowed?
Being serverless and Swift... Is that allowed? Being serverless and Swift... Is that allowed?
Being serverless and Swift... Is that allowed?
Dev_Events
 
Secrets of building a debuggable runtime: Learn how language implementors sol...
Secrets of building a debuggable runtime: Learn how language implementors sol...Secrets of building a debuggable runtime: Learn how language implementors sol...
Secrets of building a debuggable runtime: Learn how language implementors sol...
Dev_Events
 
Tools in Action: Transforming everyday objects with the power of deeplearning...
Tools in Action: Transforming everyday objects with the power of deeplearning...Tools in Action: Transforming everyday objects with the power of deeplearning...
Tools in Action: Transforming everyday objects with the power of deeplearning...
Dev_Events
 
Microservices without Servers
Microservices without ServersMicroservices without Servers
Microservices without Servers
Dev_Events
 
The App Evolution
The App EvolutionThe App Evolution
The App Evolution
Dev_Events
 
Building Next Generation Applications and Microservices
Building Next Generation Applications and Microservices Building Next Generation Applications and Microservices
Building Next Generation Applications and Microservices
Dev_Events
 
Create and Manage APIs with API Connect, Swagger and Bluemix
Create and Manage APIs with API Connect, Swagger and BluemixCreate and Manage APIs with API Connect, Swagger and Bluemix
Create and Manage APIs with API Connect, Swagger and Bluemix
Dev_Events
 
OpenWhisk - Serverless Architecture
OpenWhisk - Serverless Architecture OpenWhisk - Serverless Architecture
OpenWhisk - Serverless Architecture
Dev_Events
 
Add Custom Model and ORM to Node.js
Add Custom Model and ORM to Node.jsAdd Custom Model and ORM to Node.js
Add Custom Model and ORM to Node.js
Dev_Events
 
Adding User Management to Node.js
Adding User Management to Node.jsAdding User Management to Node.js
Adding User Management to Node.js
Dev_Events
 
Creating Sentiment Line Chart with Watson
Creating Sentiment Line Chart with Watson Creating Sentiment Line Chart with Watson
Creating Sentiment Line Chart with Watson
Dev_Events
 
Eclipse OMR: a modern, open-source toolkit for building language runtimes
Eclipse OMR: a modern, open-source toolkit for building language runtimesEclipse OMR: a modern, open-source toolkit for building language runtimes
Eclipse OMR: a modern, open-source toolkit for building language runtimes
Dev_Events
 
Eclipse MicroProfile: Accelerating the adoption of Java Microservices
Eclipse MicroProfile: Accelerating the adoption of Java MicroservicesEclipse MicroProfile: Accelerating the adoption of Java Microservices
Eclipse MicroProfile: Accelerating the adoption of Java Microservices
Dev_Events
 
From Science Fiction to Science Fact: How AI Will Change Our Approach to Buil...
From Science Fiction to Science Fact: How AI Will Change Our Approach to Buil...From Science Fiction to Science Fact: How AI Will Change Our Approach to Buil...
From Science Fiction to Science Fact: How AI Will Change Our Approach to Buil...
Dev_Events
 
Blockchain Hyperledger Lab
Blockchain Hyperledger LabBlockchain Hyperledger Lab
Blockchain Hyperledger Lab
Dev_Events
 
Introduction to Blockchain and Hyperledger
Introduction to Blockchain and HyperledgerIntroduction to Blockchain and Hyperledger
Introduction to Blockchain and Hyperledger
Dev_Events
 
Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8
Dev_Events
 
Lean and Easy IoT Applications with OSGi and Eclipse Concierge
Lean and Easy IoT Applications with OSGi and Eclipse ConciergeLean and Easy IoT Applications with OSGi and Eclipse Concierge
Lean and Easy IoT Applications with OSGi and Eclipse Concierge
Dev_Events
 
Eclipse JDT Embraces Java 9 – An Insider’s View
Eclipse JDT Embraces Java 9 – An Insider’s ViewEclipse JDT Embraces Java 9 – An Insider’s View
Eclipse JDT Embraces Java 9 – An Insider’s View
Dev_Events
 
Swift on the Server
Swift on the Server Swift on the Server
Swift on the Server
Dev_Events
 
Being serverless and Swift... Is that allowed?
Being serverless and Swift... Is that allowed? Being serverless and Swift... Is that allowed?
Being serverless and Swift... Is that allowed?
Dev_Events
 
Secrets of building a debuggable runtime: Learn how language implementors sol...
Secrets of building a debuggable runtime: Learn how language implementors sol...Secrets of building a debuggable runtime: Learn how language implementors sol...
Secrets of building a debuggable runtime: Learn how language implementors sol...
Dev_Events
 
Tools in Action: Transforming everyday objects with the power of deeplearning...
Tools in Action: Transforming everyday objects with the power of deeplearning...Tools in Action: Transforming everyday objects with the power of deeplearning...
Tools in Action: Transforming everyday objects with the power of deeplearning...
Dev_Events
 
Microservices without Servers
Microservices without ServersMicroservices without Servers
Microservices without Servers
Dev_Events
 
The App Evolution
The App EvolutionThe App Evolution
The App Evolution
Dev_Events
 
Building Next Generation Applications and Microservices
Building Next Generation Applications and Microservices Building Next Generation Applications and Microservices
Building Next Generation Applications and Microservices
Dev_Events
 
Create and Manage APIs with API Connect, Swagger and Bluemix
Create and Manage APIs with API Connect, Swagger and BluemixCreate and Manage APIs with API Connect, Swagger and Bluemix
Create and Manage APIs with API Connect, Swagger and Bluemix
Dev_Events
 
OpenWhisk - Serverless Architecture
OpenWhisk - Serverless Architecture OpenWhisk - Serverless Architecture
OpenWhisk - Serverless Architecture
Dev_Events
 
Add Custom Model and ORM to Node.js
Add Custom Model and ORM to Node.jsAdd Custom Model and ORM to Node.js
Add Custom Model and ORM to Node.js
Dev_Events
 
Adding User Management to Node.js
Adding User Management to Node.jsAdding User Management to Node.js
Adding User Management to Node.js
Dev_Events
 
Creating Sentiment Line Chart with Watson
Creating Sentiment Line Chart with Watson Creating Sentiment Line Chart with Watson
Creating Sentiment Line Chart with Watson
Dev_Events
 
Ad

Recently uploaded (20)

How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 

Node.js – ask us anything!

  • 1. Node.js Ask Us Anything 1 3/17/2017#DevoxxUS
  • 2. Agenda  Introductions –Who we are –Audience  Common Questions  Q/A 2 3/17/2017
  • 3. About Michael Dawson Loves the web and building software (with Node.js!) Senior Software Developer @ IBM IBM Runtime Technologies Node.js Technical Lead Node.js collaborator and CTC member Active in LTS, build, benchmarking , api and post-mortem working groups Contact me: [email protected] Twitter: @mhdawson1 https://www.linkedin.com/in/michael-dawson-6051282 3 3/17/2017
  • 4. About Sam Roberts Senior Software Developer @ IBM Likes doing network and system programming in dynamic languages. Node.js collaborator, active in security, docs, clustering, monitoring. Contact me: Email: [email protected] Github: @sam-github Twitter: @octetcloud 4 3/17/2017
  • 5. About the Audience  Have you written anything in Node.js?  Have you pushed a module to npm?  Are you running Node.js in production?  Is it outward facing?  Is your company planning to use Node.js? 5 3/17/2017
  • 6. Common Questions – What/Why  WW1 - What is Node.js  WW2 - Why are people interested  WW3 - What are the key components  WW4 - What platforms are supported  WW5 - What are the common use cases  WW6 - When should I use Node.js versus Java 6 3/17/2017
  • 7. WW1 - Why Node.js – What is it ?  JavaScript != Java  Node.js = Server-side JavaScript  Event-oriented  Non-blocking  Asynchronous 7 3/17/2017
  • 8. http://www.modulecounts.com/ WW2 - Why Node.js ? - Ecosystem • There is a module for that • 404k+ modules • #1 on module counts • 3x growth rate versus other runtimes • #1 on Github (#projects) • #1 on StackOverflow(2015) 8 3/17/2017
  • 9. WW2 - Why Node.js ? - Productivity  Faster development less code  PayPal - https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/  Took 1/2 time with less people  33% fewer lines of code  NextFlix- http://www.infoworld.com/article/2610110/javascript/paypal-and-netflix-cozy- up-to-node-js.html 9 3/17/2017
  • 10. WW2 - Why Node.js ? – Productivity  Reuse of “isomorphic” code components  Availability of JavaScript talent  Developer satisfaction 10 3/17/2017
  • 11. WW2 - Why Node.js ? = Productivity 11 3/17/2017
  • 12. WW2 - Why Node.js ? - Performance Event based: perfect fit for asynchronous non-blocking I/0 12 3/17/2017
  • 13. WW2 - Why Node.js ? - Performance Best suited for asynchronous workloads -80 -60 -40 -20 0 20 40 -75 -60.5 -18 28 JSON Serialization Single Query Multiple Queries Data Updates %ageofJavaPerformance More Computation More I/O 13 3/17/2017
  • 14.  Thousands of concurrent connections  PayPal - https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/  Double number of requests/sec  Response times 35% lower  Groupon – http://www.nearform.com/nodecrunch/node-js-becoming-go-technology-enterprise/  Reduced page load times by 50% WW2 - Why Node.js ? - Performance 14 3/17/2017
  • 15. WW2 - Why Node.js – Compact/Fast  Small (linux.tar.xz)  Download 8.2MB  Uncompressed 35.5 MB  Fast startup  40 ms  Small footprint  16.5 MB https://nodejs.org/en/download/ https://benchmarking.nodejs.org/ 15 3/17/2017
  • 16. WW3 - Key Components V8 – Javascript Engine V8 JavaScript Engine Libuv Other Dependencies ICU Cares Zlib http_parser … Node Binding Layer Operating System Node Libraries Modules (npm or local) + Application OpenSSL 16 3/17/2017
  • 17. WW4 – Platform Support  Linux on x / p / z/arm, AIX, Windows, Mac, SmartOS  IBM working on support for z/OS  IBM Actively supports 17 3/17/2017
  • 18. WW5 - Use Cases  Back-end API services  Service oriented architectures (SOA)  Microservice-based applications  Generating/serving dynamic web page content  SPA applications with bidirectional communication over WebSockets and/or HTTP/2  Agents and data collectors  Small scripts https://github.com/nodejs/benchmarking/blob/master/docs/use_cases.md 18 3/17/2017
  • 19. WW6 - Node.js versus Java  Strengths and weaknesses  Choosing the right language 19 3/17/2017
  • 20. WW6 - Node.js versus Java – Scaling with Java  One thread (or process) per connection  Each thread waits on a response  Scalability determined by number of threads  Each thread:  Consumes memory  Is relatively idle  Concurrency determined by number of depot workers 20 3/17/2017
  • 21. WW6 - Node.js versus Java – Scaling with Node.js  One thread multiplexes for multiple requests  No waiting for a response  Handles return from I/O when notified  Scalability determined by:  CPU Usage  “Back end” responsiveness  Concurrency determined by how fast the food server can work 21 3/17/2017
  • 22. WW6 - Node.js versus Node.js – Tradeoff -80 -60 -40 -20 0 20 40 -75 -60.5 -18 28 JSON Serialization Single Query Multiple Queries Data Updates %ageofJavaPerformance More Computation More I/O 22 3/17/2017
  • 23. WW6 - Node.js versus Java – Choosing the Right Language  Higher performance for I/O  Easier async programming  Fullstack/isomorphic development 23 3/17/2017
  • 24. WW6 - Node.js versus Java – Choosing the Right Language  Higher processing performance  Type safety for calculations  Rich processing frameworks 24 3/17/2017
  • 25. WW6 - Node.js versus Java – Choosing the Right Language  Highly performant, scalable rich web applications  Highly performant, reliable transaction processing  Self-contained micro-service components + 25 3/17/2017
  • 26. Common Questions – Project Organization  PO1 - What does the leadership for the project look like and how is the direction set  PO2 - What is the Node.js foundation and how does it interact with the technical work  PO3 – What is the history of Node.js  PO4 - What is semver and how does the Node.js project use it  PO5 - What are LTS releases  PO6 - What version of Node.js should I use 26 3/17/2017
  • 27. Common Questions – Project Organization  PO7 - How does the project operate day to day  PO8 - What does the community do in order to ensure good quality  PO9 - How do I get started in contributing to the Node.js project  PO10 - What are Node.js working groups, and how do I get involved 27 3/17/2017
  • 28. PO1 - Leadership  Board  TSC  CTC  WGs  Teams 28 3/17/2017
  • 29. PO2 - Node.js Community - Foundation  Mission:  Corporate members  8 platinum(including IBM), 1 Gold, 19 Silver (Needs update)  Individual members https://nodejs.org/en/foundation/ The Node.js Foundation's mission is to enable widespread adoption and help accelerate development of Node.js and other related modules through an open governance model that encourages participation, technical contribution, and a framework for long term stewardship by an ecosystem invested in Node.js' success. 29 3/17/2017
  • 30. PO3 - Node.js Community - History  2009 – written by Ryan Dhal  Jan 2010 - npm  Sep 2010 – Joyent sponsors Node.js  June 2011 – Windows support  2012 – 2014 – Hand over to Isaac Schlueter, then Timothy J. Fontaine  December 2014 – io.js fork  June 2015 – Node.js Foundation  Oct 2015 – Node.js 4.x unites io.js/node.js 0.12.x lines  Oct 2016 – Node.js 6.x 30 3/17/2017
  • 31. PO4 - Semver X.Y.Z:  X – Major: backwards incompatible changes  Y – Minor: additive, new features  Z – Patch: no API changes or new features 31 3/17/2017
  • 32. PO5 - Node.js Long Term Support (LTS) https://github.com/nodejs/lts  Current Release  every 6 months  Semver major  LTS release every October  Even semver majors  30 months of support 32 3/17/2017
  • 33. PO6 – Versions  Most stable – LTS  Latest gives you longest runway  Plan to upgrade at least 6 months in advance  Changes already validated in Current  Current – Live closer to the edge  Most up to date fully tested release  More rapid pace of chance, less settling time  Nightly  Experiment with new features in master 33 3/17/2017
  • 34. PO7 - Node.js Community – Day to Day  TSC - Technical Steering Committee  CTC - Core technical Committee  Collaborators (~76)  Working Groups (Build, LTS, Benchmarking, API etc.)  Teams https://github.com/nodejs/TSC/ https://github.com/nodejs/node/ https://github.com/nodejs/node/blob/master/WORKING_GROUPS.md https://github.com/orgs/nodejs/teams 34 3/17/2017
  • 35. PO8 – Quality with Speed? 35 3/17/2017  Different release types  Change flow processes  Enhancement Proposal process  Automation and Testing  Functional Tests  Module Testing  Stress Testing (Future)  Platform/OS coverage (Future)  Development Workflows (Future)  Performance Benchmarks  Tools
  • 36. PO9 – I want to contribute, where to start ? 36 3/17/2017  Node Todo: http://nodetodo.org/  http://coverage.nodej.org  Issues  Follow/comment on issues  “Good first contribution tag”  Find issue related to your interest  Tests/doc, lots to do here  Working Groups  build, LTS, testing, benchmarking, post-mortem, translation, …. find one that interests you!
  • 37. Common Questions – Production Concerns  PC1 - What are some of the common use cases  PC2 - How does a company typically start using Node.js  PC3 - How do I monitor applications  PC4 - What kinds of tools do I need for a production app  PC5 - What about web frameworks  PC6 - How/where do I run my Node.js applications 37 3/17/2017
  • 38. PC1 – Common Use Cases  Back-end API services  Service oriented architectures (SOA)  Microservice-based applications  Generating/serving dynamic web page content  SPA applications with bidirectional communication over WebSockets and/or HTTP/2  Agents and data collectors  Small scripts https://github.com/nodejs/benchmarking/blob/master/docs/use_cases.md 38 3/17/2017
  • 39. PC2 - How does a company start using Node.js  Starts using it internally for non-critical  Expands to more critical but still internal uses  After success and experience, uses it externally 39 3/17/2017
  • 40. PC3 - How do I monitor applications?  Aggregate logs: Splunk, Loggly, Syslog, …  Graph your metrics: ELK, statsd/graphite, appmetrics  Consider higher level tools: Newrelic, Appdynamics, IBM BAM/APM,… 40 3/17/2017
  • 41. PC4 – Tools for production app ?  heapdump (appmetrics has it pre-compiled) –dumps can be analyzed with Chrome Dev Tools –https://strongloop.com/strongblog/how-to-heap-snapshots/  node-report – human readable first failure information  core dump on uncaught exception –core files can be analyzed with llnode 41 3/17/2017
  • 42. PC5 – What about web frameworks  Pick one!  express: bare bones, build it yourself, good way to tinker  hapi, restify, koa, sails, loopback: when you want more 42 3/17/2017
  • 43. PC6 – Where to run my applications  And other clouds of course …  Node is always one of the top tier languages  And works great on premise if that’s still your thing –Your choice of hardware due to broad platform support 43 3/17/2017
  • 44. Common Questions – Technical  T1 - Whats this event loop thing  T2 - How should I use semver and manage project dependencies  T3 - What is the Node.js programming model  T4 - How do you integrate with Native code  T5 - Why do I have to recompile my native modules for major versions  T6 - Tools to deal with asynchrony  T7 - Common tools (beside npm, git) 44 3/17/2017
  • 45. T1 – Event Loop 45 3/17/2017
  • 46. 46 3/17/2017 T2 – Managing dependencies - Use “loose” dependency specifications - Freeze packages at deploy time, https://strongloop.com/strongblog/node-js-deploy- production-best-practice - Keep up to date!
  • 47. T3– Programming Model  Dynamic  Functional  Asynchronous  Event Based 47 3/17/2017
  • 48. var http = require('http'); var server = http.createServer(); server.listen(8080); server.on('request', function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World!n"); response.end(); }); server.on('connection', function(socket) {}); server.on('close', function() {}); server.on('connect', function(socket) {}); server.on('upgrade', function(request, socket, head) {}); server.on('clientError', function(exception, socket) {});  Event Based T3– Programming Model 48 3/17/2017
  • 49. T4– Native Code #include <node.h> void nativeMethod(const FunctionCallbackInfo<Value> & args) { Isolate* is = args.GetIsolate(); args.GetReturnValue().Set(String::NewFromUtf8(is, “Hi from native”)); } void init(Local<Object> exports) { NODE_SET_METHOD(exports, “callNative”, nativeMethod); } NODE_MODULE(nativeModule, init); https://nodejs.org/api/addons.html 49 3/17/2017
  • 50. T4– Native Code https://nodejs.org/api/addons.html const nativeModule = require(‘./build/Release/nativeModule’); console.log(nativeModule.callNative()); 50 3/17/2017
  • 51. T5 – Why do I have to recompile for each release 51 3/17/2017  Direct use of V8  Fast pace of change  Nan, helps but recompile still needed …  ABI stable module API effort  https://github.com/nodejs/abi-stable-node  https://developer.ibm.com/node/2017/03/07/node-js- vm-summit-moving-forward-with-n-api/
  • 52. T6 - Tools to deal with asynchrony 52 3/17/2017  promises (use bluebird): pros/cons  callback-based (use async): pros/cons  Read blogs! Lots of traps for beginners (especially with promises).
  • 53. 53 3/17/2017  Lodash  Eslint  Package scripts  Chrome Dev Tools T7 – Common tools (other than npm, git)
  • 54. Common Questions – Security  SEC1 – What tools should I be using  SEC2 – What Node.js version should I use  SEC3 – What should I be watching for updates  SEC4 – What’s the nsp contribution to the Foundation 54 3/17/2017
  • 55. SEC1 – What tools should I be using  snyk  nsp  https://groups.google.com/group/nodejs-sec  Not strictly security, but – eslint – coverity 55 3/17/2017
  • 56. SEC2 – What Node.js version should I use  6.x! It’s the best so far:  https://blog.wikimedia.org/2017/02/17/node-6- wikimedia/ 56 3/17/2017
  • 57. SEC3 – What should I be watching for updates  Watch https://nodejs.org/en/blog/ to keep up to date. 57 3/17/2017
  • 58. Copyrights and Trademarks © IBM Corporation 2017. All Rights Reserved IBM, the IBM logo, ibm.com are trademarks or registered trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml Node.js is an official trademark of Joyent. IBM SDK for Node.js is not formally related to or endorsed by the official Joyent Node.js open source or commercial project. Java, JavaScript and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. npm is a trademark of npm, Inc. 58 3/17/2017