- Início » Programação » Agile » Diferenças entre integração contínua, deploy e entrega contínua?
Em resumo: as diferenças são que a Integração é processo. Entrega contínua é resultado. Deploy são validações das etapas anteriores.
A integração contínua é um processo com o propósito de controlar o ciclo de vida do código de um sistema desenvolvido por várias pessoas e que provavelmente têm vários módulos distintos que precisam ser "integrados". Além de serem integrados esse processo tenta garantir que isso ocorra continuamente, ou seja, que exista um certo padrão nos procedimentos que permita tratar os problemas que ocorrerem de uma forma lógica sem ter que parar para pensar na solução a cada problema.
Os partes mais comuns da integração contínua (bem resumidamente) são:
Repositórios de código fonte: em que você pode controlar as versões, ou seja, é possível ter uma "foto" do código fonte de cada pacote que você liberar para testes, por exemplo.
Etapas de Build: em que você pode ter um script automatizado que faz a compilação do código fonte e gerar um "pacote" testável do seu sistema. No caso em que o código não compila os desenvolvedores são alertados assim que fazem o commit dos fontes.
Etapas de Testes: em que você pode realizar testes manuais ou automatizados (unitários, integração, etc) dos seus pacotes.
Setup: em que você pode gerar um "pacote" de todo o sistema que pode ser instalado em um ambiente para testes ou de produção.
A entrega contínua é um resultado do processo de integração continua com entrega de pacotes instaláveis para o cliente, ou seja, a cada período é feito a entrega de um pacote do sistema que contém os ajustes e novas funções.
Dessa forma, é possível ter o processo de integração contínua sem necessariamente fazer entregas contínuas. O termo "Integração Contínua" vem da década de 1990 e "Entrega Contínua" é mais recente porque se tornou mais viável com as novas tecnologias e softwares dedicados a rodar e monitorar os processos.
A Integração contínua promove o trabalho conjunto e para isso é essencial que o uso de uma solução de controle de versão, como o Gitlab, Github, CVS ou Subversion. Essas ferramentas criam um repositório principal para armazenar o código e manter versões com cada modificação realizada para que seja possível revertê-las e auditá-las sempre que preciso.
A Entrega Contínua é um conjunto de práticas com o objetivo de garantir que um novo código esteja apto para ser disponibilizado em ambiente de produção. A prática incorpora além de todas ações previstas na Integração Contínua, processos adicionais e necessários para que a modificação seja acessível a usuários e assim sejam realizadas inspeções finais, sejam elas manuais e/ou automatizadas.
Esta prática é o próximo passo da Entrega contínua. Assim que o programador julga pronto seu código e aciona a solicitação para deploy, são realizadas todas validações previstas nas metodologias anteriores e, se não houverem falhas, o novo código é disponibilizado automaticamente em ambiente de produção.
A Implantação contínua não se aplica a toda empresa. Foi pensada principalmente, mas não exclusivamente para o desenvolvimento de aplicações para web. Há muitas vezes regras de governança rígidas e necessidade de testes manuais que impedem o uso desta metodologia. Mas recomenda-se as empresas que tenham a possibilidade que tentem aplicá-la porque promove mudanças positivas e profundas na organização. Como o programador tem capacidade de colocar suas alterações em produção de forma autônoma ele passa a ser mais preocupado com questões de qualidade e confiabilidade. Com pequenas mudanças disponíveis constantemente em produção, a empresa passa a receber feedbacks pontuais e realistas de seus clientes e assim pode determinar o valor agregado e assim decidir se deve investir mais na nova funcionalidade
Implantação contínua deve incorporar ferramentas de monitoramento no ambiente de produção para certificar como as alterações influenciaram o uso de recurso. Métricas como quantidade de acesso, volume de tráfego, tempo de resposta, uso de recursos e outras devem ser monitoradas automaticamente.