SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
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 
!

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
Realtime MVC with Sails.js
Realtime MVC with Sails.jsRealtime MVC with Sails.js
Realtime MVC with Sails.jsSerdar Dogruyol
 
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
 

Was ist angesagt? (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
 

Ähnlich wie 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
 
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
 
FreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceFreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceEvan McGee
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...gajnagarg
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...kajalverma014
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样ayvbos
 
"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
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理F
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查ydyuyu
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiMonica Sydney
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查ydyuyu
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge GraphsEleniIlkou
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsMonica Sydney
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrHenryBriggs2
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样ayvbos
 
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
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdfMatthew Sinclair
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsMonica Sydney
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirtrahman018755
 
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsIndian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsMonica Sydney
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制pxcywzqs
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.krishnachandrapal52
 

Kürzlich hochgeladen (20)

Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
 
"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"
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
 
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
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsIndian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.
 

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 !