SlideShare une entreprise Scribd logo
TechConf 
Autour de Node.js 
Luc Juggery (@lucjuggery) - 11 décembre 2014
Au programme 
● Les concepts 
● Un écosystème 
● Sails.js - framework de développement web 
2
● Les concepts 
● Un écosystème 
● Sails.js - framework de développement web 
3
Les concepts 
JavaScript 
Server side 
Event loop 
Chrome V8 
Single thread Callback 
Non blocking I/O 
4
Les concepts: Chrome V8 
● Moteur d’exécution de JavaScript présent dans Google Chrome 
● Utilisé pour faire tourner du JavaScript hors navigateur 
● Très performant (phase de compilation) 5
Les concepts: JavaScript coté serveur 
● Node.js ⇒ code JavaScript exécuté par Chrome V8 
● Très utilisé pour des applications réseaux 
o serveur HTTP / TCP / ... 
o WebSocket (ex: messagerie instantanée) 
● D’autres utilisations: scripting, DevOps, ... 
● Ne convient pas à tous les usages 
6
Les concepts: Single thread 
● “Everything runs in parallel except your code” 
● Une application Node.js ne lance qu’un seul thread 
● Ne convient pas pour des traitements concurrents gourmands en CPU 
⇒ risque de blocage du thread 
● Permet au contraire une grande concurrence pour des traitements 
utilisant beaucoup d’I/O 
⇒ comment ? 7
Les concepts: Non blocking I/O 
● La gestion des I/O est effectuée de façon asynchrone 
o disque / réseau / database / … 
o ne bloque pas le thread principal 
● blocking I/O vs Non blocking I/O 
> blocking I/O ⇒ attend la fin du traitement 
> non blocking I/O ⇒ sert le client suivant et attend 
d’être notifié par les clients précédents (callback) 
● Lié aux notions de callback et d’event loop 
8
Les concepts - Callback exemple 1 
événement 
fonction de 
callback 
Server HTTP 
Réception d’une requête ⇒ déclenchement de la fonction de callback 
9
Les concepts - Callback exemple 2 
Fonctions de callback encapsulées 
10
Les concepts - Event loop / Callback 
● Callback: méthode en attente d’événements I/O 
● Event loop: basée sur l’architecture événementielle de JavaScript 
o enregistrement des callbacks au lancement de l’application 
o déclenche les callbacks sur réception d’événements 
1. Event loop lancée à 
l’exécution du code 
2. Enregistrement des 
fonctions de callback 
3. Envoi d’un événement 
lorsqu’un traitement est 
terminé 
4. Déclenchement de la 
fonction de callback 
correspondante 
11
C’est l’heure du Quiz ! 
Question: un serveur web Node.js est plus approprié pour: 
A. des traitements gourmands en CPU 
B. des traitements avec beaucoup d’I/O et peu de CPU 
C. des traitements sans I/O 
D. des calculs scientifiques complexes 
Répondez vite en tweetant sur @TechConfQuiz 
12
● Les concepts 
● Un écosystème 
● Sails.js - framework de développement web 
13
Un écosystème - NPM 
● Gestionnaire de modules de Node.js 
● De nombreux modules très matures 
● Grande communauté 
● Une CLI riche (npmjs.org/doc/) 
o pour gérer les modules 
o pour interagir avec l’application (init / start / stop / test / …) 
14
Un écosystème - package.json 
● Descriptif de l’application 
o conserve les versions des dépendances 
o ‘npm init’ ⇒ création du fichier package.json 
o ‘npm install MODULE --save’ ⇒ compile et trace les dépendances 
npm init npm install request --save 
15
Un écosystème - démo 
● Génération du package.json 
● Installation du module request (client http) 
o modification du package.json 
o génération du folder node_modules 
● Mise en place d’une requête simple 
● Lancement de l’application 
16
Un ecosystème - des modules clés 
● connect - framework pour serveur http ⇔ Ruby Rack 
● express - ajoute des vues dynamic et un DSL pour la description des routes (connect+) 
● request - client http 
● async - maitrise du flux et simplification du callback hell 
● socket.io - websocket 
● mocha - framework de test très complet 
● winston - framework de logging 
● forever / pm2 - supervision de l’application 
● grunt / gulp - lanceur de tache ⇔ Ruby Rake 
● lodash - ensemble d’utilitaires 
● momentjs - facilite l’utilisation des date / time 
17
● Les concepts 
● Un écosystème 
● Sails.js - framework de développement web 
18
Sails.js - positionnement du framework 
● MVC framework for Node.js 
● Inspiré de Ruby On Rails 
● Basé sur Express et Socket.io 
● Vues dynamiques (template EJS) 
● Focus sur les API HTTP REST 
● Compatible SQL / NoSQL 
● Architecture très structurante 
19
Sails.js - API Rest démo 1/2 
> npm install -g sails 
> sails new TechConfSailsApp 
> sails generate api user 
> sails lift 
20
Sails.js - API Rest démo 2/2 
> 
> curl -XPOST http://localhost:1337/user?name=Stephane 
21
Sails.js - Exemple de projet 
Backend: Sails API 
Front-end: Sails EJS + Twitter Bootstrap 
22
Conclusion 
● Un framework mature (même si pas encore en 1.0) 
● Utilisé par des grosses entreprises (eBay, Walmart, …) 
● Beaucoup de modules en version 0.0.y / 0.x.y 
o certains déjà matures 
o peut effrayer les clients 
● Des avis contraires 
o node.js is cancer 
o node.js cures cancer 
● Ne convient pas à tous les besoins 
 A tester sur des uses cases métiers 
23
Merci !

Contenu connexe

Tendances

NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
Habib MAALEM
 
Nginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesNginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performances
Pascal Armand
 

Tendances (20)

Express1
Express1Express1
Express1
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
01 installation
01 installation01 installation
01 installation
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
WebSocket avec Java EE 7
WebSocket avec Java EE 7WebSocket avec Java EE 7
WebSocket avec Java EE 7
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
Zend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modulesZend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modules
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
Nginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesNginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performances
 
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
 
Ocs
OcsOcs
Ocs
 
Cancellable Promises
Cancellable PromisesCancellable Promises
Cancellable Promises
 
[FR] Websocket Documentary Reasearches
[FR] Websocket Documentary Reasearches[FR] Websocket Documentary Reasearches
[FR] Websocket Documentary Reasearches
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
PHP5 et Zend Framework
PHP5 et Zend FrameworkPHP5 et Zend Framework
PHP5 et Zend Framework
 
WebSocket soutenance de stage
WebSocket   soutenance de stageWebSocket   soutenance de stage
WebSocket soutenance de stage
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 

Similaire à 2014.12.11 - TECH CONF #3 - Présentation Node.js

Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node js
Horacio Gonzalez
 
Node.js dans Windows Azure mobile services et web sites
Node.js dans Windows Azure mobile services et web sitesNode.js dans Windows Azure mobile services et web sites
Node.js dans Windows Azure mobile services et web sites
Microsoft
 

Similaire à 2014.12.11 - TECH CONF #3 - Présentation Node.js (20)

Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
12-Factor
12-Factor12-Factor
12-Factor
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Consul, un vrai couteau suisse
Consul, un vrai couteau suisseConsul, un vrai couteau suisse
Consul, un vrai couteau suisse
 
S35 developper en node.js versus php
S35   developper en node.js versus phpS35   developper en node.js versus php
S35 developper en node.js versus php
 
Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node js
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Angular retro
Angular retroAngular retro
Angular retro
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicien
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & Kubernetes
 
Saas Libre
Saas LibreSaas Libre
Saas Libre
 
Node.js dans Windows Azure mobile services et web sites
Node.js dans Windows Azure mobile services et web sitesNode.js dans Windows Azure mobile services et web sites
Node.js dans Windows Azure mobile services et web sites
 
Meetup PM2 @delicious-insights
Meetup PM2 @delicious-insightsMeetup PM2 @delicious-insights
Meetup PM2 @delicious-insights
 
Meetup laravel
Meetup laravelMeetup laravel
Meetup laravel
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 

Plus de TelecomValley

Plus de TelecomValley (20)

Rapport d'activité SoFAB 2022
Rapport d'activité SoFAB 2022Rapport d'activité SoFAB 2022
Rapport d'activité SoFAB 2022
 
Rapport d'activité 2022
Rapport d'activité 2022Rapport d'activité 2022
Rapport d'activité 2022
 
Rapport d'activité 2021 - Telecom Valley
Rapport d'activité 2021 - Telecom ValleyRapport d'activité 2021 - Telecom Valley
Rapport d'activité 2021 - Telecom Valley
 
Livre blanc "Les métamorphoses de l'entreprise face à l'imprévu - Tome 1 : la...
Livre blanc "Les métamorphoses de l'entreprise face à l'imprévu - Tome 1 : la...Livre blanc "Les métamorphoses de l'entreprise face à l'imprévu - Tome 1 : la...
Livre blanc "Les métamorphoses de l'entreprise face à l'imprévu - Tome 1 : la...
 
Rapport d'activité SoFAB 2020
Rapport d'activité SoFAB 2020Rapport d'activité SoFAB 2020
Rapport d'activité SoFAB 2020
 
Rapport d'activité Telecom Valley 2020
Rapport d'activité Telecom Valley 2020Rapport d'activité Telecom Valley 2020
Rapport d'activité Telecom Valley 2020
 
Rapport d'activité SoFAB 2019
Rapport d'activité SoFAB 2019Rapport d'activité SoFAB 2019
Rapport d'activité SoFAB 2019
 
Rapport d'activité Telecom Valley 2019
Rapport d'activité Telecom Valley 2019Rapport d'activité Telecom Valley 2019
Rapport d'activité Telecom Valley 2019
 
Revue de presse Telecom Valley - Février 2020
Revue de presse Telecom Valley - Février 2020Revue de presse Telecom Valley - Février 2020
Revue de presse Telecom Valley - Février 2020
 
Revue de presse Telecom Valley - Janvier 2020
Revue de presse Telecom Valley - Janvier 2020Revue de presse Telecom Valley - Janvier 2020
Revue de presse Telecom Valley - Janvier 2020
 
Revue de presse Telecom Valley - Décembre 2019
Revue de presse Telecom Valley - Décembre 2019Revue de presse Telecom Valley - Décembre 2019
Revue de presse Telecom Valley - Décembre 2019
 
Revue de presse Telecom Valley - Novembre 2019
Revue de presse Telecom Valley - Novembre 2019Revue de presse Telecom Valley - Novembre 2019
Revue de presse Telecom Valley - Novembre 2019
 
Revue de presse Telecom Valley - Octobre 2019
Revue de presse Telecom Valley - Octobre 2019Revue de presse Telecom Valley - Octobre 2019
Revue de presse Telecom Valley - Octobre 2019
 
Revue de presse Telecom Valley - Septembre 2019
Revue de presse Telecom Valley - Septembre 2019Revue de presse Telecom Valley - Septembre 2019
Revue de presse Telecom Valley - Septembre 2019
 
Présentation Team France Export régionale - 29/11/19
Présentation Team France Export régionale - 29/11/19Présentation Team France Export régionale - 29/11/19
Présentation Team France Export régionale - 29/11/19
 
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metie...
 
Tester c'est bien, monitorer c'est mieux - 2019 - KISSI - Soirée du Test Logi...
Tester c'est bien, monitorer c'est mieux - 2019 - KISSI - Soirée du Test Logi...Tester c'est bien, monitorer c'est mieux - 2019 - KISSI - Soirée du Test Logi...
Tester c'est bien, monitorer c'est mieux - 2019 - KISSI - Soirée du Test Logi...
 
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
 
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFEA la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
 
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.12019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
 

2014.12.11 - TECH CONF #3 - Présentation Node.js

  • 1. TechConf Autour de Node.js Luc Juggery (@lucjuggery) - 11 décembre 2014
  • 2. Au programme ● Les concepts ● Un écosystème ● Sails.js - framework de développement web 2
  • 3. ● Les concepts ● Un écosystème ● Sails.js - framework de développement web 3
  • 4. Les concepts JavaScript Server side Event loop Chrome V8 Single thread Callback Non blocking I/O 4
  • 5. Les concepts: Chrome V8 ● Moteur d’exécution de JavaScript présent dans Google Chrome ● Utilisé pour faire tourner du JavaScript hors navigateur ● Très performant (phase de compilation) 5
  • 6. Les concepts: JavaScript coté serveur ● Node.js ⇒ code JavaScript exécuté par Chrome V8 ● Très utilisé pour des applications réseaux o serveur HTTP / TCP / ... o WebSocket (ex: messagerie instantanée) ● D’autres utilisations: scripting, DevOps, ... ● Ne convient pas à tous les usages 6
  • 7. Les concepts: Single thread ● “Everything runs in parallel except your code” ● Une application Node.js ne lance qu’un seul thread ● Ne convient pas pour des traitements concurrents gourmands en CPU ⇒ risque de blocage du thread ● Permet au contraire une grande concurrence pour des traitements utilisant beaucoup d’I/O ⇒ comment ? 7
  • 8. Les concepts: Non blocking I/O ● La gestion des I/O est effectuée de façon asynchrone o disque / réseau / database / … o ne bloque pas le thread principal ● blocking I/O vs Non blocking I/O > blocking I/O ⇒ attend la fin du traitement > non blocking I/O ⇒ sert le client suivant et attend d’être notifié par les clients précédents (callback) ● Lié aux notions de callback et d’event loop 8
  • 9. Les concepts - Callback exemple 1 événement fonction de callback Server HTTP Réception d’une requête ⇒ déclenchement de la fonction de callback 9
  • 10. Les concepts - Callback exemple 2 Fonctions de callback encapsulées 10
  • 11. Les concepts - Event loop / Callback ● Callback: méthode en attente d’événements I/O ● Event loop: basée sur l’architecture événementielle de JavaScript o enregistrement des callbacks au lancement de l’application o déclenche les callbacks sur réception d’événements 1. Event loop lancée à l’exécution du code 2. Enregistrement des fonctions de callback 3. Envoi d’un événement lorsqu’un traitement est terminé 4. Déclenchement de la fonction de callback correspondante 11
  • 12. C’est l’heure du Quiz ! Question: un serveur web Node.js est plus approprié pour: A. des traitements gourmands en CPU B. des traitements avec beaucoup d’I/O et peu de CPU C. des traitements sans I/O D. des calculs scientifiques complexes Répondez vite en tweetant sur @TechConfQuiz 12
  • 13. ● Les concepts ● Un écosystème ● Sails.js - framework de développement web 13
  • 14. Un écosystème - NPM ● Gestionnaire de modules de Node.js ● De nombreux modules très matures ● Grande communauté ● Une CLI riche (npmjs.org/doc/) o pour gérer les modules o pour interagir avec l’application (init / start / stop / test / …) 14
  • 15. Un écosystème - package.json ● Descriptif de l’application o conserve les versions des dépendances o ‘npm init’ ⇒ création du fichier package.json o ‘npm install MODULE --save’ ⇒ compile et trace les dépendances npm init npm install request --save 15
  • 16. Un écosystème - démo ● Génération du package.json ● Installation du module request (client http) o modification du package.json o génération du folder node_modules ● Mise en place d’une requête simple ● Lancement de l’application 16
  • 17. Un ecosystème - des modules clés ● connect - framework pour serveur http ⇔ Ruby Rack ● express - ajoute des vues dynamic et un DSL pour la description des routes (connect+) ● request - client http ● async - maitrise du flux et simplification du callback hell ● socket.io - websocket ● mocha - framework de test très complet ● winston - framework de logging ● forever / pm2 - supervision de l’application ● grunt / gulp - lanceur de tache ⇔ Ruby Rake ● lodash - ensemble d’utilitaires ● momentjs - facilite l’utilisation des date / time 17
  • 18. ● Les concepts ● Un écosystème ● Sails.js - framework de développement web 18
  • 19. Sails.js - positionnement du framework ● MVC framework for Node.js ● Inspiré de Ruby On Rails ● Basé sur Express et Socket.io ● Vues dynamiques (template EJS) ● Focus sur les API HTTP REST ● Compatible SQL / NoSQL ● Architecture très structurante 19
  • 20. Sails.js - API Rest démo 1/2 > npm install -g sails > sails new TechConfSailsApp > sails generate api user > sails lift 20
  • 21. Sails.js - API Rest démo 2/2 > > curl -XPOST http://localhost:1337/user?name=Stephane 21
  • 22. Sails.js - Exemple de projet Backend: Sails API Front-end: Sails EJS + Twitter Bootstrap 22
  • 23. Conclusion ● Un framework mature (même si pas encore en 1.0) ● Utilisé par des grosses entreprises (eBay, Walmart, …) ● Beaucoup de modules en version 0.0.y / 0.x.y o certains déjà matures o peut effrayer les clients ● Des avis contraires o node.js is cancer o node.js cures cancer ● Ne convient pas à tous les besoins  A tester sur des uses cases métiers 23