SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Länger schlafen mit
Node.js
@ OOP 2013




                      Folie 1
                      24. Januar 2013




                      Christian Heger

                      © Zühlke 2013
Eine vernetzte Zukunft.
Zwei Probleme.
Festes Schema ist von Übel.
Be conservative in what you do,
be liberal in what you accept from others.
Antenna             Web
                    App

Antenna

           Bus      Front


Antenna


          Persist
Antenna
Antenna
                          Web
          Hub   Front
                          App
Antenna

                Front


Antenna

          Hub   Persist

Antenna
Und das ist alles, was man über Node
wissen muss:




1.
2.
3.
Länger schlafen mit Node.js | Christian Heger   Bild 2: David Benbennick   24. Januar 2013   Folie 7   © Zühlke 2013
Message Loop
Multi-Threaded vs. Single Threaded




Länger schlafen mit Node.js | Christian Heger   24. Januar 2013   Folie 9   © Zühlke 2013
Multi-Threaded vs. Single Threaded




Länger schlafen mit Node.js | Christian Heger   24. Januar 2013   Folie 10   © Zühlke 2013
Multi-Threaded vs. Single Threaded




Länger schlafen mit Node.js | Christian Heger   24. Januar 2013   Folie 11   © Zühlke 2013
Event Emitter




Länger schlafen mit Node.js | Christian Heger   24. Januar 2013   Folie 12   © Zühlke 2013
Continuation Passing Style




                                                Callback   Callback                 Callback
                    Event




Länger schlafen mit Node.js | Christian Heger                     24. Januar 2013      Folie 13   © Zühlke 2013
Und wie soll das gehen?




Länger schlafen mit Node.js | Christian Heger   24. Januar 2013   Folie 14   © Zühlke 2013
Streams
Streams



                                                             a.pipe(b);




                                                Readable Stream      Writable Stream

                                                       a                             b

  a.on('readable', callback);                                     var sent = b.write(data);
  var data = a.read(size);




Länger schlafen mit Node.js | Christian Heger                      24. Januar 2013       Folie 16   © Zühlke 2013
Streams



                                                a.pipe(b);              b.pipe(c);




                                                             Duplex Stream
                                    a                                                                     c
                                                                  b




Länger schlafen mit Node.js | Christian Heger                                24. Januar 2013   Folie 17       © Zühlke 2013
Streams



                                                a.pipe(b).pipe(a);




Länger schlafen mit Node.js | Christian Heger                   24. Januar 2013   Folie 18   © Zühlke 2013
Packages
Was ist drin?
Package.json




Länger schlafen mit Node.js | Christian Heger   24. Januar 2013   Folie 20   © Zühlke 2013
Dependency management




Länger schlafen mit Node.js | Christian Heger   24. Januar 2013   Folie 21   © Zühlke 2013
Module Hierarchy




Länger schlafen mit Node.js | Christian Heger   24. Januar 2013   Folie 22   © Zühlke 2013
Web Applications



• Express
       – Sinatra-ähnliches Framework
       – Routing
       – Template-basierte View Engines


• Passport
       – Authentifizierung gegen alle gängigen Provider
       – OAuth, OpenID, Facebook Connect


• ASP.NET                                       MVC < Node.js < RoR


Länger schlafen mit Node.js | Christian Heger                         24. Januar 2013   Folie 23   © Zühlke 2013
Real time web



 • Socket.IO
        – Eigenes Protokoll
        – Sockets, Flash, AJAX, IFrame, JSONP
        – Nicht interoperabel


 • ws
        – Nur Web Sockets
        – Aber das richtig: Autobahn-Testsuite
        – Interoperabel




Länger schlafen mit Node.js | Christian Heger    24. Januar 2013   Folie 24   © Zühlke 2013
One
   million
connections!
Deployment
Blue/Green Deployment




                                                         Web                       Services

                                                         Blue                        Blue
                                                         Slice                       Slice
          Users                                 Router
                                                         Green                      Green
                                                         Slice                      Slice




Länger schlafen mit Node.js | Christian Heger                    24. Januar 2013    Folie 27   © Zühlke 2013
Fleet




                                                Drone    Git




                            Drone               Hub     Drone




                                                Drone


Länger schlafen mit Node.js | Christian Heger                  24. Januar 2013   Folie 28   © Zühlke 2013
Seaport



                                                Register Antenna@1.5.1
                                                                               Sea
          Service
                                                                               port
                                                    Use port 8731




            Client



Länger schlafen mit Node.js | Christian Heger                            24. Januar 2013   Folie 29   © Zühlke 2013
Länger schlafen?
Programmierzeit
15 Tage
(davon 10 ohne jede Erfahrung in JavaScript)




1 Prozess === 1 Core
3 GB RAM
VMWare ESX Server

3000 – 4000
Nachrichten / Sekunde
3 Wochen lang
Alles Bestens?
Und privat so?
Hinweise


•      LXJS 2012 – Substack on Streams
       www.youtube.com/watch?v=lQAV3bPOYHo

•      NodeUp Podcast
       nodeup.com

•      Stream Handbook
       github.com/substack/stream-handbook

•      Blue/Green Deployment
       martinfowler.com/bliki/BlueGreenDeployment.html

•      Semantic Versioning
       semver.org/

•      Autobahn Web Sockets Test Suite
       http://autobahn.ws/

•      A million connections
       http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/

Länger schlafen mit Node.js | Christian Heger               24. Januar 2013   Folie 34   © Zühlke 2013
Fragen?
Meinungen?
Kommentare?




Christian Heger
about.me/christian.heger

Diese Folien
http://slidesha.re/Wn9scy

Contenu connexe

En vedette

Troisième Oeil du Marin : Projet de collaboration transfrontalière intercluster
Troisième Oeil du Marin : Projet de collaboration transfrontalière interclusterTroisième Oeil du Marin : Projet de collaboration transfrontalière intercluster
Troisième Oeil du Marin : Projet de collaboration transfrontalière interclusterBIHARTEAN
 
Drone A.R
Drone A.RDrone A.R
Drone A.Reidani
 
Blue Pearl Hotel - Hôtel sous marin - Projet touristique durable innovant
Blue Pearl Hotel - Hôtel sous marin - Projet touristique durable innovantBlue Pearl Hotel - Hôtel sous marin - Projet touristique durable innovant
Blue Pearl Hotel - Hôtel sous marin - Projet touristique durable innovantGuillaume CROMER
 
Drone diapositivas
Drone diapositivasDrone diapositivas
Drone diapositivasnuris_hr
 
Drone it - retour d'expériences
Drone it - retour d'expériencesDrone it - retour d'expériences
Drone it - retour d'expériencesRaphael Labbé
 
Les drones
Les dronesLes drones
Les dronesdenis
 
Formation « Piloter son drone & Réaliser des prises de vue aérienne » PIXIEL...
 Formation « Piloter son drone & Réaliser des prises de vue aérienne » PIXIEL... Formation « Piloter son drone & Réaliser des prises de vue aérienne » PIXIEL...
Formation « Piloter son drone & Réaliser des prises de vue aérienne » PIXIEL...Esperluette & Associés
 
Intercambiador de moncloa acceso 1 y 2 jcd me 2011
Intercambiador de moncloa acceso 1 y 2 jcd me 2011Intercambiador de moncloa acceso 1 y 2 jcd me 2011
Intercambiador de moncloa acceso 1 y 2 jcd me 2011Félix Bermejo
 
Strategie federation drone valley 2017
Strategie federation drone valley 2017Strategie federation drone valley 2017
Strategie federation drone valley 2017Bernard Van Lysebetten
 
13 06-12 presentation drone it
13 06-12 presentation drone it13 06-12 presentation drone it
13 06-12 presentation drone itAlice Labrousse
 
un drone-campus à Nantes ?
un drone-campus à Nantes ?un drone-campus à Nantes ?
un drone-campus à Nantes ?drone-campus
 

En vedette (15)

Troisième Oeil du Marin : Projet de collaboration transfrontalière intercluster
Troisième Oeil du Marin : Projet de collaboration transfrontalière interclusterTroisième Oeil du Marin : Projet de collaboration transfrontalière intercluster
Troisième Oeil du Marin : Projet de collaboration transfrontalière intercluster
 
Drone A.R
Drone A.RDrone A.R
Drone A.R
 
Todo sobre los drones
Todo sobre los dronesTodo sobre los drones
Todo sobre los drones
 
Blue Pearl Hotel - Hôtel sous marin - Projet touristique durable innovant
Blue Pearl Hotel - Hôtel sous marin - Projet touristique durable innovantBlue Pearl Hotel - Hôtel sous marin - Projet touristique durable innovant
Blue Pearl Hotel - Hôtel sous marin - Projet touristique durable innovant
 
Drones
DronesDrones
Drones
 
Drone
DroneDrone
Drone
 
Drone diapositivas
Drone diapositivasDrone diapositivas
Drone diapositivas
 
Drone it - retour d'expériences
Drone it - retour d'expériencesDrone it - retour d'expériences
Drone it - retour d'expériences
 
Les drones
Les dronesLes drones
Les drones
 
Formation « Piloter son drone & Réaliser des prises de vue aérienne » PIXIEL...
 Formation « Piloter son drone & Réaliser des prises de vue aérienne » PIXIEL... Formation « Piloter son drone & Réaliser des prises de vue aérienne » PIXIEL...
Formation « Piloter son drone & Réaliser des prises de vue aérienne » PIXIEL...
 
Intercambiador de moncloa acceso 1 y 2 jcd me 2011
Intercambiador de moncloa acceso 1 y 2 jcd me 2011Intercambiador de moncloa acceso 1 y 2 jcd me 2011
Intercambiador de moncloa acceso 1 y 2 jcd me 2011
 
Strategie federation drone valley 2017
Strategie federation drone valley 2017Strategie federation drone valley 2017
Strategie federation drone valley 2017
 
13 06-12 presentation drone it
13 06-12 presentation drone it13 06-12 presentation drone it
13 06-12 presentation drone it
 
Fotos captadas por um drone!
Fotos captadas por um drone!Fotos captadas por um drone!
Fotos captadas por um drone!
 
un drone-campus à Nantes ?
un drone-campus à Nantes ?un drone-campus à Nantes ?
un drone-campus à Nantes ?
 

Länger schlafen mit Node.js

  • 1. Länger schlafen mit Node.js @ OOP 2013 Folie 1 24. Januar 2013 Christian Heger © Zühlke 2013
  • 3. Festes Schema ist von Übel.
  • 4. Be conservative in what you do, be liberal in what you accept from others.
  • 5. Antenna Web App Antenna Bus Front Antenna Persist Antenna
  • 6. Antenna Web Hub Front App Antenna Front Antenna Hub Persist Antenna
  • 7. Und das ist alles, was man über Node wissen muss: 1. 2. 3. Länger schlafen mit Node.js | Christian Heger Bild 2: David Benbennick 24. Januar 2013 Folie 7 © Zühlke 2013
  • 9. Multi-Threaded vs. Single Threaded Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 9 © Zühlke 2013
  • 10. Multi-Threaded vs. Single Threaded Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 10 © Zühlke 2013
  • 11. Multi-Threaded vs. Single Threaded Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 11 © Zühlke 2013
  • 12. Event Emitter Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 12 © Zühlke 2013
  • 13. Continuation Passing Style Callback Callback Callback Event Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 13 © Zühlke 2013
  • 14. Und wie soll das gehen? Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 14 © Zühlke 2013
  • 16. Streams a.pipe(b); Readable Stream Writable Stream a b a.on('readable', callback); var sent = b.write(data); var data = a.read(size); Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 16 © Zühlke 2013
  • 17. Streams a.pipe(b); b.pipe(c); Duplex Stream a c b Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 17 © Zühlke 2013
  • 18. Streams a.pipe(b).pipe(a); Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 18 © Zühlke 2013
  • 20. Was ist drin? Package.json Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 20 © Zühlke 2013
  • 21. Dependency management Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 21 © Zühlke 2013
  • 22. Module Hierarchy Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 22 © Zühlke 2013
  • 23. Web Applications • Express – Sinatra-ähnliches Framework – Routing – Template-basierte View Engines • Passport – Authentifizierung gegen alle gängigen Provider – OAuth, OpenID, Facebook Connect • ASP.NET MVC < Node.js < RoR Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 23 © Zühlke 2013
  • 24. Real time web • Socket.IO – Eigenes Protokoll – Sockets, Flash, AJAX, IFrame, JSONP – Nicht interoperabel • ws – Nur Web Sockets – Aber das richtig: Autobahn-Testsuite – Interoperabel Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 24 © Zühlke 2013
  • 25. One million connections!
  • 27. Blue/Green Deployment Web Services Blue Blue Slice Slice Users Router Green Green Slice Slice Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 27 © Zühlke 2013
  • 28. Fleet Drone Git Drone Hub Drone Drone Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 28 © Zühlke 2013
  • 29. Seaport Register Antenna@1.5.1 Sea Service port Use port 8731 Client Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 29 © Zühlke 2013
  • 31. Programmierzeit 15 Tage (davon 10 ohne jede Erfahrung in JavaScript) 1 Prozess === 1 Core 3 GB RAM VMWare ESX Server 3000 – 4000 Nachrichten / Sekunde 3 Wochen lang
  • 34. Hinweise • LXJS 2012 – Substack on Streams www.youtube.com/watch?v=lQAV3bPOYHo • NodeUp Podcast nodeup.com • Stream Handbook github.com/substack/stream-handbook • Blue/Green Deployment martinfowler.com/bliki/BlueGreenDeployment.html • Semantic Versioning semver.org/ • Autobahn Web Sockets Test Suite http://autobahn.ws/ • A million connections http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/ Länger schlafen mit Node.js | Christian Heger 24. Januar 2013 Folie 34 © Zühlke 2013