Mantener apps NodeJS en producción con PM2

Muchos desarrolladores hemos incursionado en el uso NodeJS como alternativa al lenguaje del lado del servidor, javascript en el backend es una idea simplemente genial y desde la salida de NodeJS, son cada vez más los sitios, servicios, plataformas o sistemas que lo adoptan para sus APIs.

Ahora bien, al momento de desarrollar todo es divertido, tenemos el control de nuestra consola, nuestro entorno y nos sentimos “como en casa”, sin embargo, cuando queremos desplegar nuestra app NodeJS en un entorno de producción, muchos sufrimos de jaquecas y desvelos al tratar de mantener el servicio corriendo y que éste no colapse con algún bug en alguna petición o proceso.

Es aquí donde entra PM2 al rescate. PM2 es un administrador de procesos avanzado para NodeJS que nos brinda una gamma de opciones cuya simplicidad de uso sólo se compara con su potencial para controlar y monitorear nuestros servicios o apps.

Uso básico

Una de las cosas que más llama la atención de PM2 es que, con la ejecución de un par de comandos, podremos tener nuestro servicio NodeJS corriendo de forma permanente, veamos lo que necesitamos:

Instalación:

Para instalar PM2 en nuestro ordenador/servidor, basta con ejecutar:

$ sudo npm install pm2 -g

Esto instalará PM2 de forma global, podemos verificar el resultado de la instalación revisando la versión ejecutando en nuestra consola:

$ pm2 –version

La esto debe retornar la versión instalada de pm2, en mi caso: 2.3.0

¡Listo! Ya tenemos PM2 en nuestro sistema, basta con ir al directorio donde se aloja nuestra app con NodeJS e iniciarla vía pm2, esto puede hacerse ejecutando:

$ pm2 start app.js

Al ejecutar start, veremos que PM2 nos confirma el inicio de nuestro servicio:

captura-de-pantalla-de-2017-01-27-093409

Si han llegado hasta aquí, enhorabuena, ya no tenemos que abrir otra pestaña en la consola mientras ejecutamos nuestra app de NodeJS 🙂

Pero la libertad de nuestra ventana de comandos no es el único atractivo de este servicio, ahora que tenemos nuestra primera app corriendo de forma permanente, podemos actuar sobre ella de distintas formas, por ejemplo, podemos:

Monitorear la ejecución de nuestra app:

$ pm2 monit

Cuando monitoreamos la ejecución de nuestras aplicaciones NodeJS con monit, veremos constantemente el siguiente gráfico en nuestra terminal:

captura-de-pantalla-de-2017-01-27-093641

Para cerrarlo, basta con teclear Ctrl + C.

Listar todos los procesos/app corriendo con pm2:

$ pm2 list

captura-de-pantalla-de-2017-01-27-093846

Detener un proceso a través de su id o nombre (podemos ver el id de cada proceso ejecutando pm2 list):

$ pm2 stop 0

captura-de-pantalla-de-2017-01-27-095837

Reiniciar algún proceso a través de su nombre o id:

$ pm2 restart 0

captura-de-pantalla-de-2017-01-27-095918

Y, si queremos un poco más de información de alguna de nuestras apps en ejecución, podemos ver los detalles a través del comando:

$ pm2 show 0

Donde “0” es el id del proceso a detallar.

captura-de-pantalla-de-2017-01-27-095709

Como se observa, tenemos a nuestra disposición un manager para nuestras aplicaciones NodeJS con un par de ejecuciones, pero esto no es todo. PM2 nos ofrece una gamma de features de lo más interesantes (además de potentes) que nos ayudarán a desplegar y mantener una app NodeJS de forma sencilla bien sea que estemos en un ambiente de desarrollo o producción.

Entre algunos de los features que ofrece PM2 podemos mencionar un cluster mode, la creación de perfiles de ejecución a nuestro gusto y medida a través de un process file, log management y, por si fuera poco, integración con Docker.

Si desean ir aún más allá en la administración de procesos con NodeJS y PM2, los invitamos a darse un paseo por su documentación. ¡No olviden comentar cómo les fue probando PM2 y dejarnos su opinión al respecto!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s