SlideShare a Scribd company logo
Using Node.js to improve
                 the performance of
             Mobile apps and Mobile web
                              Tom Hughes-Croucher
                           Jetpacks for Dinosaurs, LLC


tom@jetpacksfordinosaurs.com
@sh1mmer
Scalable Server-Side Code with JavaScript



           Who is Tom?
     •   Wrote W3C Standards

     •
     •
         10+ years in the web industry

         Worked on projects for: Tesco,
         NASA, Walmart, MySpace, etc
                                             Node                     Up and Running



     •   ~5 years at Yahoo! including .com
                                                                     Tom Hughes-Croucher

     •   Node team at Joyent

@sh1mmer
•   You probably shouldn't let Twitter name
         your company


     •   Clients include

         •   Walmart

         •   MySpace

         •   Various Fortune 500 companies

         •   Multiple stealth startups



@sh1mmer
This is a talk about why
              cell phones suck.


@sh1mmer
@sh1mmer
Radio waves suck
           (at least compared to fibre or copper)




@sh1mmer
http://developer.yahoo.com/blogs/ydn/posts/2009/10/a_engineers_gui/




@sh1mmer
Radio vs. buildings



@sh1mmer
@sh1mmer
@sh1mmer
@sh1mmer
Desktop                                     Mobile




           http://www.webperformancetoday.com/2012/04/02/mobile-versus-desktop-latency/

@sh1mmer
Ookla/speedtest.net
           via http://www.slideshare.net/patrickmeenan/velocity-2012-taming-the-mobile-beast/22
@sh1mmer
Effect of latency on servers



@sh1mmer
Shielding Frontends



@sh1mmer
nginx
           haproxy               web services
                     frontends
             ATS                    / data
           varnish




@sh1mmer
var client = net.connect(80, domain, function() {
             client.write("GET / HTTP/1.1rn");
             t1 = (new Date()).getTime();
           });

           client.on('end', function() {
             t2 = (new Date()).getTime();
             output.write(domain + ' ' + ((t2-t1)/1000) + 'sn');
           });




@sh1mmer
Sample of Alexa 5000
           macupdate.com       442.3
           uzai.com            403.658
           wired.jp            238.848
           facilisimo.com      205.159
           mycokerewards.com   202.757
           rbc.cn              192.354
           moviesmobile.net    183.157
           stop55.com          145.927
           dir.bg              137.982
           carrefour.fr        112.789
           sifyitest.com       111.171




@sh1mmer
Event-driven Frontends



@sh1mmer
Client → Server   Server → DB




                    Computation     Computation
@sh1mmer
Not an event frontend



@sh1mmer
@sh1mmer
Server




@sh1mmer
Request




@sh1mmer
@sh1mmer
Event-driven frontend



@sh1mmer
Place-holder




@sh1mmer
@sh1mmer
Shared
    Work
  Resources




@sh1mmer
Memory operations


@sh1mmer
var x = "I am a string"

           ~1ns Running 1 instruction
           2ns Data from l1 cpu cache
           5ns Data from l2 cpu cache
           80ns Data from ram




@sh1mmer
@sh1mmer
Mobile latency


@sh1mmer
@sh1mmer
100 Blue Whales

                         Cat
@sh1mmer
"They went from running 15 servers with 15
           instances (virtual servers) on each physical machine,
           to just four instances that can handle double the
           traffic."




                                                   http://venturebeat.com/2011/08/16/linkedin-node/
@sh1mmer
Not just simple applications



@sh1mmer
@sh1mmer
@sh1mmer
First page load vs. Client MVC



@sh1mmer
@sh1mmer
http://www.belshe.com/2010/05/24/more-bandwidth-doesnt-matter-much/
@sh1mmer
Bandwidth




           Latency               Device capability




@sh1mmer
Barfing data at 3G



@sh1mmer
                                                                                                
                        
                                                    
                                                                             
                                                                                                         




                                                                                                                      
                                                                                                         
                                                                        
                                                   
                          
                                
                                      
                                                          
                                                            
                                                                                  
                                                                                 
                                                                                                          
                                                                                                         




                                                                                                                          
                                                                                
                                                           
                                      




                                                                                                                          
                                                                                  
                                                                                                
                                                            
                                                                                                                   
                                        
                                                 
                                                                                                         
                                                          
                                       
           
                                
                                      
                                      
                                                                   
                                                                                 
                                                                                                                    
                                                                          
                                                                                                        
                                                            
                                                                                     
                                                                                                                               
                                        
                                        
                                                                   
                               
                                      
                                      
                                      
                                                                 
                                                                    
                                                           
                                                                            
                                                                                          
                                                                                                            




                                                                                                                          
                                                                                    
                                                                                             
                                                             
                                                                       
                                       
                                       
                                                                                                     
                                                             
           
                                                                       
                                                                                    
                                                                                                                               
                                                 
                                       
                                                     
                                                     
                                       
                                       
                               
                                      
                                      
                                                        
                                                            
                                                                                             
                                                                                                   
                                                                                            
                                                                                                          
                                                                                                           
                                                                                    
                                                                  
                                                                                                                              

                                                                    
                                            
                                                                                             
                                                                                                                               
                                       
                                       
                                       
                                
                                       
                                       
                                                                  
                                                                
                                                                                                                               
                                                                                    
                                                             
                                      
                                                                          
                                       
           

                                                   
                                                                                                      
                                                                                           
                                                                                    
                                                                                                                               
                                                                                    
                                                                                             
                                                             
                                                                                              
                                       
                                       
                                                                                             
                                                                                                                               
                                      
                                                            
           
                                                           
                                                                        
                               
                                                            
                                                                                   
                                                                                                          




@sh1mmer
@sh1mmer
Clientside templating



@sh1mmer
@sh1mmer
Node.js allows you to tune
           rendering between client and
           server based on the network.

@sh1mmer
HTML                                         JSON




       More bandwidth                  Less bandwidth
     Less client processing         More client processing
        Battery friendly      Cheaper for you bandwidth/server
                                 Cheaper for them bandwidth

@sh1mmer
Summary

     •   Node.js allows you to:

         •   Manage resources with unreliable mobile data connections

         •   Choose where to apply rendering

         •   Pick the right rendering solution for the right scenario


@sh1mmer
Questions
tom@jetpacksfordinosaurs.com
        @sh1mmer

More Related Content

Similar to Using Node.js to improve the performance of Mobile apps and Mobile web

RIch User Experience
RIch User ExperienceRIch User Experience
RIch User Experience
Louise Thomson
 
Cinefilia Demo - EGEE User Forum 2009
Cinefilia Demo - EGEE User Forum 2009Cinefilia Demo - EGEE User Forum 2009
Cinefilia Demo - EGEE User Forum 2009
Leandro Ciuffo
 
Ugif 04 2011 informix notonlypointofsales-fr-001
Ugif 04 2011   informix notonlypointofsales-fr-001Ugif 04 2011   informix notonlypointofsales-fr-001
Ugif 04 2011 informix notonlypointofsales-fr-001UGIF
 
A 4 A Prods. And Services1lgmc
A 4 A Prods. And Services1lgmcA 4 A Prods. And Services1lgmc
A 4 A Prods. And Services1lgmcjollyroll59
 
Design improv final pres
Design improv final presDesign improv final pres
Design improv final pres
Nathan Waterhouse
 
Product Matrix1 97
Product Matrix1 97Product Matrix1 97
Product Matrix1 974docshare
 
Product Matrix
Product MatrixProduct Matrix
Product Matrix4docshare
 
Product Matrix1
Product Matrix1Product Matrix1
Product Matrix14docshare
 
Product Matrix1
Product Matrix1Product Matrix1
Product Matrix14docshare
 
Make my viral
Make my viralMake my viral
Make my viralNINANC
 
Living Company vol.1 Review
Living Company vol.1 ReviewLiving Company vol.1 Review
Living Company vol.1 Review
Hyuncheol Jeon
 
Marcom Buzz September- October, 2012
Marcom Buzz September- October, 2012Marcom Buzz September- October, 2012
Marcom Buzz September- October, 2012marcombuzz
 
Open Source Search Applications
Open Source Search ApplicationsOpen Source Search Applications
Open Source Search Applications
Lucidworks (Archived)
 
PR Coverage: 15 August - 31 August, 2012
PR Coverage: 15 August - 31 August, 2012PR Coverage: 15 August - 31 August, 2012
PR Coverage: 15 August - 31 August, 2012marcombuzz
 
Workforce Needs of the California Solar Industry
Workforce Needs of the California Solar IndustryWorkforce Needs of the California Solar Industry
Workforce Needs of the California Solar Industry
Joel West
 
Chap Drive 1
Chap Drive 1Chap Drive 1
Chap Drive 1
Glenn Klith Andersen
 
웹데브모바일 3월 세미나 자료 : Client side storage in html5
웹데브모바일 3월 세미나 자료 : Client side storage in html5웹데브모바일 3월 세미나 자료 : Client side storage in html5
웹데브모바일 3월 세미나 자료 : Client side storage in html5
웹데브모바일
 
Business plan final et new
Business plan  final et newBusiness plan  final et new
Business plan final et newsanjayk66
 

Similar to Using Node.js to improve the performance of Mobile apps and Mobile web (20)

RIch User Experience
RIch User ExperienceRIch User Experience
RIch User Experience
 
Cinefilia Demo - EGEE User Forum 2009
Cinefilia Demo - EGEE User Forum 2009Cinefilia Demo - EGEE User Forum 2009
Cinefilia Demo - EGEE User Forum 2009
 
Liberty Overview 11 22 09 Dreamquest
Liberty Overview 11 22 09 DreamquestLiberty Overview 11 22 09 Dreamquest
Liberty Overview 11 22 09 Dreamquest
 
Ugif 04 2011 informix notonlypointofsales-fr-001
Ugif 04 2011   informix notonlypointofsales-fr-001Ugif 04 2011   informix notonlypointofsales-fr-001
Ugif 04 2011 informix notonlypointofsales-fr-001
 
A 4 A Prods. And Services1lgmc
A 4 A Prods. And Services1lgmcA 4 A Prods. And Services1lgmc
A 4 A Prods. And Services1lgmc
 
Design improv final pres
Design improv final presDesign improv final pres
Design improv final pres
 
Product Matrix1 97
Product Matrix1 97Product Matrix1 97
Product Matrix1 97
 
Product Matrix
Product MatrixProduct Matrix
Product Matrix
 
Product Matrix1
Product Matrix1Product Matrix1
Product Matrix1
 
Product Matrix1
Product Matrix1Product Matrix1
Product Matrix1
 
Make my viral
Make my viralMake my viral
Make my viral
 
Living Company vol.1 Review
Living Company vol.1 ReviewLiving Company vol.1 Review
Living Company vol.1 Review
 
Marcom Buzz September- October, 2012
Marcom Buzz September- October, 2012Marcom Buzz September- October, 2012
Marcom Buzz September- October, 2012
 
Open Source Search Applications
Open Source Search ApplicationsOpen Source Search Applications
Open Source Search Applications
 
نشاط 3
نشاط 3نشاط 3
نشاط 3
 
PR Coverage: 15 August - 31 August, 2012
PR Coverage: 15 August - 31 August, 2012PR Coverage: 15 August - 31 August, 2012
PR Coverage: 15 August - 31 August, 2012
 
Workforce Needs of the California Solar Industry
Workforce Needs of the California Solar IndustryWorkforce Needs of the California Solar Industry
Workforce Needs of the California Solar Industry
 
Chap Drive 1
Chap Drive 1Chap Drive 1
Chap Drive 1
 
웹데브모바일 3월 세미나 자료 : Client side storage in html5
웹데브모바일 3월 세미나 자료 : Client side storage in html5웹데브모바일 3월 세미나 자료 : Client side storage in html5
웹데브모바일 3월 세미나 자료 : Client side storage in html5
 
Business plan final et new
Business plan  final et newBusiness plan  final et new
Business plan final et new
 

More from Tom Croucher

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev ConfTom Croucher
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Tom Croucher
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfTom Croucher
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Tom Croucher
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleTom Croucher
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialTom Croucher
 
Lessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaLessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaTom Croucher
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Tom Croucher
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...Tom Croucher
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
Tom Croucher
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti codeTom Croucher
 
Doing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthDoing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions South
Tom Croucher
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupTom Croucher
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...Tom Croucher
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010Tom Croucher
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming
Tom Croucher
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetTom Croucher
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stack
Tom Croucher
 

More from Tom Croucher (20)

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent Conf
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scale
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
 
Lessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaLessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @Media
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti code
 
Doing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthDoing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions South
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010
 
Sf perf
Sf perfSf perf
Sf perf
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stack
 

Recently uploaded

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 

Using Node.js to improve the performance of Mobile apps and Mobile web

  • 1. Using Node.js to improve the performance of Mobile apps and Mobile web Tom Hughes-Croucher Jetpacks for Dinosaurs, LLC tom@jetpacksfordinosaurs.com @sh1mmer
  • 2. Scalable Server-Side Code with JavaScript Who is Tom? • Wrote W3C Standards • • 10+ years in the web industry Worked on projects for: Tesco, NASA, Walmart, MySpace, etc Node Up and Running • ~5 years at Yahoo! including .com Tom Hughes-Croucher • Node team at Joyent @sh1mmer
  • 3. You probably shouldn't let Twitter name your company • Clients include • Walmart • MySpace • Various Fortune 500 companies • Multiple stealth startups @sh1mmer
  • 4. This is a talk about why cell phones suck. @sh1mmer
  • 6. Radio waves suck (at least compared to fibre or copper) @sh1mmer
  • 12. Desktop Mobile http://www.webperformancetoday.com/2012/04/02/mobile-versus-desktop-latency/ @sh1mmer
  • 13. Ookla/speedtest.net via http://www.slideshare.net/patrickmeenan/velocity-2012-taming-the-mobile-beast/22 @sh1mmer
  • 14. Effect of latency on servers @sh1mmer
  • 16. nginx haproxy web services frontends ATS / data varnish @sh1mmer
  • 17. var client = net.connect(80, domain, function() { client.write("GET / HTTP/1.1rn"); t1 = (new Date()).getTime(); }); client.on('end', function() { t2 = (new Date()).getTime(); output.write(domain + ' ' + ((t2-t1)/1000) + 'sn'); }); @sh1mmer
  • 18. Sample of Alexa 5000 macupdate.com 442.3 uzai.com 403.658 wired.jp 238.848 facilisimo.com 205.159 mycokerewards.com 202.757 rbc.cn 192.354 moviesmobile.net 183.157 stop55.com 145.927 dir.bg 137.982 carrefour.fr 112.789 sifyitest.com 111.171 @sh1mmer
  • 20. Client → Server Server → DB Computation Computation @sh1mmer
  • 21. Not an event frontend @sh1mmer
  • 29. Shared Work Resources @sh1mmer
  • 31. var x = "I am a string" ~1ns Running 1 instruction 2ns Data from l1 cpu cache 5ns Data from l2 cpu cache 80ns Data from ram @sh1mmer
  • 35. 100 Blue Whales Cat @sh1mmer
  • 36. "They went from running 15 servers with 15 instances (virtual servers) on each physical machine, to just four instances that can handle double the traffic." http://venturebeat.com/2011/08/16/linkedin-node/ @sh1mmer
  • 37. Not just simple applications @sh1mmer
  • 40. First page load vs. Client MVC @sh1mmer
  • 41.
  • 44. Bandwidth Latency Device capability @sh1mmer
  • 45. Barfing data at 3G @sh1mmer
  • 46.                                                                                                                                                                                    @sh1mmer
  • 50. Node.js allows you to tune rendering between client and server based on the network. @sh1mmer
  • 51. HTML JSON More bandwidth Less bandwidth Less client processing More client processing Battery friendly Cheaper for you bandwidth/server Cheaper for them bandwidth @sh1mmer
  • 52. Summary • Node.js allows you to: • Manage resources with unreliable mobile data connections • Choose where to apply rendering • Pick the right rendering solution for the right scenario @sh1mmer

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n