© Zühlke 2013
Christian Heger
@ OOP 2013
Länger schlafen mit Node.js
24. Januar 2013 Folie 1
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
Persist
Web App
Antenna
Antenna
Antenna
Front Bus
Antenna
Hub Persist
Web App
Antenna
Hub
Antenna
Front
Antenna
Front
© Zühlke 2013
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
Message Loop
© Zühlke 2013
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
Länger schlafen mit Node.js | Christian Heger
Callback Callback Callback Event
24. Januar 2013 Folie 13
© Zühlke 2013
Und wie soll das gehen?
24. Januar 2013 Länger schlafen mit Node.js | Christian Heger Folie 14
Streams
© Zühlke 2013
Streams
Länger schlafen mit Node.js | Christian Heger
Readable Stream a
Writable Stream
b
a.on('readable', callback); var data = a.read(size);
var sent = b.write(data);
a.pipe(b);
24. Januar 2013 Folie 16
© Zühlke 2013
Streams
Länger schlafen mit Node.js | Christian Heger
a c Duplex Stream
b
a.pipe(b); b.pipe(c);
24. Januar 2013 Folie 17
© Zühlke 2013
Streams
Länger schlafen mit Node.js | Christian Heger
a.pipe(b).pipe(a);
24. Januar 2013 Folie 18
Packages
© Zühlke 2013
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
Länger schlafen mit Node.js | Christian Heger
•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
24. Januar 2013 Folie 23
© Zühlke 2013
Real time web
Länger schlafen mit Node.js | Christian Heger
•Socket.IO – Eigenes Protokoll – Sockets, Flash, AJAX, IFrame, JSONP – Nicht interoperabel
•ws – Nur Web Sockets – Aber das richtig: Autobahn-Testsuite – Interoperabel
24. Januar 2013 Folie 24
One million
connections!
Deployment
© Zühlke 2013
Web
Blue/Green Deployment
Länger schlafen mit Node.js | Christian Heger
Users Router
Blue Slice
Green Slice
Services
Blue Slice
Green Slice
24. Januar 2013 Folie 27
© Zühlke 2013
Fleet
Länger schlafen mit Node.js | Christian Heger
Hub
Drone
Drone
Drone
Drone
Git
24. Januar 2013 Folie 28
© Zühlke 2013
Seaport
Länger schlafen mit Node.js | Christian Heger
Sea port
Service
Register [email protected]
Use port 8731
Client
24. Januar 2013 Folie 29
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?
© Zühlke 2013
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
Fragen? Meinungen? Kommentare?
Christian Heger about.me/christian.heger Diese Folien http://slidesha.re/Wn9scy