SlideShare a Scribd company logo
A295
Node.js – Knowledge Accelerator
Michael Dawson, IBM Runtime Technologies
© 2016 IBM Corporation 2
About Michael Dawson
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
© 2016 IBM Corporation 3
Agenda
• Why Node.js ?
• Node.js deep dive
• Positioning versus Java
• Node.js community
• IBM involvement
TM
© 2016 IBM Corporation
• What is it ?
• Ecosystem
• Productivity
• Performance
Why Node.js ?
4
© 2016 IBM Corporation 5
Why Node.js – What is it?
• JavaScript != Java
• Node.js = Server-side JavaScript
• Event-oriented
• Non-blocking
• Asynchronous
http://www.modulecounts.com/
© 2016 IBM Corporation
• There is a module for that
• 300K modules
• #1 on module counts
• #1 on Github (#projects)
• #1 on StackOverflow(2015)
Why Node.js ? – Ecosystem
6
© 2016 IBM Corporation
• Most used runtime in
Bluemix
TM
Why Node.js ? – Ecosystem
7
Why Node.js ? – Productivity
© 2016 IBM Corporation
• 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
8
Why Node.js ? – Productivity
© 2016 IBM Corporation
• Reuse of “isomorphic” code components
• Availability of JavaScript talent
• Developer satisfaction
9
Why Node.js ? – Productivity
© 2016 IBM Corporation 10
Why Node.js ? – Performance
© 2016 IBM Corporation
Event based: perfect fit for asynchronous non-blocking I/0
11
Why Node.js ? – Performance
© 2016 IBM Corporation
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
12
Why Node.js ? - Performance
© 2016 IBM Corporation
• 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%
13
© 2016 IBM Corporation 14
• Key characteristics
• Components
• Programing model
• Event loop
• Native code
• Common use cases
Node.js – Deep Dive
© 2016 IBM Corporation 15
• Small (linux.tar.xz)
• Download 8.2MB
• Uncompressed 35.5 MB
• Fast startup
• 40 ms
• Small footprint
• 16.5 MB
Node.js – Deep Dive – Key Characteristics
https://nodejs.org/en/download/
https://benchmarking.nodejs.org/
Node.js – Deep Dive - Components
© 2016 IBM Corporation
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
Node.js – Deep Dive - Programing Model
© 2016 IBM Corporation
• Dynamic
• Functional
• Asynchronous
• Event Based
17
© 2016 IBM Corporation 18
Node.js – Deep Dive - Programming Model
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
Node.js – Deep Dive – Event Loop
19© 2016 IBM Corporation
Node.js – Deep Dive – Native Code
© 2016 IBM Corporation
https://nodejs.org/api/addons.html
#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);
20
Node.js – Deep Dive – Native Code
© 2016 IBM Corporation
https://nodejs.org/api/addons.html
const nativeModule = require(‘./build/Release/nativeModule’);
console.log(nativeModule.callNative());
21
© 2016 IBM Corporation 22
• 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
Node.js – Deep Dive – Use Cases
https://github.com/nodejs/benchmarking/blob/master/docs/use_cases.md
© 2016 IBM Corporation 23
• Strengths and weaknesses
• Choosing the right language
• Hybrid applications
Node.js versus Java
© 2016 IBM Corporation 24
• 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
Node.js versus Java – Scaling with Java
© 2016 IBM Corporation 25
• 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
Node.js versus Java – Scaling with Node.js
Node.js versus Node.js – Tradeoff
© 2016 IBM Corporation
-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
26
© 2016 IBM Corporation 27
• Higher performance for I/O
• Easier async programming
• Fullstack/isomorphic development
Node.js versus Java – Choosing the Right Language
© 2016 IBM Corporation 28
Node.js versus Java – Choosing the Right Language
• Higher processing performance
• Type safety for calculations
• Rich processing frameworks
© 2016 IBM Corporation 29
• Highly performant, scalable rich web applications
• Highly performant, reliable transaction processing
• Self-contained micro-service components
Node.js versus Java – Choosing the Right Language
+
Node.js versus Node.js – Hybrid applications
© 2016 IBM Corporation 30
© 2016 IBM Corporation 31
• History
• Foundation
• Day to Day
Node.js Community
© 2016 IBM Corporation 32
• 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
Node.js Community - History
© 2016 IBM Corporation 33
• Mission:
• Corporate members
• 8 platinum(including IBM), 19 Silver
• Individual members
Node.js Community - Foundation
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.
© 2016 IBM Corporation 34
• TSC - Technical Steering Committee
• CTC – Core technical Committee
• Collaborators (~76)
• Working Groups (Build, LTS, Benchmarking, API etc.)
• Teams
Node.js Community – Day to Day
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
© 2016 IBM Corporation 35
• Development Model
• Node.js Community Involvement
• V8 Community Involvement
• Platform Availability
• Tooling
Node.js - IBM
© 2016 IBM Corporation 36
• Leverage Open Source
• Develop in community
• Add support for IBM platforms
• Support internal teams and our customers
Node.js IBM – Development Model
© 2016 IBM Corporation 37
• Leadership
• Founding member of Node.js Foundation (1 board member)
• 4 CTC/TSC members (+2 past members)
• Facilitating multiple working groups
Node.js IBM - Node.js Community Involvement
© 2016 IBM Corporation 38
• Regular contributors
• Active in working groups
LTS, build, post-mortem, build, security, api, citgm, dev-policy,
benchmarking, internationalization
• 11 IBMr’s with commit rights
• including #2, #5, #15, #28, #39, #42, #46
• Driving support for platforms - Linux on PPC, AIX and
Linux on Z
Node.js IBM - Node.js Community Involvement
© 2016 IBM Corporation 39
• Deep expertise at V8
• Developed ports to IBM Platforms
• Contribution back to official V8 repositories:
https://github.com/v8/v8
• PPC: V8 4.3 and later have full functional PPC implementation
• s390: V8 5.1 and later have full functional implementation
• ~10-15 commits per week to V8 to maintain PPC/zlinux port
• Port to z/OS in progress:
• https://github.com/ibmruntimes/v8z/tree/3.28-zos
Node.js IBM – V8 Community Involvement
© 2016 IBM Corporation 40
Node.js IBM – Platform Availability
• IBM SDK for Node.js
– Shipping Node.js releases since 2013
– 0.10.x + 0.12.x + 4.x + 6.x
– Linux on x / p / z, AIX, Windows, Mac
– Working on support for z/OS
• Community
© 2016 IBM Corporation 41
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
© 2016 IBM Corporation 42
• Appmetrics
• Health Center
• NodeReport
• Core inspection - IDDE/LLNODE
• GCMV
Node.js IBM – Tooling
© 2016 IBM Corporation 43
Node.js IBM – Appmetrics
https://www.npmjs.com/package/appmetrics
© 2016 IBM Corporation 44
Node.js IBM – Tooling - Healthcenter
https://marketplace.eclipse.org/content/
ibm-monitoring-and-diagnostic-tools-
health-center
• Free download
• Node.js + Java
© 2016 IBM Corporation 45
Node.js IBM – Tooling - NodeReport
NodeReport example - heap
out of memory error
NodeReport content:
● Event summary
● Node.js and OS versions
● JavaScript stack trace
● Native stack trace
● Heap and GC statistics
● Resource usage
● libuv handle summary
● Environment variables
● OS ulimit settings
https://github.com/nodejs/nodereport
© 2016 IBM Corporation 46
• MDB/LLNODE/IDDE
• Working in community to
standardize
Node.js IBM – Tooling - Core Inspection
• Free download
• --trace_gc
• --trace_gc_nvp
• --trace_gc_verbose
• Node.js + Java
© 2016 IBM Corporation 47
Node.js IBM – Tooling - GCMV
https://marketplace.eclipse.org/content/
ibm-monitoring-and-diagnostic-tools-
garbage-collection-and-memory-
visualizer-gcmv
Michael Dawson
Thank you very much.
IBM
Runtime Technologies
michael_dawson@ca.ibm.com
© 2016 IBM Corporation 48
© 2016 IBM Corporation 49
Your feedback is valuable
Please complete your session or lab evaluation!
Session number [A295]
Provide your evaluations by:
Evaluation forms:
Fill out a form at the end of each session
Paper forms are located in each of the
session or lab rooms
Complete the session survey on Event
Connect Portal:
https://portal.ibmeventconnect.com/ma
drid2016
Select Sessions, then Session Finder, and
complete the survey
- Or -
IBMTA16
Twitter
@IBMCloud | @IBMWebSphere
LinkedIn
IBM Cloud
YouTube
IBM Cloud | IBM WebSphere
Facebook
IBM Cloud
ibmcloud
Facebook Event Page
IBM Techical Academy 2016
websphere
For Additional Information
 IBM Commerce Solutions:
http://www.ibm.com/commerce/us-en/
 IBM Digital Experience Solutions
http://www-01.ibm.com/software/collaboration/digitalexperience
 IBM Commerce Blog:
https://www.ibm.com/blogs/commerce/
 IBM B2C Commerce:
http://www-03.ibm.com/software/products/en/category/b2c-commerce
• IBM Commerce Developer:
http://www.ibm.com/developerworks/commerce/
Copyright © 2016 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission
from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial
publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED
"AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS
INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and
services are warranted according to the terms and conditions of the agreements under which they are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers
have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in
which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and
discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their
specific situation.
It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and
interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such
laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law.
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not
tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products.
Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the
ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual
property right.
• IBM, the IBM logo, ibm.com, Aspera®, Bluemix, Blueworks Live, CICS, Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise Document Management System™,
FASP®, FileNet®, Global Business Services ®, Global Technology Services ®, IBM ExperienceOne™, IBM SmartCloud®, IBM Social Business®, Information on Demand,
ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®,
PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®, SoDA, SPSS, Sterling Commerce®,
StoredIQ, Tealeaf®, Tivoli®, Trusteer®, Unica®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of International
Business Machines Corporation, 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.

More Related Content

What's hot

Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
Markus Eisele
 
Keynote from Cloud Expo West, November 2010
Keynote from Cloud Expo West, November 2010Keynote from Cloud Expo West, November 2010
Keynote from Cloud Expo West, November 2010
Mohamad Afshar
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
Markus Eisele
 
Choosing a dev ops paas platform svccd presentation v2 for slideshare
Choosing a dev ops paas platform svccd presentation v2 for slideshareChoosing a dev ops paas platform svccd presentation v2 for slideshare
Choosing a dev ops paas platform svccd presentation v2 for slideshare
John Mathon
 
Microservices Architecture for MEAN Applications using Serverless AWS
Microservices Architecture for MEAN Applications using Serverless AWSMicroservices Architecture for MEAN Applications using Serverless AWS
Microservices Architecture for MEAN Applications using Serverless AWS
Mitoc Group
 
DevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San FranciscoDevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San Francisco
Amazon Web Services
 
Cascon intro
Cascon introCascon intro
Cascon intro
Michael Dawson
 
Practical PaaS presentation
Practical PaaS presentationPractical PaaS presentation
Practical PaaS presentation
hmalphettes
 
Docker, Cloud Foundry, Bosh & Bluemix
Docker, Cloud Foundry, Bosh & BluemixDocker, Cloud Foundry, Bosh & Bluemix
Docker, Cloud Foundry, Bosh & Bluemix
IBM
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
Izzet Mustafaiev
 
Comparison of Several PaaS Cloud Computing Platforms
Comparison of Several PaaS Cloud Computing PlatformsComparison of Several PaaS Cloud Computing Platforms
Comparison of Several PaaS Cloud Computing Platforms
ijsrd.com
 
OpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston MeetupOpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston Meetup
ragss
 
Docker12 factor
Docker12 factorDocker12 factor
Docker12 factor
John Zaccone
 
Cloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer ConsoleCloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer Console
Matthew Perrins
 
IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015
gjuljo
 
2012 05 confess_camel_cloud_integration
2012 05 confess_camel_cloud_integration2012 05 confess_camel_cloud_integration
2012 05 confess_camel_cloud_integration
Kai Wähner
 
QCon Shanghai: Trends in Application Development
QCon Shanghai: Trends in Application DevelopmentQCon Shanghai: Trends in Application Development
QCon Shanghai: Trends in Application Development
Chris Bailey
 
Out of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOut of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix Development
Oliver Busse
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
Nick Dellamaggiore
 
O'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud EconomicsO'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud Economics
Chris Bailey
 

What's hot (20)

Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Keynote from Cloud Expo West, November 2010
Keynote from Cloud Expo West, November 2010Keynote from Cloud Expo West, November 2010
Keynote from Cloud Expo West, November 2010
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Choosing a dev ops paas platform svccd presentation v2 for slideshare
Choosing a dev ops paas platform svccd presentation v2 for slideshareChoosing a dev ops paas platform svccd presentation v2 for slideshare
Choosing a dev ops paas platform svccd presentation v2 for slideshare
 
Microservices Architecture for MEAN Applications using Serverless AWS
Microservices Architecture for MEAN Applications using Serverless AWSMicroservices Architecture for MEAN Applications using Serverless AWS
Microservices Architecture for MEAN Applications using Serverless AWS
 
DevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San FranciscoDevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San Francisco
 
Cascon intro
Cascon introCascon intro
Cascon intro
 
Practical PaaS presentation
Practical PaaS presentationPractical PaaS presentation
Practical PaaS presentation
 
Docker, Cloud Foundry, Bosh & Bluemix
Docker, Cloud Foundry, Bosh & BluemixDocker, Cloud Foundry, Bosh & Bluemix
Docker, Cloud Foundry, Bosh & Bluemix
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Comparison of Several PaaS Cloud Computing Platforms
Comparison of Several PaaS Cloud Computing PlatformsComparison of Several PaaS Cloud Computing Platforms
Comparison of Several PaaS Cloud Computing Platforms
 
OpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston MeetupOpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston Meetup
 
Docker12 factor
Docker12 factorDocker12 factor
Docker12 factor
 
Cloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer ConsoleCloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer Console
 
IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015
 
2012 05 confess_camel_cloud_integration
2012 05 confess_camel_cloud_integration2012 05 confess_camel_cloud_integration
2012 05 confess_camel_cloud_integration
 
QCon Shanghai: Trends in Application Development
QCon Shanghai: Trends in Application DevelopmentQCon Shanghai: Trends in Application Development
QCon Shanghai: Trends in Application Development
 
Out of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOut of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix Development
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
 
O'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud EconomicsO'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud Economics
 

Similar to A295 nodejs-knowledge-accelerator

Node liveboston welcome
Node liveboston welcomeNode liveboston welcome
Node liveboston welcome
Michael Dawson
 
Node.js for .NET Developers
Node.js for .NET DevelopersNode.js for .NET Developers
Node.js for .NET Developers
David Neal
 
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in DominoDEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
Heiko Voigt
 
Node.js In The Enterprise - A Primer
Node.js In The Enterprise - A PrimerNode.js In The Enterprise - A Primer
Node.js In The Enterprise - A Primer
Naveen S.R
 
Mini-Training: Node.js
Mini-Training: Node.jsMini-Training: Node.js
Mini-Training: Node.js
Betclic Everest Group Tech Team
 
Kiss.ts - The Keep It Simple Software Stack for 2017++
Kiss.ts - The Keep It Simple Software Stack for 2017++Kiss.ts - The Keep It Simple Software Stack for 2017++
Kiss.ts - The Keep It Simple Software Stack for 2017++
Ethan Ram
 
Beginners Node.js
Beginners Node.jsBeginners Node.js
Beginners Node.js
Khaled Mosharraf
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
Kasey McCurdy
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
Jeff Fox
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
IT Arena
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
WaveMaker, Inc.
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
Heiko Voigt
 
Node.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivNode.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel Aviv
Ron Perlmuter
 
Nodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEWNodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEW
NodejsFoundation
 
Dot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentalsDot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentals
Lalit Kale
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016
Alex Wu
 
Node on Windows Azure
Node on Windows AzureNode on Windows Azure
Node on Windows Azure
Shiju Varghese
 
321 codeincontainer brewbox
321 codeincontainer brewbox321 codeincontainer brewbox
321 codeincontainer brewbox
Lino Telera
 
A164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdkA164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdk
Toby Corbin
 
Enterprise Trends for MongoDB as a Service
Enterprise Trends for MongoDB as a ServiceEnterprise Trends for MongoDB as a Service
Enterprise Trends for MongoDB as a Service
MongoDB
 

Similar to A295 nodejs-knowledge-accelerator (20)

Node liveboston welcome
Node liveboston welcomeNode liveboston welcome
Node liveboston welcome
 
Node.js for .NET Developers
Node.js for .NET DevelopersNode.js for .NET Developers
Node.js for .NET Developers
 
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in DominoDEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
 
Node.js In The Enterprise - A Primer
Node.js In The Enterprise - A PrimerNode.js In The Enterprise - A Primer
Node.js In The Enterprise - A Primer
 
Mini-Training: Node.js
Mini-Training: Node.jsMini-Training: Node.js
Mini-Training: Node.js
 
Kiss.ts - The Keep It Simple Software Stack for 2017++
Kiss.ts - The Keep It Simple Software Stack for 2017++Kiss.ts - The Keep It Simple Software Stack for 2017++
Kiss.ts - The Keep It Simple Software Stack for 2017++
 
Beginners Node.js
Beginners Node.jsBeginners Node.js
Beginners Node.js
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
Node.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivNode.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel Aviv
 
Nodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEWNodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEW
 
Dot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentalsDot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentals
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016
 
Node on Windows Azure
Node on Windows AzureNode on Windows Azure
Node on Windows Azure
 
321 codeincontainer brewbox
321 codeincontainer brewbox321 codeincontainer brewbox
321 codeincontainer brewbox
 
A164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdkA164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdk
 
Enterprise Trends for MongoDB as a Service
Enterprise Trends for MongoDB as a ServiceEnterprise Trends for MongoDB as a Service
Enterprise Trends for MongoDB as a Service
 

More from Michael Dawson

Index 2018 talk to your code
Index 2018   talk to your codeIndex 2018   talk to your code
Index 2018 talk to your code
Michael Dawson
 
Index 2018 node.js what's next
Index 2018   node.js what's nextIndex 2018   node.js what's next
Index 2018 node.js what's next
Michael Dawson
 
N api - node interactive 2017
N api - node interactive 2017N api - node interactive 2017
N api - node interactive 2017
Michael Dawson
 
N api-node summit-2017-final
N api-node summit-2017-finalN api-node summit-2017-final
N api-node summit-2017-final
Michael Dawson
 
Accelerate your digital transformation
Accelerate your digital transformationAccelerate your digital transformation
Accelerate your digital transformation
Michael Dawson
 
Ask us anything v9
Ask us anything v9Ask us anything v9
Ask us anything v9
Michael Dawson
 
Node.js Community Benchmarking WG update
Node.js Community  Benchmarking WG updateNode.js Community  Benchmarking WG update
Node.js Community Benchmarking WG update
Michael Dawson
 
A294 fips support in node
A294  fips support in nodeA294  fips support in node
A294 fips support in node
Michael Dawson
 
Post mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EUPost mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EU
Michael Dawson
 
Update from-build-workgroup
Update from-build-workgroupUpdate from-build-workgroup
Update from-build-workgroup
Michael Dawson
 
Node fips
Node fipsNode fips
Node fips
Michael Dawson
 
Micro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMicro app-framework - NodeLive Boston
Micro app-framework - NodeLive Boston
Michael Dawson
 
Micro app-framework
Micro app-frameworkMicro app-framework
Micro app-framework
Michael Dawson
 
Node home automation with Node.js and MQTT
Node home automation with Node.js and MQTTNode home automation with Node.js and MQTT
Node home automation with Node.js and MQTT
Michael Dawson
 
Java one 2015 - v1
Java one   2015 - v1Java one   2015 - v1
Java one 2015 - v1
Michael Dawson
 

More from Michael Dawson (15)

Index 2018 talk to your code
Index 2018   talk to your codeIndex 2018   talk to your code
Index 2018 talk to your code
 
Index 2018 node.js what's next
Index 2018   node.js what's nextIndex 2018   node.js what's next
Index 2018 node.js what's next
 
N api - node interactive 2017
N api - node interactive 2017N api - node interactive 2017
N api - node interactive 2017
 
N api-node summit-2017-final
N api-node summit-2017-finalN api-node summit-2017-final
N api-node summit-2017-final
 
Accelerate your digital transformation
Accelerate your digital transformationAccelerate your digital transformation
Accelerate your digital transformation
 
Ask us anything v9
Ask us anything v9Ask us anything v9
Ask us anything v9
 
Node.js Community Benchmarking WG update
Node.js Community  Benchmarking WG updateNode.js Community  Benchmarking WG update
Node.js Community Benchmarking WG update
 
A294 fips support in node
A294  fips support in nodeA294  fips support in node
A294 fips support in node
 
Post mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EUPost mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EU
 
Update from-build-workgroup
Update from-build-workgroupUpdate from-build-workgroup
Update from-build-workgroup
 
Node fips
Node fipsNode fips
Node fips
 
Micro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMicro app-framework - NodeLive Boston
Micro app-framework - NodeLive Boston
 
Micro app-framework
Micro app-frameworkMicro app-framework
Micro app-framework
 
Node home automation with Node.js and MQTT
Node home automation with Node.js and MQTTNode home automation with Node.js and MQTT
Node home automation with Node.js and MQTT
 
Java one 2015 - v1
Java one   2015 - v1Java one   2015 - v1
Java one 2015 - v1
 

Recently uploaded

How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 

A295 nodejs-knowledge-accelerator

  • 1. A295 Node.js – Knowledge Accelerator Michael Dawson, IBM Runtime Technologies
  • 2. © 2016 IBM Corporation 2 About Michael Dawson 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. © 2016 IBM Corporation 3 Agenda • Why Node.js ? • Node.js deep dive • Positioning versus Java • Node.js community • IBM involvement TM
  • 4. © 2016 IBM Corporation • What is it ? • Ecosystem • Productivity • Performance Why Node.js ? 4
  • 5. © 2016 IBM Corporation 5 Why Node.js – What is it? • JavaScript != Java • Node.js = Server-side JavaScript • Event-oriented • Non-blocking • Asynchronous
  • 6. http://www.modulecounts.com/ © 2016 IBM Corporation • There is a module for that • 300K modules • #1 on module counts • #1 on Github (#projects) • #1 on StackOverflow(2015) Why Node.js ? – Ecosystem 6
  • 7. © 2016 IBM Corporation • Most used runtime in Bluemix TM Why Node.js ? – Ecosystem 7
  • 8. Why Node.js ? – Productivity © 2016 IBM Corporation • 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 8
  • 9. Why Node.js ? – Productivity © 2016 IBM Corporation • Reuse of “isomorphic” code components • Availability of JavaScript talent • Developer satisfaction 9
  • 10. Why Node.js ? – Productivity © 2016 IBM Corporation 10
  • 11. Why Node.js ? – Performance © 2016 IBM Corporation Event based: perfect fit for asynchronous non-blocking I/0 11
  • 12. Why Node.js ? – Performance © 2016 IBM Corporation 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 12
  • 13. Why Node.js ? - Performance © 2016 IBM Corporation • 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% 13
  • 14. © 2016 IBM Corporation 14 • Key characteristics • Components • Programing model • Event loop • Native code • Common use cases Node.js – Deep Dive
  • 15. © 2016 IBM Corporation 15 • Small (linux.tar.xz) • Download 8.2MB • Uncompressed 35.5 MB • Fast startup • 40 ms • Small footprint • 16.5 MB Node.js – Deep Dive – Key Characteristics https://nodejs.org/en/download/ https://benchmarking.nodejs.org/
  • 16. Node.js – Deep Dive - Components © 2016 IBM Corporation 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
  • 17. Node.js – Deep Dive - Programing Model © 2016 IBM Corporation • Dynamic • Functional • Asynchronous • Event Based 17
  • 18. © 2016 IBM Corporation 18 Node.js – Deep Dive - Programming Model 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
  • 19. Node.js – Deep Dive – Event Loop 19© 2016 IBM Corporation
  • 20. Node.js – Deep Dive – Native Code © 2016 IBM Corporation https://nodejs.org/api/addons.html #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); 20
  • 21. Node.js – Deep Dive – Native Code © 2016 IBM Corporation https://nodejs.org/api/addons.html const nativeModule = require(‘./build/Release/nativeModule’); console.log(nativeModule.callNative()); 21
  • 22. © 2016 IBM Corporation 22 • 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 Node.js – Deep Dive – Use Cases https://github.com/nodejs/benchmarking/blob/master/docs/use_cases.md
  • 23. © 2016 IBM Corporation 23 • Strengths and weaknesses • Choosing the right language • Hybrid applications Node.js versus Java
  • 24. © 2016 IBM Corporation 24 • 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 Node.js versus Java – Scaling with Java
  • 25. © 2016 IBM Corporation 25 • 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 Node.js versus Java – Scaling with Node.js
  • 26. Node.js versus Node.js – Tradeoff © 2016 IBM Corporation -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 26
  • 27. © 2016 IBM Corporation 27 • Higher performance for I/O • Easier async programming • Fullstack/isomorphic development Node.js versus Java – Choosing the Right Language
  • 28. © 2016 IBM Corporation 28 Node.js versus Java – Choosing the Right Language • Higher processing performance • Type safety for calculations • Rich processing frameworks
  • 29. © 2016 IBM Corporation 29 • Highly performant, scalable rich web applications • Highly performant, reliable transaction processing • Self-contained micro-service components Node.js versus Java – Choosing the Right Language +
  • 30. Node.js versus Node.js – Hybrid applications © 2016 IBM Corporation 30
  • 31. © 2016 IBM Corporation 31 • History • Foundation • Day to Day Node.js Community
  • 32. © 2016 IBM Corporation 32 • 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 Node.js Community - History
  • 33. © 2016 IBM Corporation 33 • Mission: • Corporate members • 8 platinum(including IBM), 19 Silver • Individual members Node.js Community - Foundation 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.
  • 34. © 2016 IBM Corporation 34 • TSC - Technical Steering Committee • CTC – Core technical Committee • Collaborators (~76) • Working Groups (Build, LTS, Benchmarking, API etc.) • Teams Node.js Community – Day to Day 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
  • 35. © 2016 IBM Corporation 35 • Development Model • Node.js Community Involvement • V8 Community Involvement • Platform Availability • Tooling Node.js - IBM
  • 36. © 2016 IBM Corporation 36 • Leverage Open Source • Develop in community • Add support for IBM platforms • Support internal teams and our customers Node.js IBM – Development Model
  • 37. © 2016 IBM Corporation 37 • Leadership • Founding member of Node.js Foundation (1 board member) • 4 CTC/TSC members (+2 past members) • Facilitating multiple working groups Node.js IBM - Node.js Community Involvement
  • 38. © 2016 IBM Corporation 38 • Regular contributors • Active in working groups LTS, build, post-mortem, build, security, api, citgm, dev-policy, benchmarking, internationalization • 11 IBMr’s with commit rights • including #2, #5, #15, #28, #39, #42, #46 • Driving support for platforms - Linux on PPC, AIX and Linux on Z Node.js IBM - Node.js Community Involvement
  • 39. © 2016 IBM Corporation 39 • Deep expertise at V8 • Developed ports to IBM Platforms • Contribution back to official V8 repositories: https://github.com/v8/v8 • PPC: V8 4.3 and later have full functional PPC implementation • s390: V8 5.1 and later have full functional implementation • ~10-15 commits per week to V8 to maintain PPC/zlinux port • Port to z/OS in progress: • https://github.com/ibmruntimes/v8z/tree/3.28-zos Node.js IBM – V8 Community Involvement
  • 40. © 2016 IBM Corporation 40 Node.js IBM – Platform Availability • IBM SDK for Node.js – Shipping Node.js releases since 2013 – 0.10.x + 0.12.x + 4.x + 6.x – Linux on x / p / z, AIX, Windows, Mac – Working on support for z/OS • Community
  • 41. © 2016 IBM Corporation 41 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
  • 42. © 2016 IBM Corporation 42 • Appmetrics • Health Center • NodeReport • Core inspection - IDDE/LLNODE • GCMV Node.js IBM – Tooling
  • 43. © 2016 IBM Corporation 43 Node.js IBM – Appmetrics https://www.npmjs.com/package/appmetrics
  • 44. © 2016 IBM Corporation 44 Node.js IBM – Tooling - Healthcenter https://marketplace.eclipse.org/content/ ibm-monitoring-and-diagnostic-tools- health-center • Free download • Node.js + Java
  • 45. © 2016 IBM Corporation 45 Node.js IBM – Tooling - NodeReport NodeReport example - heap out of memory error NodeReport content: ● Event summary ● Node.js and OS versions ● JavaScript stack trace ● Native stack trace ● Heap and GC statistics ● Resource usage ● libuv handle summary ● Environment variables ● OS ulimit settings https://github.com/nodejs/nodereport
  • 46. © 2016 IBM Corporation 46 • MDB/LLNODE/IDDE • Working in community to standardize Node.js IBM – Tooling - Core Inspection
  • 47. • Free download • --trace_gc • --trace_gc_nvp • --trace_gc_verbose • Node.js + Java © 2016 IBM Corporation 47 Node.js IBM – Tooling - GCMV https://marketplace.eclipse.org/content/ ibm-monitoring-and-diagnostic-tools- garbage-collection-and-memory- visualizer-gcmv
  • 48. Michael Dawson Thank you very much. IBM Runtime Technologies michael_dawson@ca.ibm.com © 2016 IBM Corporation 48
  • 49. © 2016 IBM Corporation 49 Your feedback is valuable Please complete your session or lab evaluation! Session number [A295] Provide your evaluations by: Evaluation forms: Fill out a form at the end of each session Paper forms are located in each of the session or lab rooms Complete the session survey on Event Connect Portal: https://portal.ibmeventconnect.com/ma drid2016 Select Sessions, then Session Finder, and complete the survey - Or -
  • 50. IBMTA16 Twitter @IBMCloud | @IBMWebSphere LinkedIn IBM Cloud YouTube IBM Cloud | IBM WebSphere Facebook IBM Cloud ibmcloud Facebook Event Page IBM Techical Academy 2016 websphere
  • 51. For Additional Information  IBM Commerce Solutions: http://www.ibm.com/commerce/us-en/  IBM Digital Experience Solutions http://www-01.ibm.com/software/collaboration/digitalexperience  IBM Commerce Blog: https://www.ibm.com/blogs/commerce/  IBM B2C Commerce: http://www-03.ibm.com/software/products/en/category/b2c-commerce • IBM Commerce Developer: http://www.ibm.com/developerworks/commerce/
  • 52. Copyright © 2016 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM. Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided. Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice. Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary. References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business. Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation. It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law.
  • 53. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right. • IBM, the IBM logo, ibm.com, Aspera®, Bluemix, Blueworks Live, CICS, Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise Document Management System™, FASP®, FileNet®, Global Business Services ®, Global Technology Services ®, IBM ExperienceOne™, IBM SmartCloud®, IBM Social Business®, Information on Demand, ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®, SoDA, SPSS, Sterling Commerce®, StoredIQ, Tealeaf®, Tivoli®, Trusteer®, Unica®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of International Business Machines Corporation, 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.