O Que É um Deployment?
Um deployment é o ato de pegar uma versão construída do seu software e colocá-la na infraestrutura onde ela vai rodar.
O deployment é a etapa em que o código deixa de ser um build artifact parado numa prateleira e passa a ser software rodando em servidores reais. É um dos momentos mais consequentes do ciclo de vida, e é por isso que as equipes trabalham duro para torná-lo rotineiro e reversível.
O que significa fazer deploy
Fazer deploy é instalar e ativar um build específico em um ambiente alvo: copiar o artifact para os servidores, atualizar a configuração, iniciar a nova versão e rotear o tráfego para ela. O ambiente pode ser staging, produção ou qualquer coisa entre os dois.
Como um deployment funciona
- Selecionar o artifact (um build versionado) para fazer deploy.
- Provisionar ou reutilizar o ambiente alvo e sua config.
- Enviar o artifact e rodar quaisquer migrações de banco de dados.
- Iniciar a nova versão e rodar checagens de saúde e smoke tests.
- Transferir o tráfego, mantendo um caminho para fazer rollback.
Deployment versus release
Esses são frequentemente confundidos. Um deployment coloca código novo na infraestrutura; um release torna uma funcionalidade disponível aos usuários. Com feature flags você pode fazer deploy de código sem fazer release dele, depois ativar a funcionalidade mais tarde. Separar os dois reduz o risco: o deploy arriscado e a mudança voltada ao usuário acontecem em momentos diferentes.
Um exemplo
Um novo build de um app web é deployado em produção. A ferramenta de deployment inicia as novas instâncias, espera as checagens de saúde passarem e depois transfere gradualmente o tráfego da versão antiga para a nova. Se as taxas de erro disparam, o tráfego volta, um rollback automatizado.
Por que automatizar
Deployments manuais são lentos e fáceis de errar sob pressão. Deployments automatizados e scriptados são consistentes, rápidos e exercitados constantemente, o que os torna confiáveis. Estratégias como blue-green e canary deployments tornam o processo mais seguro ao limitar quanto é exposto a risco de uma vez.
Principais conclusões
- Um deployment instala e ativa um build em um ambiente.
- Fazer deploy de código é distinto de fazer release de uma funcionalidade para os usuários.
- Automação e estratégias progressivas tornam os deployments seguros.