🤔 ¿Qué es PM2?
PM2 es una herramienta de gestión de procesos para Node.js que ofrece características como recarga sin tiempo de inactividad y balanceo de carga, entre otras.
Características principales de PM2
- Monitorización de estado y seguimiento detallado
- Balanceo de carga y gestión de cluster
- Administración de memoria y gestión de logs
- Reinicio automático de aplicaciones en caso de fallos,
- Capacidad para lanzar aplicaciones en modo fork o cluster
- Posibilidad de añadir o eliminar dinámicamente procesos de un cluster
- Integraciones con herramientas de DevOps como Docker y Kubernetes
Ventajas de Usar PM2
- Gestión de procesos automatizada para una disponibilidad continua
- Recarga sin tiempo de inactividad (zero-downtime reload)
- Balanceo de carga para un mejor rendimiento
Vamos a entrar en materia… empezamos con la instalación 😉
🤓 Instalación y Configuración
Realizaremos la instalación global de PM2 en nuestro sistema para facilitar la gestión de cualquier aplicación Node.js desde cualquier lugar.
npm install -g pm2
🧐 Monitoreo y Mantenimiento
Para monitorear tus aplicaciones Node.js con PM2, puedes utilizar una serie de comandos útiles que te proporcionan información detallada sobre el estado y el rendimiento de tus procesos.
# Muestra una lista de todas las aplicaciones que están siendo gestionadas por PM2
pm2 list
# Muestra una lista de todas las aplicaciones que están siendo gestionadas por PM2 con más detalle
pm2 ls
# AWESOME COMMAND 🚨
# Abre una terminal interactiva que permite monitorear el uso de CPU y memoria de cada aplicación en tiempo real
pm2 monit
# Descripción detallada de un proceso específico
pm2 show [app-name o id]
# Similar a pm2 list, pero puede proporcionar una salida más detallada dependiendo de las versiones de PM2
pm2 status
# Permite seguir los logs en tiempo real
pm2 logs [app-name o id]
# Información detallada sobre un proceso específico, útil para la depuración
pm2 describe [id]
# Para aquellos que prefieren una interfaz gráfica 💻
pm2 dashboard
Se pueden combinar estos comandos con scripts de shell o sistemas de monitoreo para automatizar el seguimiento de la salud de las aplicaciones.
🚀 Despliegue de aplicaciones con PM2
PM2 ofrece herramientas que pueden hacer que este proceso sea más eficiente y fiable. Aquí te presento algunos puntos que podrías tratar en tu sección sobre estrategias de despliegue.
Configuración del archivo ecosystem.config.js
El archivo ecosystem.config.js es el corazón de la configuración de PM2 y permite definir el entorno de nuestras aplicaciones Node.js. Aquí puedes especificar:
- Scripts de despliegue: Define los comandos necesarios para ejecutar antes y después del despliegue, como la instalación de dependencias con npm install.
- Repositorio: Indica el origen del código fuente, normalmente un repositorio de Git.
- Información del host: Especifica los servidores donde se desplegará la aplicación.
- Rutas de directorios: Define dónde se guardará el código en los servidores.
- Variables de entorno: Establece las variables específicas del entorno de producción, desarrollo, etc.
Ejemplo de fichero:
module.exports = {
apps: [{
name: 'mi-aplicacion-node',
script: 'app.js',
instances: 'max',
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}],
deploy: {
production: {
user: 'username',
host: ['192.168.0.1'],
ref: 'origin/main',
repo: 'git@github.com:usuario/repositorio.git',
path: '/var/www/mi-aplicacion-node',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',
env: {
NODE_ENV: 'production'
}
},
development: {
user: 'username',
host: ['192.168.0.2'],
ref: 'origin/dev',
repo: 'git@github.com:usuario/repositorio.git',
path: '/var/www/mi-aplicacion-node-dev',
'post-deploy': 'npm install y pm2 reload ecosystem.config.js --env development',
env: {
NODE_ENV: 'development'
}
}
}
};
💻 Comandos de Despliegue
Utilizando pm2 deploy, puedes automatizar todo el ciclo de despliegue:
- Despliegue:
# Preparar el entorno de producción
pm2 deploy production setup
# Despliegue de la aplicación
pm2 deploy production
- Actualización: Si ya está desplegada, pm2 deploy production update actualiza la aplicación.
✅ Rollbacks Automáticos
Si algo sale mal, PM2 puede revertir a un despliegue anterior automáticamente.
# Donde `[n]` es el número de despliegues que quieres retroceder
pm2 deploy production revert [n]
♻️ Zero-Downtime Reload
Con PM2 puedes recargar la aplicación sin tiempo de inactividad, lo que permite que las actualizaciones sean imperceptibles para los usuarios.
pm2 reload ecosystem.config.js
🌐 Estrategias de Escalado
PM2 permite escalar horizontalmente tu aplicación con facilidad mediante el comando.
pm2 scale app +1
❤️ Conclusión
PM2 no solo simplifica la gestión de aplicaciones Node.js, sino que también potencia su estabilidad y rendimiento con herramientas avanzadas de monitoreo, despliegue y escalado.
Te animo a integrar PM2 en tus proyectos y a explorar cómo puede mejorar la disponibilidad y eficiencia de tus aplicaciones.
¿Tienes experiencias con PM2 que te gustaría compartir? ¡Deja tus comentarios abajo y hablemos!