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 developmentTo 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 listLister 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
TCPAES256
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.io2. Créer un bucket3. 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
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
Top Related