O Que É Entrega Contínua?
Entrega contínua é a prática de manter seu software em um estado sempre pronto para release, de forma que qualquer build aprovado poderia ir para produção com uma única decisão.
A entrega contínua estende a integração contínua para além da fase de testes. Onde a CI garante que o código faz build e passa nos testes, a entrega contínua garante que o resultado esteja empacotado e pronto para deploy a qualquer momento. O ato de fazer release torna-se uma decisão de negócio, não uma correria de engenharia.
O que "sempre pronto para release" significa
Toda mudança que passa pelo pipeline é automaticamente transformada em um artifact pronto para deploy e promovida por ambientes como o staging. O artifact fica pronto; um humano (ou um agendamento) decide quando apertar o botão final para produção. Nada sobre o deploy exige montagem manual de última hora.
Entrega versus deployment
A entrega contínua mantém o deployment de produção como uma etapa deliberada e com portão. O deployment contínuo remove esse portão, enviando cada mudança aprovada automaticamente. A entrega é "pronto para enviar sob demanda"; o deployment é "envia-se sozinho". Muitas equipes praticam a entrega primeiro e adotam o deployment depois, à medida que a confiança cresce.
Um exemplo
Uma equipe faz merge de várias funcionalidades ao longo de uma semana. Cada uma é automaticamente deployada no staging e verificada. Na quinta-feira o product owner decide fazer o release; como toda mudança já está empacotada e testada, o deploy de produção é uma única aprovação que leva minutos, não um evento de release de várias horas.
Por que reduz risco
Como artifacts prontos para release são produzidos continuamente, os releases permanecem pequenos e frequentes. Releases pequenos são mais fáceis de testar, mais fáceis de raciocinar e mais fáceis de reverter. O próprio processo de release é exercitado constantemente, então ele é confiável quando importa.
O que ela requer
- Uma base de CI confiável com testes dignos de confiança.
- Deployment automatizado para pelo menos um ambiente de pré-produção.
- Artifacts de build versionados e reproduzíveis.
- Um caminho de promoção claro e rápido para produção.
Principais conclusões
- A entrega contínua mantém o software sempre pronto para release.
- O deploy de produção permanece uma decisão deliberada e com portão.
- Ela torna os releases pequenos, frequentes e de baixo risco.