2. 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
3. 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 ?
5. ❖ 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
6.
7. ❖ 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
18. 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)
19. Cluster : De meilleures performances
$ pm2 start server.js -i max
$ pm2 scale app 4
20. Cluster : Redémarrage intelligent
$ pm2 reload app
pas de downtime lors du redémarrage des process
21. Cluster : Gestion de l’état
app.listen()
Point d'entrée :
process.send('ready');
OU
process.on('SIGINT', () => { db.close() })
Point de sortie :
29. ● 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
30.
31.
32. PM2 & Keymetrics
API 2
API 1
API 2
API 1
TCP
AES256
SERVER #1
Supervision
SERVER #2
Gestion de
process
33.
34. 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!
45. 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
46.
47. 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