SlideShare a Scribd company logo
1 of 39
Download to read offline
THE REAL WORLD 
Plugging The Enterprise Into It.
MOBILE ARCHITECT 
โ€ฃLove Distributed Systems 
โ€ฃEntropy Reducer 
โ€ฃPayment systems 
โ€ฃR&D Work 
โ€ฃB2E and Commercial Banking Apps 
Experience 
โ€ฃ Front Office Trading Systems 
โ€ฃ Messaging Middleware Integration 
โ€ฃ Big Systems 
โ€ฃ C/C++/C#/Java 
MORE 
โ€ฃ @akohli https://slideshare.net/akohli 
series 2, episode 22, โ€œDaddy Pigโ€™s Officeโ€ http:// 
www.channel5.com/shows/peppa-pig/episodes/daddy-pigs-office
TODAY 
Why Node 
What we want to do 
Node as the underpinning of real world or electronic asset interaction 
Backing our interactions, eventing services 
Not so much about monolith deconstruction 
What we did 
Initial proxy and protocol 
Our performance and scalability testing
NODE IS MAINSTREAM
WHY NODE? 
โœ” Node 
โ€ข Asynchronous Eventing Model 
โ€ข We live in an async nonblocking 
world 
โ€ข Ideal for mobile and sensor 
applications 
โ€ข Everyone knows Javascript, right? 
โ€ข Community 
โ€ข Diverse protocol and lots of 
modules 
โ€ข Rapid development and 
Expediency
HOMOLOGATED 
or how we can use it in a big 
company 
โ€ข Node is approved for 
internal usage 
โ€ข Less Yak Shaving than other 
solutions 
โ€ข different at least 
โ€ข good internal community 
beware of dog, staff only
โ€œWalmart has had good success with HAPI 
and Nodeโ€ 
- @adam_baldwin 
โ€œNode is good. Iโ€™ve heard good things 
- @ eoinbrazil 
about HAPIโ€
ENTERPRISE MOBILE APPLICATIONS
ENTERPRISE MOBILE APPLICATIONS 
โ€ข Plurality of systems, services 
โ€ข web resources 
โ€ข web sites 
โ€ข Connectivity challenges 
โ€ข direct 
โ€ข mediated 
โ€ข Security 
โ€ข AuthN 
โ€ข AuthZ 
โ€ข Data Encryption at rest
Security Pass 
Sensors Employee Devices 
The Physical World 
THE REFLEKTOR 
Security Services 
AuthZ 
AuthN 
โ€ฆ 
Eventing 
Engine 
Bridge 
Payment 
Services 
Access 
Services 
Printing 
Services 
the Reflektor 
Bridge and New Services 
App Services and 
Resources
thePROXY First Release
IT AINโ€™T EASY 
but we gotta try
PROXYING IS EASY
DETAILS
THE FLOW 
โ€ข The Protocol 
โ€ข Security - Gateway Access 
โ€ข Federated Identity, my foot 
โ€ข NTLM, has itโ€™s own approach
PROTOCOL 
Request 
json body 
target 
headers 
body/post-data 
loginfo 
request = { 
URL = "http://www.citigroup.net/", 
method = "GET", 
timeout = 19500, 
clientInfo = { 
identifier = โ€œโ€ฆEโ€, 
model = "iPad Simulator", 
systemName = "iPhone OS", 
systemVersion = "7.1", 
}, 
headers = { 
Accept = "text/html,application/xhtml 
+xml,application/xml;q=0.9,*/*;q=0.8", 
Cookie = "CGPLNG=ENG; JSESSIONID_CGNR3=..โ€, 
"User-Agent" = "Mozilla/5.0 (iPad; CPU OS 7_1 like 
Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/ 
11D167" 
}, 
logEntries = [ 
{ 
URL = โ€œhttps://cinternal.site/target/fooaโ€, 
downstreamDuration = 656, 
httpMethod = "GET", 
roundtripDuration = 3461, 
statusCode = 200 
} ] 
}
RESPONSE 
body = โ€œ<base64>", 
code = 200, 
duration = 31, 
headers = { 
"Accept-Ranges" = [ 
"bytes" 
], 
"Content-Length" = [ 
225 
], 
"Content-Type" = [ 
"text/html" 
], 
Date = [ 
"Thu, 29 May 2014 15:28:29 GMT" 
], 
Etag = [ 
""e1-4e50c74f"" 
], 
"Last-Modified" = [ 
"Sun, 21 Aug 2011 08:52:31 GMT" 
] 
}, 
message = "OK" 
}
NTLM AUTHENTICATION 
Enterprise 
authentication 
protocol 
(Microsoft). 
! 
NTLM 
requires 
all 
phases 
to 
take 
place 
across 
a 
single 
HTTP 
connection. 
! 
NTLM 
messages 
are 
sent 
and 
received 
as 
request 
headers. 
! 
The 
serverโ€™s 
response 
from 
the 
NTLM 
type 
3 
message 
is 
the 
requested 
content. 
! 
This 
authentication 
process 
must 
be 
completed 
for 
every 
requested 
resource, 
unless 
an 
open 
connection 
is 
maintained.
WORKING 
Implementation Challenges 
โ€ข Storage of password on mobile device is prohibited, 
but is required in the authentication process. 
โ€ข Persistent connection not available. 
โ€ข Latency issues โ€“ 3 requests for every web resource. 
Solution 
โ€ข Ported from Apache Java implementation to Node.js. 
โ€ข Hashed username / password pair stored on device, 
transmitted to server for authentication rather than raw 
password. 
โ€ข hmac_md5(username, md4(password)) 
โ€ข NTLM message calculation split between client app and 
proxy server. 
โ€ข Defaults used and optional parameters omitted โ€“ 
simplified messages. 
โ€ข Observed desktop browsers wait for a 401 before 
beginning the authentication process. Pre-emptively 
sending the username / password hash eliminates the 
initial 401 response. 
Process is reduced from 3 direct requests to a single 
client request, mapped to 2 proxy requests.
SCALABILITY AND PERFORMANCE TESTING
GITHUB.COM/SPUMKO/FLOD 
$ flod -n 2000 -t 1500 -c 100..1000 -v http://target-place 
! 
!
GITHUB.COM/SPUMKO/FLOD 
num req per 
batch 
range of concurrent request per batch - 
$ flod -n 2000 -t 1500 -c 100..1000 -v http://target-place 
! 
! 
timeout 
โ€œrateโ€
FLOD OUTPUT 
## 6k page results 
ec2-user@ip-10-199-51-233 node-hapi]$ flod -n 2000 -t 1500 -c 100..1000 -v http://localhost/loremipsum-6k-ish.html 
This is Flod, version 0.2.2 
Copyright 2013 Walmart, http://github.com/spumko/flod 
! 
Benchmarking (hold on)... 
! 
Server Requests/sec Latency (ms) 
--------------------------------------- ------------ --------------- 
http://localhost/loremipsum-6k-ish.html 100 96.48 ยฑ 18.54 
http://localhost/loremipsum-6k-ish.html 200 164.24 ยฑ 17.03 
http://localhost/loremipsum-6k-ish.html 300 263.80 ยฑ 62.44 
http://localhost/loremipsum-6k-ish.html 400 359.61 ยฑ 49.20 
http://localhost/loremipsum-6k-ish.html 500 437.66 ยฑ 58.69 
http://localhost/loremipsum-6k-ish.html 600 481.29 ยฑ 120.04 
http://localhost/loremipsum-6k-ish.html 700 606.74 ยฑ 114.45 
http://localhost/loremipsum-6k-ish.html 800 555.08 ยฑ 133.74 
http://localhost/loremipsum-6k-ish.html 900 674.08 ยฑ 190.91 
http://localhost/loremipsum-6k-ish.html 1000 763.27 ยฑ 69.25 
## running with high timeout - doubling responses times vs nginx direct 
[ec2-user@ip-10-199-51-233 node-hapi]$ ../node_modules/flod/bin/flod -n 2000 -t 4500 -c 100..1000 -v http://localhost:8000 
This is Flod, version 0.2.2 
Copyright 2013 Walmart, http://github.com/spumko/flod 
! 
Benchmarking (hold on)... 
! 
Server Requests/sec Latency (ms) 
--------------------- ------------ ---------------- 
http://localhost:8000 100 200.55 ยฑ 39.40 
http://localhost:8000 200 389.54 ยฑ 67.39 
http://localhost:8000 300 558.14 ยฑ 112.57 
http://localhost:8000 400 777.09 ยฑ 160.01 
http://localhost:8000 500 970.61 ยฑ 305.76 
http://localhost:8000 600 1032.37 ยฑ 274.44 
http://localhost:8000 700 1216.49 ยฑ 249.94 
http://localhost:8000 800 1483.31 ยฑ 690.64 
http://localhost:8000 900 1559.54 ยฑ 805.31 
http://localhost:8000 1000 1909.23 ยฑ 845.81
MODIFYING FLOD 
โ€ข modified server to pull our decorated response 
timing information 
โ€ข modified reporting/logging to include this 
information 
โ€ข hope to contribute back to mainline
ENVIRONMENT 
Machine OS Type Processor Cores Memory 
Int Server RHEL 6.4 VM Xeon 
2.6GHz 2 4GB 
Prod Server 
Windows 
Server 
2k8r2 
VM Xeon 1.8 
Ghz 4 6GB 
Dev Mac Mini Full i5 2.5 GHz 2 8 GB 
โ€ข HTTP 1.1 no Keep-Alive, request payload is json 
โ€ข Client iOS ObjectiveC;Server is Node + Hapijs (with Some Good Monitoring)
SCENARIOS 
โ€ข Closed network, direct connection, 
Mac to Mac 
โ€ข Client server on a redhat VM, 
loopback. Redhat VM 
โ€ข Redhat client to Windows Server via 
network, Redhat to Windows 
โ€ข via Mobile network/wifi could only 
support 100 transactions/s because 
of latency 
Req/s Response 
(ms) 
Mac to Mac 1000 2000 
Redhat VM 1000 8500 
RH to 
Windows 1000 30, 000 
External 100 17, 000
RESULTS 
โ€ข Consistent proxied service response 
โ€ข ~20ms Mac โž” Mac 
โ€ข ~250ms RHEL โž” Windows Server 
โ€ข Gateway service < 50 ms 
โ€ข We need better concurrency, request servicing 
โ€ข Infrastructure adds significant overhead
RESULTS 
100# 200# 300# 400# 500# 600# 700# 800# 900# 1000# 
70000# 
60000# 
50000# 
40000# 
30000# 
20000# 
10000# 
0# 
Requests'per'second' 
Milliseconds(ms)' 
99th'Percen7les' 
Mac#To#Mac# RedhatVM# Redhat#to#Windows#
OFF NETWORK
ON NETWORK
TABULAR 
Request Mac To Mac RHEL to Windows 
100/s 483 17,235 
200/s 783 21,209 
300/s 1127 17,479 
400/s 1493 22,937 
500/s 1859 28,872 
600/s 2171 34,253 
700/s 2487 39,878 
800/s 2878 46,970 
900/s 3285 51,083 
1000/s 3555 57,189
EXCELLENT
EXPERIENCE 
โ€ข Enterprise and Legal approvals hard 
โ€ข We are ahead of Ops, so waiting for VMs and infrastructure 
to catch up - software, machines, and network 
โ€ข Some bits of node need tightening - especially around 
security and password storage 
โ€ข Still learning and it is fun!
SCALABILITY PACKETS 
โ€ข Pile of VMs to auto-scale 
โ€ข Need elastic environment with a smart load 
balancer and configuration management 
โ€ข Great Details on Best practice 
โ€ข https://gist.github.com/hueniverse/7686452
THANKS!
QUESTIONS? COMMENTS?
NOUN PROJECTS THANKS 
Smartphone designed by James Fenton from the Noun Project 
! 
Creative Commons โ€“ Attribution (CC BY 3.0) 
Identification designed by Mark Shorter from the Noun Project 
Ibeacon designed by Stรฉphanie Rusch from the 
Nount Project 
! 
Creative Commons โ€“ Attribution (CC BY 3.0) 
Arduino designed by uizin from the Noun Project 
!

More Related Content

What's hot

Why you should switch to Cypress for modern web testing?
Why you should switch to Cypress for modern web testing?Why you should switch to Cypress for modern web testing?
Why you should switch to Cypress for modern web testing?Shivam Bharadwaj
ย 
Node.js in Production
Node.js in ProductionNode.js in Production
Node.js in ProductionRyan Roemer
ย 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jibanJibanananda Sana
ย 
Nodejs - Building a RESTful API
Nodejs - Building a RESTful APINodejs - Building a RESTful API
Nodejs - Building a RESTful APISang Cรน
ย 
React native in the wild @ Codemotion 2016 in Rome
React native in the wild @ Codemotion 2016 in RomeReact native in the wild @ Codemotion 2016 in Rome
React native in the wild @ Codemotion 2016 in RomeAlessandro Nadalin
ย 
Zepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-FrameworksZepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-FrameworksThomas Fuchs
ย 
Server-Side JavaScript with Nashorn
Server-Side JavaScript with NashornServer-Side JavaScript with Nashorn
Server-Side JavaScript with NashornDaniel Woods
ย 
LONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentationLONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentationSriram Angajala
ย 
Das kannste schon so machen
Das kannste schon so machenDas kannste schon so machen
Das kannste schon so machenAndrรฉ Goliath
ย 
Javaland 2017: "Youยดll do microservices now". Now what?
Javaland 2017: "Youยดll do microservices now". Now what?Javaland 2017: "Youยดll do microservices now". Now what?
Javaland 2017: "Youยดll do microservices now". Now what?Andrรฉ Goliath
ย 
Come Sail Away With Me (you guys): Node.js MVC Web API's Using Sails.js
Come Sail Away With Me (you guys): Node.js MVC Web API's Using Sails.jsCome Sail Away With Me (you guys): Node.js MVC Web API's Using Sails.js
Come Sail Away With Me (you guys): Node.js MVC Web API's Using Sails.jsEric Nograles
ย 
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...Andrรฉ Goliath
ย 
Node.js debugging
Node.js debuggingNode.js debugging
Node.js debuggingNicholas McClay
ย 
Realtime MVC with Sails.js
Realtime MVC with Sails.jsRealtime MVC with Sails.js
Realtime MVC with Sails.jsSerdar Dogruyol
ย 
Node.JS security
Node.JS securityNode.JS security
Node.JS securityDeepu S Nath
ย 
Memaksimalkan Non-Blocking IO pada Node.js
Memaksimalkan Non-Blocking IO pada Node.jsMemaksimalkan Non-Blocking IO pada Node.js
Memaksimalkan Non-Blocking IO pada Node.jsCodePolitan
ย 
Queue Everything and Please Everyone
Queue Everything and Please EveryoneQueue Everything and Please Everyone
Queue Everything and Please EveryoneVaidik Kapoor
ย 
Ruby performance - The low hanging fruit
Ruby performance - The low hanging fruitRuby performance - The low hanging fruit
Ruby performance - The low hanging fruitBruce Werdschinski
ย 
[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginxNicolas Embleton
ย 

What's hot (20)

Why you should switch to Cypress for modern web testing?
Why you should switch to Cypress for modern web testing?Why you should switch to Cypress for modern web testing?
Why you should switch to Cypress for modern web testing?
ย 
Node.js in Production
Node.js in ProductionNode.js in Production
Node.js in Production
ย 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jiban
ย 
Nodejs - Building a RESTful API
Nodejs - Building a RESTful APINodejs - Building a RESTful API
Nodejs - Building a RESTful API
ย 
React native in the wild @ Codemotion 2016 in Rome
React native in the wild @ Codemotion 2016 in RomeReact native in the wild @ Codemotion 2016 in Rome
React native in the wild @ Codemotion 2016 in Rome
ย 
Zepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-FrameworksZepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-Frameworks
ย 
Server-Side JavaScript with Nashorn
Server-Side JavaScript with NashornServer-Side JavaScript with Nashorn
Server-Side JavaScript with Nashorn
ย 
LONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentationLONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentation
ย 
Das kannste schon so machen
Das kannste schon so machenDas kannste schon so machen
Das kannste schon so machen
ย 
Javaland 2017: "Youยดll do microservices now". Now what?
Javaland 2017: "Youยดll do microservices now". Now what?Javaland 2017: "Youยดll do microservices now". Now what?
Javaland 2017: "Youยดll do microservices now". Now what?
ย 
Come Sail Away With Me (you guys): Node.js MVC Web API's Using Sails.js
Come Sail Away With Me (you guys): Node.js MVC Web API's Using Sails.jsCome Sail Away With Me (you guys): Node.js MVC Web API's Using Sails.js
Come Sail Away With Me (you guys): Node.js MVC Web API's Using Sails.js
ย 
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
ย 
Node.js debugging
Node.js debuggingNode.js debugging
Node.js debugging
ย 
Realtime MVC with Sails.js
Realtime MVC with Sails.jsRealtime MVC with Sails.js
Realtime MVC with Sails.js
ย 
Node.JS
Node.JSNode.JS
Node.JS
ย 
Node.JS security
Node.JS securityNode.JS security
Node.JS security
ย 
Memaksimalkan Non-Blocking IO pada Node.js
Memaksimalkan Non-Blocking IO pada Node.jsMemaksimalkan Non-Blocking IO pada Node.js
Memaksimalkan Non-Blocking IO pada Node.js
ย 
Queue Everything and Please Everyone
Queue Everything and Please EveryoneQueue Everything and Please Everyone
Queue Everything and Please Everyone
ย 
Ruby performance - The low hanging fruit
Ruby performance - The low hanging fruitRuby performance - The low hanging fruit
Ruby performance - The low hanging fruit
ย 
[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx
ย 

Similar to The Real World - Plugging the Enterprise Into It (nodejs)

Being HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeBeing HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeAman Kohli
ย 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming APIConstantine Slisenka
ย 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...Aman Kohli
ย 
SolarWinds Scalability for the Enterprise
SolarWinds Scalability for the EnterpriseSolarWinds Scalability for the Enterprise
SolarWinds Scalability for the EnterpriseSolarWinds
ย 
Automation in Network Lifecycle Management - Bay Area Juniper Meetup
Automation in Network Lifecycle Management - Bay Area Juniper MeetupAutomation in Network Lifecycle Management - Bay Area Juniper Meetup
Automation in Network Lifecycle Management - Bay Area Juniper MeetupJorge Bonilla
ย 
Scaling asp.net websites to millions of users
Scaling asp.net websites to millions of usersScaling asp.net websites to millions of users
Scaling asp.net websites to millions of usersoazabir
ย 
Spring and Pivotal Application Service - SpringOne Tour - Boston
Spring and Pivotal Application Service - SpringOne Tour - BostonSpring and Pivotal Application Service - SpringOne Tour - Boston
Spring and Pivotal Application Service - SpringOne Tour - BostonVMware Tanzu
ย 
E g innovations overview
E g innovations overviewE g innovations overview
E g innovations overviewNuno Alves
ย 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassPaul Withers
ย 
Network Automation with Salt and NAPALM: Introuction
Network Automation with Salt and NAPALM: IntrouctionNetwork Automation with Salt and NAPALM: Introuction
Network Automation with Salt and NAPALM: IntrouctionCloudflare
ย 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesAlexander Penev
ย 
How to best setup SharePoint 2013, Web Apps, Workflow Manager with Powershell
How to best setup SharePoint 2013, Web Apps, Workflow Manager with PowershellHow to best setup SharePoint 2013, Web Apps, Workflow Manager with Powershell
How to best setup SharePoint 2013, Web Apps, Workflow Manager with PowershellSamuel Zรผrcher
ย 
SignalR Intro + WPDev
SignalR Intro + WPDevSignalR Intro + WPDev
SignalR Intro + WPDevSam Basu
ย 
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...arnaudsoullie
ย 
Making the Switch to Bare Metal and Open Networking
Making the Switch to Bare Metal and Open NetworkingMaking the Switch to Bare Metal and Open Networking
Making the Switch to Bare Metal and Open NetworkingCumulus Networks
ย 
Cloud APIs Overview Tucker
Cloud APIs Overview   TuckerCloud APIs Overview   Tucker
Cloud APIs Overview TuckerInfrastructure 2.0
ย 
Service Mesh @Lara Camp Myanmar - 02 Sep,2023
Service Mesh @Lara Camp Myanmar - 02 Sep,2023Service Mesh @Lara Camp Myanmar - 02 Sep,2023
Service Mesh @Lara Camp Myanmar - 02 Sep,2023Hello Cloud
ย 
Mini-Track: Lessons from Public Cloud
Mini-Track: Lessons from Public CloudMini-Track: Lessons from Public Cloud
Mini-Track: Lessons from Public CloudNetwork Automation Forum
ย 
FreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceFreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceEvan McGee
ย 

Similar to The Real World - Plugging the Enterprise Into It (nodejs) (20)

Being HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeBeing HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on Purpose
ย 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming API
ย 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
ย 
SolarWinds Scalability for the Enterprise
SolarWinds Scalability for the EnterpriseSolarWinds Scalability for the Enterprise
SolarWinds Scalability for the Enterprise
ย 
Automation in Network Lifecycle Management - Bay Area Juniper Meetup
Automation in Network Lifecycle Management - Bay Area Juniper MeetupAutomation in Network Lifecycle Management - Bay Area Juniper Meetup
Automation in Network Lifecycle Management - Bay Area Juniper Meetup
ย 
Scaling asp.net websites to millions of users
Scaling asp.net websites to millions of usersScaling asp.net websites to millions of users
Scaling asp.net websites to millions of users
ย 
Spring and Pivotal Application Service - SpringOne Tour - Boston
Spring and Pivotal Application Service - SpringOne Tour - BostonSpring and Pivotal Application Service - SpringOne Tour - Boston
Spring and Pivotal Application Service - SpringOne Tour - Boston
ย 
E g innovations overview
E g innovations overviewE g innovations overview
E g innovations overview
ย 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClass
ย 
Network Automation with Salt and NAPALM: Introuction
Network Automation with Salt and NAPALM: IntrouctionNetwork Automation with Salt and NAPALM: Introuction
Network Automation with Salt and NAPALM: Introuction
ย 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE Architectures
ย 
How to best setup SharePoint 2013, Web Apps, Workflow Manager with Powershell
How to best setup SharePoint 2013, Web Apps, Workflow Manager with PowershellHow to best setup SharePoint 2013, Web Apps, Workflow Manager with Powershell
How to best setup SharePoint 2013, Web Apps, Workflow Manager with Powershell
ย 
SignalR Intro + WPDev
SignalR Intro + WPDevSignalR Intro + WPDev
SignalR Intro + WPDev
ย 
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
ย 
Otimizando servidores web
Otimizando servidores webOtimizando servidores web
Otimizando servidores web
ย 
Making the Switch to Bare Metal and Open Networking
Making the Switch to Bare Metal and Open NetworkingMaking the Switch to Bare Metal and Open Networking
Making the Switch to Bare Metal and Open Networking
ย 
Cloud APIs Overview Tucker
Cloud APIs Overview   TuckerCloud APIs Overview   Tucker
Cloud APIs Overview Tucker
ย 
Service Mesh @Lara Camp Myanmar - 02 Sep,2023
Service Mesh @Lara Camp Myanmar - 02 Sep,2023Service Mesh @Lara Camp Myanmar - 02 Sep,2023
Service Mesh @Lara Camp Myanmar - 02 Sep,2023
ย 
Mini-Track: Lessons from Public Cloud
Mini-Track: Lessons from Public CloudMini-Track: Lessons from Public Cloud
Mini-Track: Lessons from Public Cloud
ย 
FreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceFreeSWITCH as a Microservice
FreeSWITCH as a Microservice
ย 

More from Aman Kohli

New Payments Architectures and Infrastructures
New Payments Architectures and Infrastructures New Payments Architectures and Infrastructures
New Payments Architectures and Infrastructures Aman Kohli
ย 
Decentralisation - DISTRIBUTED COMPUTING ON A MASSIVE SCALE
Decentralisation - DISTRIBUTED COMPUTING ON A MASSIVE SCALEDecentralisation - DISTRIBUTED COMPUTING ON A MASSIVE SCALE
Decentralisation - DISTRIBUTED COMPUTING ON A MASSIVE SCALEAman Kohli
ย 
Mobile trends 2013
Mobile trends 2013Mobile trends 2013
Mobile trends 2013Aman Kohli
ย 
What's Next: Talk to ITT Tallaght Final Year Computing Graduates
What's Next: Talk to ITT Tallaght Final Year Computing GraduatesWhat's Next: Talk to ITT Tallaght Final Year Computing Graduates
What's Next: Talk to ITT Tallaght Final Year Computing GraduatesAman Kohli
ย 
Greasing The Wheels
Greasing The WheelsGreasing The Wheels
Greasing The WheelsAman Kohli
ย 
Frayed Edges - Architecture In Practice
Frayed Edges - Architecture In PracticeFrayed Edges - Architecture In Practice
Frayed Edges - Architecture In PracticeAman Kohli
ย 

More from Aman Kohli (6)

New Payments Architectures and Infrastructures
New Payments Architectures and Infrastructures New Payments Architectures and Infrastructures
New Payments Architectures and Infrastructures
ย 
Decentralisation - DISTRIBUTED COMPUTING ON A MASSIVE SCALE
Decentralisation - DISTRIBUTED COMPUTING ON A MASSIVE SCALEDecentralisation - DISTRIBUTED COMPUTING ON A MASSIVE SCALE
Decentralisation - DISTRIBUTED COMPUTING ON A MASSIVE SCALE
ย 
Mobile trends 2013
Mobile trends 2013Mobile trends 2013
Mobile trends 2013
ย 
What's Next: Talk to ITT Tallaght Final Year Computing Graduates
What's Next: Talk to ITT Tallaght Final Year Computing GraduatesWhat's Next: Talk to ITT Tallaght Final Year Computing Graduates
What's Next: Talk to ITT Tallaght Final Year Computing Graduates
ย 
Greasing The Wheels
Greasing The WheelsGreasing The Wheels
Greasing The Wheels
ย 
Frayed Edges - Architecture In Practice
Frayed Edges - Architecture In PracticeFrayed Edges - Architecture In Practice
Frayed Edges - Architecture In Practice
ย 

Recently uploaded

WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)
WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)
WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)Delhi Call girls
ย 
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...SUHANI PANDEY
ย 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...tanu pandey
ย 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtrahman018755
ย 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...SUHANI PANDEY
ย 
๐Ÿ“ฑDehradun Call Girls Service ๐Ÿ“ฑโ˜Ž๏ธ +91'905,3900,678 โ˜Ž๏ธ๐Ÿ“ฑ Call Girls In Dehradun ๐Ÿ“ฑ
๐Ÿ“ฑDehradun Call Girls Service ๐Ÿ“ฑโ˜Ž๏ธ +91'905,3900,678 โ˜Ž๏ธ๐Ÿ“ฑ Call Girls In Dehradun ๐Ÿ“ฑ๐Ÿ“ฑDehradun Call Girls Service ๐Ÿ“ฑโ˜Ž๏ธ +91'905,3900,678 โ˜Ž๏ธ๐Ÿ“ฑ Call Girls In Dehradun ๐Ÿ“ฑ
๐Ÿ“ฑDehradun Call Girls Service ๐Ÿ“ฑโ˜Ž๏ธ +91'905,3900,678 โ˜Ž๏ธ๐Ÿ“ฑ Call Girls In Dehradun ๐Ÿ“ฑ@Chandigarh #call #Girls 9053900678 @Call #Girls in @Punjab 9053900678
ย 
Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...
Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...
Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...Delhi Call girls
ย 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdfMatthew Sinclair
ย 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdfMatthew Sinclair
ย 
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts ServiceReal Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts ServiceEscorts Call Girls
ย 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...SUHANI PANDEY
ย 
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...tanu pandey
ย 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...SUHANI PANDEY
ย 
( Pune ) VIP Pimpri Chinchwad Call Girls ๐ŸŽ—๏ธ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls ๐ŸŽ—๏ธ 9352988975 Sizzling | Escorts | G...( Pune ) VIP Pimpri Chinchwad Call Girls ๐ŸŽ—๏ธ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls ๐ŸŽ—๏ธ 9352988975 Sizzling | Escorts | G...nilamkumrai
ย 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
ย 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"growthgrids
ย 
๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
ย 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...tanu pandey
ย 
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...SUHANI PANDEY
ย 

Recently uploaded (20)

WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)
WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)
WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)
ย 
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
ย 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
ย 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
ย 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
ย 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
ย 
๐Ÿ“ฑDehradun Call Girls Service ๐Ÿ“ฑโ˜Ž๏ธ +91'905,3900,678 โ˜Ž๏ธ๐Ÿ“ฑ Call Girls In Dehradun ๐Ÿ“ฑ
๐Ÿ“ฑDehradun Call Girls Service ๐Ÿ“ฑโ˜Ž๏ธ +91'905,3900,678 โ˜Ž๏ธ๐Ÿ“ฑ Call Girls In Dehradun ๐Ÿ“ฑ๐Ÿ“ฑDehradun Call Girls Service ๐Ÿ“ฑโ˜Ž๏ธ +91'905,3900,678 โ˜Ž๏ธ๐Ÿ“ฑ Call Girls In Dehradun ๐Ÿ“ฑ
๐Ÿ“ฑDehradun Call Girls Service ๐Ÿ“ฑโ˜Ž๏ธ +91'905,3900,678 โ˜Ž๏ธ๐Ÿ“ฑ Call Girls In Dehradun ๐Ÿ“ฑ
ย 
Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...
Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...
Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...
ย 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
ย 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
ย 
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts ServiceReal Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
ย 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
ย 
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
ย 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
ย 
( Pune ) VIP Pimpri Chinchwad Call Girls ๐ŸŽ—๏ธ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls ๐ŸŽ—๏ธ 9352988975 Sizzling | Escorts | G...( Pune ) VIP Pimpri Chinchwad Call Girls ๐ŸŽ—๏ธ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls ๐ŸŽ—๏ธ 9352988975 Sizzling | Escorts | G...
ย 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
ย 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
ย 
๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
ย 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
ย 
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
ย 

The Real World - Plugging the Enterprise Into It (nodejs)

  • 1. THE REAL WORLD Plugging The Enterprise Into It.
  • 2. MOBILE ARCHITECT โ€ฃLove Distributed Systems โ€ฃEntropy Reducer โ€ฃPayment systems โ€ฃR&D Work โ€ฃB2E and Commercial Banking Apps Experience โ€ฃ Front Office Trading Systems โ€ฃ Messaging Middleware Integration โ€ฃ Big Systems โ€ฃ C/C++/C#/Java MORE โ€ฃ @akohli https://slideshare.net/akohli series 2, episode 22, โ€œDaddy Pigโ€™s Officeโ€ http:// www.channel5.com/shows/peppa-pig/episodes/daddy-pigs-office
  • 3. TODAY Why Node What we want to do Node as the underpinning of real world or electronic asset interaction Backing our interactions, eventing services Not so much about monolith deconstruction What we did Initial proxy and protocol Our performance and scalability testing
  • 4.
  • 6.
  • 7. WHY NODE? โœ” Node โ€ข Asynchronous Eventing Model โ€ข We live in an async nonblocking world โ€ข Ideal for mobile and sensor applications โ€ข Everyone knows Javascript, right? โ€ข Community โ€ข Diverse protocol and lots of modules โ€ข Rapid development and Expediency
  • 8. HOMOLOGATED or how we can use it in a big company โ€ข Node is approved for internal usage โ€ข Less Yak Shaving than other solutions โ€ข different at least โ€ข good internal community beware of dog, staff only
  • 9. โ€œWalmart has had good success with HAPI and Nodeโ€ - @adam_baldwin โ€œNode is good. Iโ€™ve heard good things - @ eoinbrazil about HAPIโ€
  • 11. ENTERPRISE MOBILE APPLICATIONS โ€ข Plurality of systems, services โ€ข web resources โ€ข web sites โ€ข Connectivity challenges โ€ข direct โ€ข mediated โ€ข Security โ€ข AuthN โ€ข AuthZ โ€ข Data Encryption at rest
  • 12. Security Pass Sensors Employee Devices The Physical World THE REFLEKTOR Security Services AuthZ AuthN โ€ฆ Eventing Engine Bridge Payment Services Access Services Printing Services the Reflektor Bridge and New Services App Services and Resources
  • 14. IT AINโ€™T EASY but we gotta try
  • 17. THE FLOW โ€ข The Protocol โ€ข Security - Gateway Access โ€ข Federated Identity, my foot โ€ข NTLM, has itโ€™s own approach
  • 18. PROTOCOL Request json body target headers body/post-data loginfo request = { URL = "http://www.citigroup.net/", method = "GET", timeout = 19500, clientInfo = { identifier = โ€œโ€ฆEโ€, model = "iPad Simulator", systemName = "iPhone OS", systemVersion = "7.1", }, headers = { Accept = "text/html,application/xhtml +xml,application/xml;q=0.9,*/*;q=0.8", Cookie = "CGPLNG=ENG; JSESSIONID_CGNR3=..โ€, "User-Agent" = "Mozilla/5.0 (iPad; CPU OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/ 11D167" }, logEntries = [ { URL = โ€œhttps://cinternal.site/target/fooaโ€, downstreamDuration = 656, httpMethod = "GET", roundtripDuration = 3461, statusCode = 200 } ] }
  • 19. RESPONSE body = โ€œ<base64>", code = 200, duration = 31, headers = { "Accept-Ranges" = [ "bytes" ], "Content-Length" = [ 225 ], "Content-Type" = [ "text/html" ], Date = [ "Thu, 29 May 2014 15:28:29 GMT" ], Etag = [ ""e1-4e50c74f"" ], "Last-Modified" = [ "Sun, 21 Aug 2011 08:52:31 GMT" ] }, message = "OK" }
  • 20. NTLM AUTHENTICATION Enterprise authentication protocol (Microsoft). ! NTLM requires all phases to take place across a single HTTP connection. ! NTLM messages are sent and received as request headers. ! The serverโ€™s response from the NTLM type 3 message is the requested content. ! This authentication process must be completed for every requested resource, unless an open connection is maintained.
  • 21. WORKING Implementation Challenges โ€ข Storage of password on mobile device is prohibited, but is required in the authentication process. โ€ข Persistent connection not available. โ€ข Latency issues โ€“ 3 requests for every web resource. Solution โ€ข Ported from Apache Java implementation to Node.js. โ€ข Hashed username / password pair stored on device, transmitted to server for authentication rather than raw password. โ€ข hmac_md5(username, md4(password)) โ€ข NTLM message calculation split between client app and proxy server. โ€ข Defaults used and optional parameters omitted โ€“ simplified messages. โ€ข Observed desktop browsers wait for a 401 before beginning the authentication process. Pre-emptively sending the username / password hash eliminates the initial 401 response. Process is reduced from 3 direct requests to a single client request, mapped to 2 proxy requests.
  • 23. GITHUB.COM/SPUMKO/FLOD $ flod -n 2000 -t 1500 -c 100..1000 -v http://target-place ! !
  • 24. GITHUB.COM/SPUMKO/FLOD num req per batch range of concurrent request per batch - $ flod -n 2000 -t 1500 -c 100..1000 -v http://target-place ! ! timeout โ€œrateโ€
  • 25. FLOD OUTPUT ## 6k page results ec2-user@ip-10-199-51-233 node-hapi]$ flod -n 2000 -t 1500 -c 100..1000 -v http://localhost/loremipsum-6k-ish.html This is Flod, version 0.2.2 Copyright 2013 Walmart, http://github.com/spumko/flod ! Benchmarking (hold on)... ! Server Requests/sec Latency (ms) --------------------------------------- ------------ --------------- http://localhost/loremipsum-6k-ish.html 100 96.48 ยฑ 18.54 http://localhost/loremipsum-6k-ish.html 200 164.24 ยฑ 17.03 http://localhost/loremipsum-6k-ish.html 300 263.80 ยฑ 62.44 http://localhost/loremipsum-6k-ish.html 400 359.61 ยฑ 49.20 http://localhost/loremipsum-6k-ish.html 500 437.66 ยฑ 58.69 http://localhost/loremipsum-6k-ish.html 600 481.29 ยฑ 120.04 http://localhost/loremipsum-6k-ish.html 700 606.74 ยฑ 114.45 http://localhost/loremipsum-6k-ish.html 800 555.08 ยฑ 133.74 http://localhost/loremipsum-6k-ish.html 900 674.08 ยฑ 190.91 http://localhost/loremipsum-6k-ish.html 1000 763.27 ยฑ 69.25 ## running with high timeout - doubling responses times vs nginx direct [ec2-user@ip-10-199-51-233 node-hapi]$ ../node_modules/flod/bin/flod -n 2000 -t 4500 -c 100..1000 -v http://localhost:8000 This is Flod, version 0.2.2 Copyright 2013 Walmart, http://github.com/spumko/flod ! Benchmarking (hold on)... ! Server Requests/sec Latency (ms) --------------------- ------------ ---------------- http://localhost:8000 100 200.55 ยฑ 39.40 http://localhost:8000 200 389.54 ยฑ 67.39 http://localhost:8000 300 558.14 ยฑ 112.57 http://localhost:8000 400 777.09 ยฑ 160.01 http://localhost:8000 500 970.61 ยฑ 305.76 http://localhost:8000 600 1032.37 ยฑ 274.44 http://localhost:8000 700 1216.49 ยฑ 249.94 http://localhost:8000 800 1483.31 ยฑ 690.64 http://localhost:8000 900 1559.54 ยฑ 805.31 http://localhost:8000 1000 1909.23 ยฑ 845.81
  • 26. MODIFYING FLOD โ€ข modified server to pull our decorated response timing information โ€ข modified reporting/logging to include this information โ€ข hope to contribute back to mainline
  • 27. ENVIRONMENT Machine OS Type Processor Cores Memory Int Server RHEL 6.4 VM Xeon 2.6GHz 2 4GB Prod Server Windows Server 2k8r2 VM Xeon 1.8 Ghz 4 6GB Dev Mac Mini Full i5 2.5 GHz 2 8 GB โ€ข HTTP 1.1 no Keep-Alive, request payload is json โ€ข Client iOS ObjectiveC;Server is Node + Hapijs (with Some Good Monitoring)
  • 28. SCENARIOS โ€ข Closed network, direct connection, Mac to Mac โ€ข Client server on a redhat VM, loopback. Redhat VM โ€ข Redhat client to Windows Server via network, Redhat to Windows โ€ข via Mobile network/wifi could only support 100 transactions/s because of latency Req/s Response (ms) Mac to Mac 1000 2000 Redhat VM 1000 8500 RH to Windows 1000 30, 000 External 100 17, 000
  • 29. RESULTS โ€ข Consistent proxied service response โ€ข ~20ms Mac โž” Mac โ€ข ~250ms RHEL โž” Windows Server โ€ข Gateway service < 50 ms โ€ข We need better concurrency, request servicing โ€ข Infrastructure adds significant overhead
  • 30. RESULTS 100# 200# 300# 400# 500# 600# 700# 800# 900# 1000# 70000# 60000# 50000# 40000# 30000# 20000# 10000# 0# Requests'per'second' Milliseconds(ms)' 99th'Percen7les' Mac#To#Mac# RedhatVM# Redhat#to#Windows#
  • 33. TABULAR Request Mac To Mac RHEL to Windows 100/s 483 17,235 200/s 783 21,209 300/s 1127 17,479 400/s 1493 22,937 500/s 1859 28,872 600/s 2171 34,253 700/s 2487 39,878 800/s 2878 46,970 900/s 3285 51,083 1000/s 3555 57,189
  • 35. EXPERIENCE โ€ข Enterprise and Legal approvals hard โ€ข We are ahead of Ops, so waiting for VMs and infrastructure to catch up - software, machines, and network โ€ข Some bits of node need tightening - especially around security and password storage โ€ข Still learning and it is fun!
  • 36. SCALABILITY PACKETS โ€ข Pile of VMs to auto-scale โ€ข Need elastic environment with a smart load balancer and configuration management โ€ข Great Details on Best practice โ€ข https://gist.github.com/hueniverse/7686452
  • 39. NOUN PROJECTS THANKS Smartphone designed by James Fenton from the Noun Project ! Creative Commons โ€“ Attribution (CC BY 3.0) Identification designed by Mark Shorter from the Noun Project Ibeacon designed by Stรฉphanie Rusch from the Nount Project ! Creative Commons โ€“ Attribution (CC BY 3.0) Arduino designed by uizin from the Noun Project !