Tour d’horizon de Node.js

Une présentation de Christophe Porteneuve aux tech·days 2014

NodeJS

Tour d’horizon

Christophe Porteneuve à tech·days 2014

Donnez votre avis !

Depuis votre smartphone : http://notes.mstechdays.fr


De nombreux lots à gagner toutes les heures !

Claviers, souris et jeux Microsoft…


Merci de nous aider à améliorer les tech·days !

Salut

Moi c’est Christophe

JS Attitude, Git Attitude

Paris Web, toussa…

@porteneuve

Pourquoi Node ?

JS === langage n°1 (si) (si, si)

Langage extrêmement puissant + en forte évolution

Changement de modèle I/O pour plus de performance

Léger mais ultra-rapide

Capitalisation des compétences

Que du bonheur :-)

2009–2014

  1. 11/2009 : annonce officielle (Ryan Dahl @ JSConf.EU)
  2. 06/2010 : Nodejitsu
  3. 11/2010 : Express 1.0
  4. 05/2011 : npm 1.0
  5. 12/2011 : Azure prend en charge Node.js
  6. 2013 : déferlante de gros usages en production (eBay, PayPal, LinkedIn, Walmart, IBM…). Support officiel dans Visual Studio.
  7. Aujourd’hui : 58K+ modules dans npm, Top-5 PaaS, conférences JS/Node pratiquement toutes les semaines.

Node en prod

Nombreux très gros sites et systèmes basés sur Node

eBay (ql.io, 1), LinkedIn (1, 2, 3, 4), PayPal (Kraken),
IBM (Mobile platform), Airbnb (1), Uber, MySpace, Mozilla (Persona), Klout, Yahoo! (Manhattan, Mojito, Cocktails…), Dow Jones, New York Times (parties), BBC (cœur), Transloadit, Iris Couch, Segment.io Apiary.io…

Sans oublier une bonne partie du BaaS Azure Mobile Services

Développement sponsorisé par Joyent. Formation et consulting haut de gamme initiés par The Node Firm.

En fait, regardez ça, ça calme.

Hébergement

Aucun souci sur du dédié, évidemment.

Pour du PaaS, on a l’embarras du choix :

Joyent, Nodejitsu, Heroku, EngineYard, Azure, StrongLoop et plein d’autres…

Écosystème

riche et vivant

58K+ modules dans npm (~ +155/jour, leader)

~5M downloads/jour

Azure & Node

Copains comme cochons

Microsoft contribue à Node depuis des années

Une des principales options dans Azure

Sous-tend une bonne partie des Azure Mobile Services

Beau toolkit gratuit : Node.js Tools for Visual Studio


En savoir plus :

http://www.windowsazure.com/en-us/develop/nodejs/

Les grandes lignes

Evented

JavaScript reste intrinsèquement mono-thread

(on a plein d’options pour exploiter le multi-core, ceci dit)

Boucle d’événements + code asynchrone

Montée en charge bien supérieure à du multi-thread : à partir d’un haut niveau de concurrence (milliers de connexions), un serveur asynchrone non-bloquant « gagne » forcément.

Flux

Le cœur de Node, c’est de l’opti d’I/O

Réseau, FileSystem, etc.

Infra riche et puissante de flux

Binaire/texte (UTF-8 & cie), buffer/direct…

Pipes, backpressure, etc. Composable, surpuissant.

CommonJS

Avec Node, tout fichier est un module isolé.

Dépendances explicites synchrones avec require('…')

Enfin du code structuré, modulaire, découpé…

Ça + chemins intelligents = la fête

Explicite

Pas de scope magique, d’identifiants inattendus, etc.

À la base, explicite partout plutôt que CoC

Du besoin de require au design des API et modules majeurs

Prise en main moins dure pour les nouveaux : moins besoin de fouiller dans une tonne de docs et conventions, pas d’effet de surprise.

Petits modules ciblés

Philosophie Unix

Faire une seule chose et la faire bien

Composition pour traiter des besoins riches

Certains modules npm tiennent en une fonction !

Démo

Apprendre

Node School

Stream Handbook

Nodestreams

CodeSchool

How To Node?

Docs officielles

Et bien sûr…

(Obligatory shameless plug)

Formation Node.js chez JS Attitude

Merci !

@porteneuve

JS Attitude