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.

PM2

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.

PM2 - Node.js exemplo1

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.

PM2 - Node.js exemplo2

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.

PM2 - node.js exemplo3

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.
 

Autor

Ismael Soares é Gerente de Engenharia de Software na Bluesoft em São Paulo. É formado em banco de dados pela Faculdade Impacta de Tecnologia e possui mais de 14 anos com experiências em análise e desenvolvimento de sistemas. Já trabalhou com diversas tecnologias, entre elas: VB6, ASP, PHP, C#.NET, VB.NET, ASP.NET, PL/SQL, T-SQL, Groovy, Ruby e Java. Já participou de diversos projetos com banco de dados entre eles: Oracle, MSSQL Server, MySQL e Postgree.

Deixe aqui o seu comentário