O deploy é um termo famoso entre os desenvolvedores de software. Ele pode significar muitas coisas, dependendo do ambiente e da tecnologia. Porém, os significados que condizem mais com a prática e podem resumir o seu funcionamento são: implantar, colocar em posição, disponibilizar para uso ou simplesmente colocar no ar.

Ouça o conteúdo deste post clicando no player abaixo!

Essa prática evoluiu muito ao longo das décadas. Inicialmente, os deploys eram feitos em ritmo menos acelerado, principalmente porque o processo era basicamente manual. Com o avanço tecnológico, hoje já é possível realizar tudo de forma automática, melhorando a experiência do usuário e agilizando a obtenção dos resultados.

Nesse artigo, mostraremos exemplos de deploy para facilitar o entendimento em relação ao termo. Abordaremos também sobre as 3 formas possíveis de realizá-lo. Boa leitura!

O que é deploy?

Em termos gerais, ele é utilizado para descrever que algo foi colocado na sua posição. Na prática, também é utilizado quando um sistema foi disponibilizado para uso – seja no ambiente de desenvolvimento, para testes ou produção.

Imagine que você criou um site, mas deixou ele parado na sua máquina. No momento em que você o incorporar em um servidor de hospedagem, esse processo será considerado um deploy.

Outro exemplo é quando é gerada uma nova versão de um programa e o desenvolvedor quer implantá-lo em um servidor de aplicação. Ou seja, subir os arquivos atualizados para um servidor – que pode ser um ambiente de homologação ou de produção. Isso também significa fazer um deploy.

Mas atenção: não confunda implantar com implementar, pois são coisas bem diferentes!

Implantar consiste em iniciar alguma coisa, enquanto implementar é o ato de colocar essa coisa em prática. Trazendo para a nossa área, quando se inicia o desenvolvimento de um sistema, ele está sendo implantado. No momento em que passa a ser utilizado pelos usuários, foi implementado.

Quais são as formas de realizar deploy?

Como dissemos antes, o processo de deploy de sistemas evoluiu muito durante décadas. Hoje, existem basicamente 3 formas de realizá-lo. Ele pode ser:

1 – Manual

Um exemplo desse processo é Protocolo de Transferência de Arquivos, conhecido como FTP. Trata-se de um tipo de conexão que permite que dois computadores com acesso à internet troquem arquivos. Esse processo é realizado totalmente de forma manual, necessitando que haja comando de alguma pessoa.

Sabe quando você precisa alterar uma coisa pequena no seu arquivo JS e faz o seu upload para a produção? Isso também é um deploy manual.

2 – Parcialmente automatizado

Um exemplo pode ser aquele push do branch master que se faz no repositório Git que roda um pequeno hook e atualiza o servidor de hospedagem. Apesar de necessitar de alguns comandos, o processo ocorre de forma automática.

Sua vantagem é o controle de versão e o estado de cada deploy.

3 – Completamente automatizado

É o que há de mais moderno no desenvolvimento de sistemas. Ele não apenas copia suas alterações automaticamente para o servidor, mas também está intimamente ligado com o conceito de integração contínua.

Além da cópia propriamente dita, o deploy contínuo oferece diversas vantagens, pois é com ele que é possível trabalhar com as alterações, também conhecidas como integrações, feitas por variados programadores.

A ferramenta de deploy, neste caso, realiza todos os testes necessários para que não haja problemas para juntar todas as integrações em produção. E as possibilidades são infinitas, desde:

  • Atualizar bibliotecas;
  • Testar conectividade de servidores;
  • Simular visitas e entradas de dados.

Tudo isso é feito forma automática e, se alguma coisa der errado, o deploy é revertido.

Uma das ferramentas mais famosas para fazer deploy automatizado é o Jenkins. Dentre os seus benefícios, destacam-se:

  1. Alto nível de produtividade;
  2. Segurança;
  3. Qualidade no desenvolvimento de softwares.

Estratégias que podem ser utilizadas para deploy

Existem 3 estratégias muito simples de serem implementadas e que permitem realizar deploy no dia a dia. São elas:

1 – Rolling

Consiste em subir os serviços com a nova versão do código. A versão antiga é totalmente substituída, porém apenas quando a nova estiver apta para ser executada. Logo, o deploy é feito gradualmente e, enquanto a nova versão não está 100% completa, elas coexistem em produção.

2 – Blue-Green

Se caracteriza por ter dois ambientes idênticos, conhecidos como mirror, sendo que na frente deles existe um load balancer – permitindo o direcionamento do tráfego para o ambiente desejado.

O benefício dessa estratégia é que é possível subir uma nova versão da aplicação que está em produção, enquanto apenas a versão atual (blue) fica recebendo as requisições. Assim que os testes forem finalizados na nova versão (green), é possível fazer com que as novas requisições sejam apontadas para ela.

Essa estratégia permite realizar os testes em produção, antes que os usuários tenham acesso ao serviço.

3 – Canary

Trata-se da estratégia mais complexa que pode ser utilizada. Ela consiste em colocar a nova versão em produção para uma parcela de usuários. É possível, por exemplo, liberar que determinado serviço será acessado apenas por usuários do sexo masculino que tenham menos de 30 anos.

O interessante desse formato é que permite testar a nova versão na prática e acompanhar a reação antes de liberar o acesso a todos.

Quer saber mais sobre o assunto? Entre no canal do Código Fonte TV e veja o vídeo super bacana que a galera compartilhou sobre o assunto.

Não esqueça de deixar o seu comentário abaixo!