Continuous Delivery e Continuous deployment – São termos frequentemente usados em DevOps e causam bastante confusão por serem bem parecidos 🙂
Neste artigo vamos entender suas características e como se complementam!
Continuous Delivery
Continuous Delivery é uma prática que automatiza o ciclo de vida do desenvolvimento de software, permitido que uma nova versão ou funcionalidade esteja pronta para ser implantada em produção a qualquer momento.
Para entregar software com qualidade e de forma continua é preciso garantir que processos manuais e tarefas repetitivas sejam automatizados, além tornar o processo mais ágil a automação ajuda reduzir possíveis erros humanos.
Na figura acima quase todo o processo é automatizado, exceto o deploy em produção. Isso acontece porque em algumas empresas existe um time chamado CAB (change approval board).
O CAB é responsável por aprovar ou não um novo deploy em produção, e é justamente aqui onde começamos falar sobre Continuous Deployment.
Continuous Deployment
Continuous Deployment significa que qualquer alteração feita em seu software, seja ela corretiva, evolutiva… Será integrada, testada, compilada e se passar por todos os testes unitários e de integração, será implantada diretamente em produção sem intervenção humana!
Essa abordagem depende extremamente da qualidade dos testes automatizados pois serão estes que irão dizer se o software pode ou não entrar em produção.
Continuous Delivery e Deployment na vida real
Seu cliente reportou que os usuários do e-commerce estão recebendo uma mensagem de erro aleatória que afeta diretamente o processo de compras no portal, este problema precisa ser corrigido o mais rápido possível pois estamos em Black Friday!
O time de desenvolvimento recebe este feedback e para simular o erro precisa fazer o deploy em um ambiente interno similar ao de produção, isso precisa acontecer rápido!
É acionado um deploy com base na release de produção, os testes automatizados são executados com sucesso e a aplicação é implantada no ambiente interno sem intervenção humana. Isso é o que chamamos de Continuous Delivery!
Em seguida, o erro é rapidamente identificado, corrigido e um novo deploy automático é acionado, mas agora o deploy é feito diretamente em produção. Sim! Acabamos de fazer um Continuous Deployment!
Podemos dizer então que:
Continuous Deployment é o resultado natural de um Continuous Delivery bem feito!
Conclusão
A diferença entre Continuous Delivery e Continuous Deployment está na forma como entregamos nosso software em produção. Na primeira abordagem o deploy é feito de forma manual dependendo de uma aprovação, já na segunda abordagem o deploy é feito diretamente em produção, de forma continua e sem intervenção humana.
É importante dizer que em ambos os casos é mandatório que 100% do código esteja coberto por testes automatizados.
Que tal colocar estes conceitos em prática?
Até o próximo post!
Faça parte da minha rede: www.linkedin.com/in/eduardofrancellino