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.
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:
- Alto nível de produtividade;
- Segurança;
- 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!