Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
#SrijanWW | @srijan
NASA, Netflix, Tinder: Digital
Transformation & Node.js
Daniel Khan | Node.js Technology Lead | @dkhan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
Confidential, Dynatrace LLC
We see ourselves
as a technology
company with a
banking license
“
Michael Corbat
PDG de Citi
Nike has many
more software
developers in
Oregon than
apparel designers.*
“
*from Dynatrace Perform 2015
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
Something Interesting is Happening…
Delivering a great cross-channel experience means
making sense out of prolific complexity
Outsourced
& Hosted
Services
GTS, BT
Legacy &
Back-Office
CICS, IMS, zOS, SOAP
3rd
Party Web
APIs
Social, Ad Serving,
Web Analytics, Search,
Maps, CDNs
SaaS
Salesforce.com,
Marketo, NetSiute
ServiceNow
Web and Mobile
Services
iOS, Android, MBaaS, Public
Cloud, eCommerce platform
Home-grown
Apps
Java, .NET, php, C++, node.js,
Enterprise
Applications
SAP, Sharepoint, Oracle
Business Suite, lync
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
Node Foundation
Node.js is
what the Company Outlaws
use to finally introduce change
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
@dkhan
But Why?
#SrijanWW | @srijan
JavaScript
• Easy to learn / easy to find developers
• No language boundaries between frontend and backend
• Easy to deploy and rollback
• Fast development cycles
PayPal built a web app side by side in Node and Java
and the Node version was:
• Built almost twice as fast with fewer people
• Written in 33% fewer lines of code
• Constructed with 40% fewer files
Source: https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
#SrijanWW | @srijan
Performance
• Google V8 JavaScript Engine
• Non-Blocking I/O
• Asynchronous event based execution
Node.js shines in modern web-connected applications where it needs to
gather data from different sources, consolidate it and push it to many
clients in real-time.
Never(!) use it for CPU-bound tasks!
#SrijanWW | @srijan
Common Use Cases
• Authentification and Authorization
• Proxy
• Data Transformation
• Presentation (View Rendering)
#SrijanWW | @srijan
Node.js in a
Nutshell
#SrijanWW | @srijan
Node Standard Library
Node Bindings
V8
Thread
Pool
Event
Loop
JavaScript
C++
libuv
#SrijanWW | @srijan
V8
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
Thread
Pool
Event
Loop
libuv
#SrijanWW | @srijan
DatabaseBrowser Java Application
Traditional approach
#SrijanWW | @srijan
DatabaseBrowser Node.js Application
IO Threads
Nodes approach
Bert Belder at Node Interactive Amsterdam
#SrijanWW | @srijan
Hunting Memory
Problems
#SrijanWW | @srijan
#SrijanWW | @srijan
process.memoryUsage()
{ rss: 4935680, heapTotal: 1826816, heapUsed: 650472 }
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
#SrijanWW | @srijan
#SrijanWW | @srijan
theThing
someMethod()
longStr
unused()
originalThing
Closure Context
Reference
Root
#SrijanWW | @srijan
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
#SrijanWW | @srijan
@dkhan
http://bit.ly/1PvijIy
var snap =
profiler.takeSnapshot();
snap.serialize();
v8-profiler
D
e
l
t
a
Hunting CPU
Problems
#SrijanWW | @srijan
#SrijanWW | @srijan
calculateFibonacci();
http://bit.ly/1jQMbBR
profiler.startProfiling(id);
profiler.stopProfiling(id);
v8-profiler
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
#SrijanWW | @srijan
#SrijanWW | @srijan
#SrijanWW | @srijan
NODE_ENV=productio
n
NODE_ENV=develop
ment
Blog: http://bit.ly/1flz0Xm
#SrijanWW | @srijan
NODE_ENV=productio
n
NODE_ENV=develop
ment
get(‘/routeA’, function(){})
get(‘/routeB’, function(){})
get(‘/routeC’, function(){})
get(‘/routeD’, function(){})
get(‘/routeE’, function(){})
get(‘/routeA’, function(){})
get(‘/routeX’, function(){})
get(‘/^(route|router)/(.+)’, function(){})
HTTP GET /routeX
get(‘/routeA’, function(){})
get(‘/routeX’, function(){})
O(n)
#SrijanWW | @srijan
Finding the
route
Boundary Problems
#SrijanWW | @srijan
1980 20001995 2005 2010 2015
Stakeholders
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
Backpressure
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
1000 RPS
Node.js
10 RPS
Ancient Legacy Backend
“No man is an
island”
or … We need a holistic view.
Browser Webserver Node Java Oracle
Meet Application Performance Monitoring
Complete Transaction Coverage
Browser / Native Mobile Java/
.NET
Performance
Warehouse
PurePath
Collector
Dynatrace
Server
Dynatrace
Client
Sessions
Store
Exported
Session
Offline
Session
Analysis
Web Server/
PHP/ Node.js
C++, VB,
ADK
CICS
Mainframe
z/OS
MQ/ESB
Database
Node.js
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
#SrijanWW | @srijan
Coming Soon
[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js
#SrijanWW | @srijan
#SrijanWW | @srijan
Q&A
Daniel Khan | Node.js Technology Lead | @dkhan | daniel.khan@dynatrace.com

More Related Content

[Srijan Wednesday Webinars] NASA, Netflix, Tinder: Digital Transformation and Node.js