Cambiando de forever hacia pm2

PM2
PM2

No es ningún secreto quienes trabajamos en Qbit Mexhico utilizamos NodeJS para realizar tareas desde el lado del servidor, algunas veces mezclado con Angular, Backbone y React como clientes, la idea principal desde hace un tiempo ha sido crear APIs en las que utilizamos muy poco oauth y mucho jwt. Debo admitir que nodejs frente a otras plataformas de desarrollo, es bastante rápido y tiene muchas muy buenas librerías tanto para conexión a bd, mapeo relacionales, login, debuggin y ahora deploying con PM2 es que de lo que hablaré un poco en este artículo.

No tengo idea de como ponen sus aplicaciones hechas en nodejs en producción, ya que hay muchas maneras de hacerlo, una de tantas y la que estaba utilizando anteriormente era forever, muy buena por cierto, pero en la que se extrañaba algunas buenas características, por ej. monitoreo, generación de logs, consumo de memoria y tiempo de ejecución. Así es que ya saben hacia donde voy con PM2, pues todo eso se puede conseguir al utilizar esta librería, entonces empecemos.

Lo primero es saber como se instala:

npm install -g pm2

Clusterización nativa

En Node v0.6 se introdujo la característica de clustering, permitiendo compartir un socket a través de multiples aplicaciones de node interconectadas,, el problema con esto es que es bastante confuso y difícil de aplicar, aparte de que requiere bastante control para manejar procesos hijos y padres, en pocas palabras es algo complejo aún.

PM2 maneja esto de forma nativa, me refiero a que sin código extra PM2 por si mismo maneja este tipo de procesos, envolviendo el código de nuestras aplicaciones y poniéndolo en un procesos especiales de cluster, como nodejs lo hubiese hecho, no me pregunten por los detalles técnicos, ya que no me he metido mucho a ver como lo hacen, pero funciona muy bien.

Para empezar a utilizar una aplicación en modo cluster y que ésta utilice todos los CPU (tema para otro artículo), solamente es necesario escribir algo como:

$ pm2 start app.js -i max

O si no quieren utilizar clusterización, pueden lanzar su aplicación de la forma simple que es:

$ pm2 start app.js --name "Demo"

Entonces al listar los aplicaciones corriendo desde PM2 con

$ pm2 list

Verán que su aplicación esta corriendo en multiples procesos, eso dependiendo del número de procesadores que tengan disponibles en su servidor.

Registro de logs y vistas en tiempo real

Pues bien, ahora que tenemos nuestra aplicación corriendo en modo cluster, sería bueno obtener que está ocurriendo en cada proceso, digamos que para ello su forma de registrar logs fue utilizando console.log() .. solo que desde pm2 no verán ninguna salida, por lo que deben ejecutar el siguiente comando:

$ pm2 logs

Sobre PM2 hay mucho de que hablar y es una gran herramienta para poner en modo productivo las aplicaciones desarrolladas en Node, pueden revisar más ejemplos y leer la documentación donde encontrarán muchos otros comandos y casos prácticos para poner a punto sus node apps..

http://pm2.keymetrics.io/

Happy Coding!! 😀

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Twitter LinkedIn Flickr YouTube 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *