Quando terminamos uma aplicação, em que lugar podemos disponibilizar para outras pessoas acessarem? O que preciso para fazer para o web app funcionar? Hoje vou falar sobre o que é deploy e dar um exemplo de como fazê-lo corretamente.
Em primeiro lugar, podemos considerar deploy como uma fase do ciclo de vida de um software.
Basicamente, usamos este termo quando vamos disponibilizar o sistema em um ambiente de desenvolvimento, para testes ou em produção.
O termo deploy pode ser usado para muitos casos, dependendo muito do ambiente e da tecnologia. Um desenvolvedor pode fazer o Deploy da sua aplicação web no Tomcat localmente, ou em serviços como a AWS.
Automação de Deploy
O Deploy da sua aplicação pode ser feito de forma manual, parcialmente ou completamente automatizado.
Um processo automatizado pode consistir em realizar commit do código em um repositório e esta ação dispara automaticamente o processo de construção (build) do executável da aplicação e a sua disponibilização no servidor.
Nesse sentido, quando falamos da automatização do Deploy, não significa que a aplicação precise estar 100% automatizada. No caso, não necessariamente um commit vai acabar em produção, o que importa é que todos os passos trabalhosos estejam automatizados.
Desenvolvedores e administradores DevOps, por exemplo, devem configurar este ambiente de forma mais adequada a cada projeto, diminuindo o retrabalho.
Um bom exemplo é quando nem todo commit de código faz sentido gerar uma versão para produção. Então vários critérios podem ser adotados, a principal estratégia é o uso de branches para diferentes ramificações no desenvolvimento.
Integração Contínua – CI – Continuous Integration
Da mesma forma, essa automatização não visa apenas evitar retrabalho mas também permite aos desenvolvedores alcançarem um nível superior de produtividade e entrega de qualidade.
Para quem é desenvolvedor, encontrar uma aplicação que os responsáveis disseram: “Já está pronta, só falta testar”, e depois descobrir que muita coisa precisava ser corrigida é uma situação comum.
Postergar o teste do código é uma situação recorrente. Pois sem testes e deploy automatizados, o desenvolvedor escreve muito código antes de colocar o programa para executar, isto acaba levando a um retrabalho desnecessário.
Como o deploy funciona
Quando falamos de Deploy de uma aplicação, geralmente existem duas opções: VPS ou PaaS (Platform as a Service). Este artigo irá te mostrar como fazer deploy da sua aplicação para produção em um serviço PaaS como o Heroku.
Passo 1 – Crie seu projeto
Primeiramente, devemos criar uma estrutura simples com alguns arquivos básicos. Para este artigo eu irei criar uma aplicação NodeJS.
Em uma nova pasta você pode abrir o seu terminal e rodar o comando npm init -y para criar um novo projeto. O servidor será feito com o Express, precisamos rodar o comando npm install express para instalar o módulo.
Uma vez instalado, escolha seu editor de texto preferido e abra o projeto para criar um novo arquivo chamado app.js. Então iremos deixar ele da seguinte forma:
const app = require('express')();
const PORT = process.env.PORT || 3000;
app.get('', (req, res) => {
res.send(“Hello World”);
});
app.listen(PORT, () => {
console.log(`Este app está escutando na port ${PORT}`);
});
Nós podemos iniciar a aplicação localmente executando o comando node app.js no terminal. Depois disso abra seu navegador na URL http://localhost:3000/. Você poderá ver a mensagem que você programou anteriormente “Hello World” no seu browser.
Passo 2 – Sistema de controle de versão
A próxima etapa é escolher um sistema de controle de versão e colocar nosso código em uma plataforma de desenvolvimento em um repositório.
O sistema de controle de versão mais popular é o Git junto com o Github como plataforma de desenvolvimento, então é isso que usaremos neste tutorial para deploy.
Vá até o GitHub e crie um novo repositório para seu aplicativo, como este:
Para carregar seu código local em um repositório, você precisa executar os comandos listados no Github após clicar no botão Criar repositório:
Antes de fazermos isso, devemos ignorar alguns arquivos. Queremos enviar para o repositório apenas o código que escrevemos, sem as dependências (os módulos do node instalados).
Para isso, precisamos criar um novo arquivo chamado .gitignore e dentro dele escrever o arquivo que queremos ignorar na hora de mandar o código.
Agora podemos executar os comandos do GitHub da imagem anterior.
Se você executou os comandos corretamente, você terá um novo repositório com seu projeto. Se você atualizá-lo, deverá ver seus arquivos, exceto aquele que você ignorou no passo anterior, ou seja, node_modules.
Passo 3 – Linkar o repositório com o Heroku
Aqui nós iremos linkar nosso repositório do GitHub para nosso Aplicação no Heroku.
Primeiramente crie uma aplicação no Heroku e siga os passos da plataforma:
Agora, se você olhar a navegação na parte superior, verá Overview, Resources, Deploy, Metrics e assim por diante. Certifique-se de que Deploy está selecionado. Em seguida,, clique no ícone GitHub e procure pelo repositório que você mandou seu código.
Assim que o aplicativo no GitHub for conectado com sucesso à sua conta Heroku, você pode clicar em Deploy Branch para fazer Deploy do seu aplicativo.
Se desejar, você também pode selecionar a opção Enable Automatic Deploys, isso fará com que toda vez que você realizar um push para o repositório GitHub atualizará no Heroku também.
Passo 4 – Configure o Heroku para executar o aplicativo corretamente
Se você abriu sua a aplicação, você deve ter visto uma tela como esta:
Isso acontece porque o Heroku não sabe como iniciar a aplicação.
Em alguns passos anteriores executamos o comando node app.js para iniciar a aplicação localmente. A app Heroku não tem como saber que é necessário executar este comando para iniciar a aplicação e por isso acontece o erro
Para resolver este problema, devemos criar um novo arquivo denominado Procfile com o seguinte conteúdo: web: node ./app.js.
Dessa forma, para atualizar nosso aplicativo, tudo o que precisamos fazer é enviar um novo commit ao GitHub. Se habilitarmos a opção Automatic Deploys, o código fará automaticamente um novo push para o Heroku. Caso contrário, precisamos clicar em Deploy Branch novamente.
Concluindo o processo de deploy
O Heroku, assim como outros serviços similares, permite que os desenvolvedores façam Deploy de forma rápida e quase sem trabalho de um aplicativo em um servidor web.
Ele também fornece plugins que você pode integrar na sua aplicação para facilitar a sua entrega do produto.
Por fim, este tipo de solução PaaS sempre vai nos permitir ter menos trabalho do que configurar uma VPS onde teriamos que realizar a configuração de um ambiente completo para o mesmo acontecer.
E você, já conhecia o processo de deploy de uma aplicação? Deixa um comentário falando sobre como você executa essa função no seu projeto!