SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

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

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

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

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

Kürzlich hochgeladen

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Kürzlich hochgeladen (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

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

Hinweis der Redaktion

  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