Full stack

O que é deploy e como enviar um Web App ou site para produção

Planejar um aplicativo, desenvolvê-lo e ver seu código funcionando perfeitamente após um período de testes são algumas das etapas antes da temida implantação.

Muito necessário pois sem ele o usuário final não poderá utilizar nenhum site, software ou aplicativo, processo que gera muitas dúvidas entre os estudantes de programação.

Afinal, como implantar? O que exatamente esse processo inclui? Existe apenas uma maneira de obter o aplicativo online?

No conteúdo de hoje, responderei a todas essas perguntas! vamos?

O que é Deploy em programação?

O verbo implantar significa implantar em inglês.

Na programação, seu significado está intimamente relacionado à sua tradução literal: deployment, que na verdade se refere a colocar no ar algum aplicativo já desenvolvido.

Essa tarefa é extremamente comum no âmbito do trabalho de um programador, embora geralmente seja associada apenas a profissionais de infraestrutura ou DevOps.

Quando um site é concluído por desenvolvedores e testado e finalmente hospedado e ativo, ele passa por um processo de implantação.

Da mesma forma, quando um sistema faz algumas melhorias ou alterações em seu código-fonte, implementar as alterações em um sistema ativo também é uma implantação.

Automação de Deploy

A implantação do seu aplicativo pode ser feita manualmente, parcialmente ou totalmente automatizada.

O processo automatizado pode incluir a confirmação de código para um repositório, e essa ação aciona automaticamente o processo de compilação (compilação) do executável do aplicativo e sua disponibilidade no servidor.

Nesse sentido, quando falamos em automação do Deploy, não significa que a aplicação precisa ser 100% automatizada. Nesse caso, o commit não necessariamente termina em produção, é importante que todas as etapas trabalhosas sejam automatizadas.

Por exemplo, desenvolvedores e administradores de DevOps devem configurar esse ambiente de forma mais adequada para cada projeto, reduzindo o retrabalho.

Um bom exemplo é que nem todo commit de código faz sentido para produzir uma versão de produção. Para que diversos critérios possam ser adotados, a principal estratégia é utilizar branches para diferentes branches em desenvolvimento.

Integração Contínua – CI – Continuous Integration

Novamente, essa automação não foi projetada apenas para evitar retrabalho, mas também permite que os desenvolvedores alcancem níveis mais altos de produtividade e entrega de qualidade.

É muito comum um desenvolvedor encontrar um aplicativo, o lead diz: “Está pronto, só precisamos testá-lo” e descobrir que há muito o que corrigir.

O teste de código atrasado é uma situação recorrente. Porque sem testes e implantação automatizados, os desenvolvedores escreveriam muito código antes que o programa fosse executado, o que acabaria levando a um retrabalho desnecessário.

Como o deploy funciona

Quando falamos de implantação de aplicativos, geralmente há duas opções: VPS ou PaaS (Platform as a Service). Este artigo mostrará como implantar um aplicativo para produção em um serviço PaaS como o Heroku.

Passo 1 – Crie seu projeto

Primeiro, temos que criar uma estrutura simples com alguns arquivos básicos. Para este artigo, criarei um aplicativo NodeJS.

Em uma nova pasta, você pode abrir um terminal e executar o comando npm init -y para criar um novo projeto. O servidor será feito usando Express, precisamos executar o comando npm install express para instalar o módulo.

Uma vez instalado, escolha seu editor de texto favorito e abra o projeto para criar um novo arquivo chamado app.js. Então vamos fazer isso:

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}`);

});

Podemos iniciar o aplicativo localmente executando o comando node app.js no terminal. Em seguida, abra um navegador e visite a URL http://localhost:3000/. Você poderá ver a mensagem “Hello World” que escreveu anteriormente em seu navegador.

Passo 2 – Sistema de controle de versão 

O próximo passo é escolher um sistema de controle de versão e colocar nosso código na plataforma de desenvolvimento no repositório.

Os sistemas de controle de versão mais populares são o Git e o Github como plataforma de desenvolvimento, portanto, usaremos isso para implantação neste tutorial.

Vá para o GitHub e crie um novo repositório para seu aplicativo assim:

Para fazer upload do seu código local para o repositório, você precisa executar o comando listado no Github após clicar no botão criar repositório:

Antes de fazermos isso, temos que ignorar alguns arquivos. Nós apenas queremos enviar o código que escrevemos para o repositório sem dependências (módulos de nós instalados).

Para fazer isso, precisamos criar um novo arquivo chamado .gitignore e escrever nele os arquivos que queremos ignorar ao enviar o código.

Agora podemos executar o comando GitHub da imagem anterior.

Se você executou o comando corretamente, seu projeto terá um novo repositório. Se você atualizá-lo, deverá ver seus arquivos, exceto aquele que pulou na etapa anterior, que é node_modules.

Passo 3 – Linkar o repositório com o Heroku

Aqui, vinculamos nosso repositório GitHub ao nosso aplicativo no Heroku.

Primeiro crie um aplicativo no Heroku e siga as etapas da plataforma:

linkar-repositorio-heroku

criar-novo-app-heroku

Agora, se você olhar para a navegação na parte superior, verá Visão geral, Recursos, Implantações, Métricas etc. Certifique-se de que Deploy esteja selecionado. Em seguida, clique no ícone do GitHub e procure o repositório para o qual você carregou o código.

app-heroku-deploy

Depois que seu aplicativo no GitHub estiver conectado com sucesso à sua conta Heroku, você pode clicar em Deploy Branch para implantar seu aplicativo.

Se desejar, você também pode selecionar a opção Enable Automatic Deploys, que fará com que toda vez que você enviar para seu repositório GitHub, ele também seja atualizado no Heroku.

enable-automatic-deploys

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:

configure-heroku

Isso ocorre porque o Heroku não sabe como iniciar o aplicativo.

Em algumas das etapas anteriores, executamos o comando node app.js para iniciar o aplicativo localmente. O aplicativo Heroku não tem como saber que este comando deve ser executado para iniciar o aplicativo, por isso ocorre o erro

Para corrigir isso, temos que criar um novo arquivo chamado 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 para o GitHub. Se habilitarmos a opção Automatic Deploys, o código será reenviado automaticamente para o Heroku. Caso contrário, precisamos clicar em Deploy Branch novamente.

Concluindo o processo de deploy

O Heroku, como outros serviços semelhantes, permite que os desenvolvedores implantem aplicativos de forma rápida e quase sem esforço em servidores da web.

Ele também fornece plugins que você pode integrar ao seu aplicativo para facilitar a entrega do produto.

No final das contas, esse tipo de solução PaaS sempre terá menos trabalho para nós do que configurar um VPS, onde temos que configurar um ambiente completo para que a mesma coisa aconteça.

E você, já conhece o processo de implantação de um aplicativo? Deixe um comentário para falar sobre como você implementou esse recurso em seu projeto!