meetup pm2 @delicious-insights

Post on 15-Apr-2017

106 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

github.com/Unitech/pm2

keymetrics.io@keymetrics_iogithub.com/keymetricscontact@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

top related