SlideShare una empresa de Scribd logo
1 de 53
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

Más contenido relacionado

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

Cinefilia Demo - EGEE User Forum 2009
Cinefilia Demo - EGEE User Forum 2009Cinefilia Demo - EGEE User Forum 2009
Cinefilia Demo - EGEE User Forum 2009Leandro 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
 
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 ReviewHyuncheol Jeon
 
Marcom Buzz September- October, 2012
Marcom Buzz September- October, 2012Marcom Buzz September- October, 2012
Marcom Buzz September- October, 2012marcombuzz
 
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 IndustryJoel West
 
웹데브모바일 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 a 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
 

Más de 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 SouthTom 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 stackTom Croucher
 

Más de 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
 

Último

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 

Último (20)

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 

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

Notas del editor

  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