SlideShare une entreprise Scribd logo
1  sur  24
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, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introductionToxicode
 
JavaScript dans l'usine logicielle
JavaScript dans l'usine logicielleJavaScript dans l'usine logicielle
JavaScript dans l'usine logiciellejollivetc
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Quentin Frémeaux
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Quentin Frémeaux
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
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...ALTER WAY
 
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 jsHoracio 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 sitesMicrosoft
 
WebHookIt @parisjs #4
WebHookIt @parisjs #4WebHookIt @parisjs #4
WebHookIt @parisjs #4Eric Abouaf
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSOAT
 
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 2007Eric D.
 
Création d’application facile en html via node-webkit
Création d’application facile en html via node-webkitCréation d’application facile en html via node-webkit
Création d’application facile en html via node-webkitIsenDev
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005Eric D.
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Eric D.
 
Adopter les web components avec stencil.js - Front Side
Adopter les web components avec stencil.js - Front SideAdopter les web components avec stencil.js - Front Side
Adopter les web components avec stencil.js - Front SideThomas Champion
 

Tendances (20)

NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
JavaScript dans l'usine logicielle
JavaScript dans l'usine logicielleJavaScript dans l'usine logicielle
JavaScript dans l'usine logicielle
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
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...
 
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
 
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
 
NodeJs in real life
NodeJs in real lifeNodeJs in real life
NodeJs in real life
 
WebHookIt @parisjs #4
WebHookIt @parisjs #4WebHookIt @parisjs #4
WebHookIt @parisjs #4
 
CasperJS
CasperJSCasperJS
CasperJS
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
 
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
 
Création d’application facile en html via node-webkit
Création d’application facile en html via node-webkitCréation d’application facile en html via node-webkit
Création d’application facile en html via node-webkit
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006
 
Adopter les web components avec stencil.js - Front Side
Adopter les web components avec stencil.js - Front SideAdopter les web components avec stencil.js - Front Side
Adopter les web components avec stencil.js - Front Side
 

En vedette

Setup docker on existing application
Setup docker on existing applicationSetup docker on existing application
Setup docker on existing applicationLuc Juggery
 
Node.js Module Resolution by visual example
Node.js Module Resolution by visual exampleNode.js Module Resolution by visual example
Node.js Module Resolution by visual exampleJeff Kunkle
 
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
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsjacekbecela
 
A la conquête de la Suisse alémanique
A la conquête de la Suisse alémaniqueA la conquête de la Suisse alémanique
A la conquête de la Suisse alémaniquealineisoz.ch
 
Les canadiens accros aux communications antoine trépanier, l'étoile.
Les canadiens accros aux communications   antoine trépanier, l'étoile.Les canadiens accros aux communications   antoine trépanier, l'étoile.
Les canadiens accros aux communications antoine trépanier, l'étoile.Pierre C. Bélanger
 
Communication et partage simple et rapide via les applications web
Communication et partage simple et rapide via les applications webCommunication et partage simple et rapide via les applications web
Communication et partage simple et rapide via les applications webEric Lacoursiere
 
Café du commerce "Image prix"
Café du commerce "Image prix"Café du commerce "Image prix"
Café du commerce "Image prix"Nouveau Monde DDB
 
El predicado
El predicadoEl predicado
El predicadoSandy-66
 
Le fleuve niger
Le fleuve nigerLe fleuve niger
Le fleuve nigerruixcp
 
Conférence Piranha - L'avantage stratégique de la mobilité pour les services ...
Conférence Piranha - L'avantage stratégique de la mobilité pour les services ...Conférence Piranha - L'avantage stratégique de la mobilité pour les services ...
Conférence Piranha - L'avantage stratégique de la mobilité pour les services ...Dominic Gagnon
 
The mooc agency - Web-conférence du FFFOD du 10/12/13
The mooc agency - Web-conférence du FFFOD du 10/12/13The mooc agency - Web-conférence du FFFOD du 10/12/13
The mooc agency - Web-conférence du FFFOD du 10/12/13FFFOD
 
Rixe sur la preuve électronique
Rixe sur la preuve électroniqueRixe sur la preuve électronique
Rixe sur la preuve électroniqueLedjit
 
Accessibilite numérique : où en est-on ? webinar FFFOD 151207
Accessibilite numérique : où en est-on ? webinar FFFOD 151207Accessibilite numérique : où en est-on ? webinar FFFOD 151207
Accessibilite numérique : où en est-on ? webinar FFFOD 151207FFFOD
 
Motivación Laboral
Motivación LaboralMotivación Laboral
Motivación LaboralJuAn Cn
 

En vedette (20)

Setup docker on existing application
Setup docker on existing applicationSetup docker on existing application
Setup docker on existing application
 
Node.js Module Resolution by visual example
Node.js Module Resolution by visual exampleNode.js Module Resolution by visual example
Node.js Module Resolution by visual example
 
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...
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
12-Factor
12-Factor12-Factor
12-Factor
 
A la conquête de la Suisse alémanique
A la conquête de la Suisse alémaniqueA la conquête de la Suisse alémanique
A la conquête de la Suisse alémanique
 
Les canadiens accros aux communications antoine trépanier, l'étoile.
Les canadiens accros aux communications   antoine trépanier, l'étoile.Les canadiens accros aux communications   antoine trépanier, l'étoile.
Les canadiens accros aux communications antoine trépanier, l'étoile.
 
Communication et partage simple et rapide via les applications web
Communication et partage simple et rapide via les applications webCommunication et partage simple et rapide via les applications web
Communication et partage simple et rapide via les applications web
 
Café du commerce "Image prix"
Café du commerce "Image prix"Café du commerce "Image prix"
Café du commerce "Image prix"
 
El predicado
El predicadoEl predicado
El predicado
 
Le fleuve niger
Le fleuve nigerLe fleuve niger
Le fleuve niger
 
Conférence Piranha - L'avantage stratégique de la mobilité pour les services ...
Conférence Piranha - L'avantage stratégique de la mobilité pour les services ...Conférence Piranha - L'avantage stratégique de la mobilité pour les services ...
Conférence Piranha - L'avantage stratégique de la mobilité pour les services ...
 
Atelier#3 recommander_plus___temoignage_ot_bergerac
Atelier#3  recommander_plus___temoignage_ot_bergeracAtelier#3  recommander_plus___temoignage_ot_bergerac
Atelier#3 recommander_plus___temoignage_ot_bergerac
 
The mooc agency - Web-conférence du FFFOD du 10/12/13
The mooc agency - Web-conférence du FFFOD du 10/12/13The mooc agency - Web-conférence du FFFOD du 10/12/13
The mooc agency - Web-conférence du FFFOD du 10/12/13
 
Homebuyers presentation websites fr
Homebuyers presentation websites frHomebuyers presentation websites fr
Homebuyers presentation websites fr
 
Rixe sur la preuve électronique
Rixe sur la preuve électroniqueRixe sur la preuve électronique
Rixe sur la preuve électronique
 
Accessibilite numérique : où en est-on ? webinar FFFOD 151207
Accessibilite numérique : où en est-on ? webinar FFFOD 151207Accessibilite numérique : où en est-on ? webinar FFFOD 151207
Accessibilite numérique : où en est-on ? webinar FFFOD 151207
 
Presentation leduc
Presentation leducPresentation leduc
Presentation leduc
 
Gazette du 28 août au 4 octobre 2012
Gazette du 28 août au 4 octobre 2012Gazette du 28 août au 4 octobre 2012
Gazette du 28 août au 4 octobre 2012
 
Motivación Laboral
Motivación LaboralMotivación Laboral
Motivación Laboral
 

Similaire à Autour de Node.js - TechConf#3

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...XavierPestel
 
Consul, un vrai couteau suisse
Consul, un vrai couteau suisseConsul, un vrai couteau suisse
Consul, un vrai couteau suisseXavierPestel
 
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 phpGautier DUMAS
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
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écanicienRachid Zarouali
 
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...MSDEVMTL
 
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...Publicis Sapient Engineering
 
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 FaureParis Container Day
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
 
Saas Libre
Saas LibreSaas Libre
Saas Libregrolland
 
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?Microsoft
 
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 slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & TechniquesRachid NID SAID
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloudstefounet
 

Similaire à Autour de Node.js - TechConf#3 (20)

Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
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
 
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
 
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
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloud
 

Autour de Node.js - TechConf#3

  • 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