Para aqueles que não conhecem o Node.js, ele é uma plataforma construída baseada na V8 Javascript Engine para criação de aplicações escaláveis.
Nesse artigo, iremos falar um pouco sobre a utilização do PM2 para resolver “problemas” de Node.js e deployment.

O que é?
O PM2 é um gerenciador de processos para aplicações Node.js que permite que a aplicação rode em múltiplos processos.
Por que usar?
Por padrão, o Node.js é executado single-thread devido ao próprio javascript ser projetado dessa forma. Caso ocorra uma exceção no servidor, o processo será parado e consequentemente a aplicação será derrubada.
Utilizando o PM2, caso ocorra alguma exceção, ele irá manter a aplicação no ar reiniciando o servidor.
Além disso, o PM2 possibilita que a aplicação rode em múltiplos processos, assim é possível escalar o servidor utilizando múltiplos cores da CPU e o processamento da aplicação será expandido.
Ainda não entendi
Usemos como base o servidor fornecido na página oficial do Node.js. Após instalar o PM2 podemos subir o servidor usando a linha de comando pm2 start app.js –x
no modo fork.

Assim como na imagem acima, no terminal temos a visualização de que o processo foi iniciado com sucesso.
Caso algum problema ocorra na aplicação, utilizando o comando pm2 list
poderemos ver que na coluna restart do app, teremos 1 no lugar de 0, indicando que ele precisou reiniciar a aplicação.

Subindo o servidor no modo cluster através do comando pm2 start app.js –i 0
serão iniciados o máximo de processos possíveis por CPU core, como na imagem acima.
Caso algum problema ocorra na aplicação, um dos processos terá o valor de restart modificado.
Como funciona o deploy?
Algumas considerações são necessárias para realizar o deploy com o PM2.
Usando o comando pm2 ecosystem
, um arquivo ecosystem.json será gerado na sua pasta. Neste arquivo será possível declarar aplicações com diferentes hosts para o deploy, conforme exemplo abaixo.

Para iniciar o deploy é necessário utilizar o comando pm2 deploy setup
.
Considerações finais do Autor
Desde que ouvi sobre o PM2 no Meetup de Node.js em Março/2015, identifiquei que muitas são as soluções para múltiplos processos e deploy de Node.js.
Mas assim como falado no evento, é necessário avaliar qual a melhor solução para o seu cenário. Seguem outros links com mais informações sobre o pm2 e como realizar o deploy.
Imasters – Mantendo Node.JS no Ar
Json Deploy
PM2 Advanced Readme
Até a Próxima!
Agradecimentos especiais a Priscila Negreiros pela contribuição com o Tema e desenvolvimento do texto.