SlideShare une entreprise Scribd logo
Node.js to Space
Node.js en production, best practices
Les problèmes de Node.js en production
❖ En cas d'erreur, Javascript throw une erreur
et l’application crash
❖ Les mises à jours provoquent du downtime
qui impactent l’UX
❖ Javascript est un langage mono threadé,
seulement un CPU core est utilisé par défaut
❖ De la surveillance pro-active est obligatoire
sinon votre application peut planter en prod
Error: your helium tank
is not stored correctly
Les questions récurrentes
❖ Comment maximiser les performances ?
❖ Pourquoi il y a sous utilisation des ressources serveur
disponibles ?
❖ Pourquoi je n'ai pas eu de nouveaux clients aujourd'hui ?
❖ Où sont stockés les logs applicatifs ?
❖ Pourquoi mon application redémarre sans raison ?
et
Node.js production ready
avec
❖ Process manager pour app Node.js en production
❖ Maintient les applications en ligne
❖ Améliore les performances (multi-cores)
❖ Load balancer intelligent intégré
❖ Centralisation des logs des applications
15,900+ stars sur Github
1200+ tests
17 millions+ downloads
14ème module Node le plus populaire
❖ Application SaaS de monitoring proactif
❖ Tableau de bord en temps réel
❖ Profiling mem/cpu en production
❖ Transaction Tracing!
4,000+ utilisateurs mensuel
500+ clients premium
15,000+ serveurs surveillés
From development
To PRODUCTION
$ npm install pm2 -g
Installer PM2
Documentation :
http://pm2.keymetrics.io/
Code source :
https://github.com/Unitech/PM2
(0 configuration)
App Launching
$ pm2 start app.js
Démarrer une application en production
Démarrer une app + mise en tâche de fond :
$ pm2 list
Lister les applications :
Informations
additionnelles
$ pm2 show <app_name>
Gestion d'applications
$ pm2 restart <app_name>
Redémarrer:
$ pm2 stop <app_name>
Arrêter:
$ pm2 delete <app_name>
Effacer:
Supervision de l’utilisation mem/CPU
$ pm2 monit
Consultation des logs
$ pm2 logs [app-name] [--json] [--lines 100]
Cluster Mode
La vie sans cluster
Qu’est ce que le mode
cluster?
+
- Permet de lancer plusieurs
process (donc repartis sur
plusieurs cores)
- Un process (master) se charge
de répartir les requêtes sur
d’autres (workers)
Cluster : De meilleures performances
$ pm2 start server.js -i max
$ pm2 scale app 4
Cluster : Redémarrage intelligent
$ pm2 reload app
pas de downtime lors du redémarrage des process
Cluster : Gestion de l’état
app.listen()
Point d'entrée :
process.send('ready');
OU
process.on('SIGINT', () => { db.close() })
Point de sortie :
Consultation des logs
UGLY!
$ pm2 start ecosystem.json
●
PM2 deploy
pm2 deploy production setup
pm2 deploy production
pm2 deploy production revert [n]
● Redirection des signaux systèmes (PID1)
● Contrôle du changement d'état
● Clustering automatique
● Redémarrage instantané
Et Docker dans tout ca?
$ pm2-docker process.json --only API
PM2 & Keymetrics
API 2
API 1
API 2
API 1
TCP
AES256
SERVER #1
Supervision
SERVER #2
Gestion de
process
Intégration PM2 <> Keymetrics
$ pm2 link [secret_key] [public_key] [name]
1. Créer un compte sur app.keymetrics.io
2. Créer un bucket
3. Copier / Coller la commande affichée
Intégration en 20 secondes!
Fonctionnalités
Modules!
WORKSHOP TIME!
https://github.com/keymetrics/fullstack-workshop
Coupon Discount
DELICIOUSPM2
30% de réduction pendant 6 mois sur un plan premium
Expire dans 2 semaines
github.com/Unitech/pm2
keymetrics.io
@keymetrics_io
github.com/keymetrics
contact@keymetrics.io
Merci!
D’autres fonctionnalités clés de pm2 :
● Watch & Restart lors de modification de fichiers
● Déploiement simple
● Source Map intégrées
● Rotation des fichiers de logs
● Support de transpilers
● Démarrage automatique par l’OS
● API
Configuration de l’application
● Un seul fichier de configuration
○ Plusieurs applications
○ Plusieurs environnements
○ Déploiement
○ Fichiers journaux
● Commande de démarrage
● YAML, JSON, Javascript
$ pm2 start process.config.js

Contenu connexe

Tendances

Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
CocoaHeads France
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Membré Guillaume
 
12-Factor
12-Factor12-Factor
12-Factor
Luc Juggery
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
ekino
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
Membré Guillaume
 
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Benoît de CHATEAUVIEUX
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
Nicolas Mussat
 
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
Damien Duportal
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
rfelden
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
Thibaud CAVIN
 
Ansible et Jenkins
Ansible et JenkinsAnsible et Jenkins
Ansible et Jenkins
Jean-Christophe Sirot
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBT
Jean Detoeuf
 
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
mbrechet
 
DevOps - from idea to production
DevOps - from idea to productionDevOps - from idea to production
DevOps - from idea to production
Habib MAALEM
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
Hugo Hamon
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
The Incredible Automation Day
 
Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUG
William Marques
 
Prise en main de Jhipster
Prise en main de JhipsterPrise en main de Jhipster
Prise en main de Jhipster
Kokou Gaglo
 

Tendances (20)

Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
 
12-Factor
12-Factor12-Factor
12-Factor
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
 
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
Ansible et Jenkins
Ansible et JenkinsAnsible et Jenkins
Ansible et Jenkins
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBT
 
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
 
DevOps - from idea to production
DevOps - from idea to productionDevOps - from idea to production
DevOps - from idea to production
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 
Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUG
 
Prise en main de Jhipster
Prise en main de JhipsterPrise en main de Jhipster
Prise en main de Jhipster
 

Similaire à Meetup PM2 @delicious-insights

XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
Publicis Sapient Engineering
 
Continuité de service informatique : comment ça fonctionne ?
Continuité de service informatique : comment ça fonctionne ?Continuité de service informatique : comment ça fonctionne ?
Continuité de service informatique : comment ça fonctionne ?
Trader's - Quick Software Line
 
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
 
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
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
Abdelhakim Rhanizar
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
Benoît de CHATEAUVIEUX
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
sabrine_hamdi
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Sébastien Prunier
 
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
Rachid Zarouali
 
Meetup du 21 septembre 2017
Meetup du 21 septembre 2017Meetup du 21 septembre 2017
Meetup du 21 septembre 2017
AFUP_Limoges
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
Luc Juggery
 
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
TelecomValley
 
Démo puppet et état du projet
Démo puppet et état du projetDémo puppet et état du projet
Démo puppet et état du projet
New Caledonian Government
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
Christophe Villeneuve
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
boulonvert
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
Marc Bojoly
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
Henri Gomez
 
Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de dev
Kodo Kojo
 

Similaire à Meetup PM2 @delicious-insights (20)

XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
 
Continuité de service informatique : comment ça fonctionne ?
Continuité de service informatique : comment ça fonctionne ?Continuité de service informatique : comment ça fonctionne ?
Continuité de service informatique : comment ça fonctionne ?
 
Ocs
OcsOcs
Ocs
 
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...
 
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...
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
 
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
 
Meetup du 21 septembre 2017
Meetup du 21 septembre 2017Meetup du 21 septembre 2017
Meetup du 21 septembre 2017
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
 
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
 
Démo puppet et état du projet
Démo puppet et état du projetDémo puppet et état du projet
Démo puppet et état du projet
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Perf university
Perf universityPerf university
Perf university
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de dev
 

Plus de Alexandre Strzelewicz

Jsconf asia pm2
Jsconf asia pm2Jsconf asia pm2
Jsconf asia pm2
Alexandre Strzelewicz
 
NODE NYC
NODE NYCNODE NYC
Keymetrics & PM2 - NodeJS NYC @ Microsoft
Keymetrics & PM2 - NodeJS NYC @ Microsoft Keymetrics & PM2 - NodeJS NYC @ Microsoft
Keymetrics & PM2 - NodeJS NYC @ Microsoft
Alexandre Strzelewicz
 
{EPITECH} - Keymetrics / Final studies internship report
{EPITECH} - Keymetrics / Final studies internship report{EPITECH} - Keymetrics / Final studies internship report
{EPITECH} - Keymetrics / Final studies internship report
Alexandre Strzelewicz
 
Keymetrics pm2
Keymetrics pm2Keymetrics pm2
Keymetrics pm2
Alexandre Strzelewicz
 

Plus de Alexandre Strzelewicz (7)

Jsconf asia pm2
Jsconf asia pm2Jsconf asia pm2
Jsconf asia pm2
 
NODE NYC
NODE NYCNODE NYC
NODE NYC
 
Keymetrics & PM2 - NodeJS NYC @ Microsoft
Keymetrics & PM2 - NodeJS NYC @ Microsoft Keymetrics & PM2 - NodeJS NYC @ Microsoft
Keymetrics & PM2 - NodeJS NYC @ Microsoft
 
{EPITECH} - Keymetrics / Final studies internship report
{EPITECH} - Keymetrics / Final studies internship report{EPITECH} - Keymetrics / Final studies internship report
{EPITECH} - Keymetrics / Final studies internship report
 
Keymetrics pm2
Keymetrics pm2Keymetrics pm2
Keymetrics pm2
 
Monify.it pitch
Monify.it pitchMonify.it pitch
Monify.it pitch
 
Web Lab - Thinking Rails
Web Lab - Thinking RailsWeb Lab - Thinking Rails
Web Lab - Thinking Rails
 

Meetup PM2 @delicious-insights