CI/CD — Continuous Integration and Continuous Delivery
Integração Contínua (Continuous Integration)
A Integração Contínua é uma prática de desenvolvimento de software de DevOps em que os desenvolvedores, com frequência, juntam suas alterações de código em um repositório central. Depois disso, compilações (builds) e testes automatizados são executados. A integração contínua geralmente se refere ao estágio de construção ou integração do processo de lançamento do software e envolve um componente de automação (por exemplo, um CI ou um serviço compilação) e um componente cultural (por exemplo, aprender a integrar com frequência). Os principais objetivos da integração contínua são encontrar e investigar bugs mais rapidamente (fail-fast principle), melhorar a qualidade do software e reduzir o tempo que leva para validar e lançar novas atualizações de software.
Por que a integração contínua é necessária?
No passado, os desenvolvedores de uma equipe podiam trabalhar isoladamente por um longo período e só juntar suas alterações (merge) à ramificação mestre (master branch) quando concluíssem seu trabalho. Dessa forma, a junção das alterações de códigos era difícil e demorada, além de resultar no acúmulo de erros sem correção por longos períodos. Estes fatores dificultavam uma distribuição de atualizações rápida para os clientes.
Como funciona a integração contínua?
Com a Integração Contínua, os desenvolvedores frequentemente juntam seus códigos (commit) um repositório compartilhado usando um sistema de controle de versão, como o Git. Antes de cada confirmação, os desenvolvedores podem optar por executar testes de unidade local em seu código como uma camada de verificação extra antes de integrá-lo. Um serviço de integração contínua cria e executa automaticamente testes de unidade nas novas alterações de código para detectar imediatamente quaisquer erros.
Distribuição Contínua (Continuous Delivery)
A Distribuição Contínua é uma prática de desenvolvimento de software na qual as alterações de código são automaticamente preparadas para uma liberação para produção. Um pilar no desenvolvimento de aplicações modernas, a distribuição contínua expande a integração contínua, implantando todas as alterações de código em um ambiente de teste e/ou ambiente de produção, após o estágio de compilação de código. Quando implementada adequadamente, os desenvolvedores sempre terão um artefato compilado pronto para implantação que já passou por um processo de teste padronizado.
A distribuição contínua permite que os desenvolvedores automatizem testes que vão além dos testes de unidade, de forma que seja possível verificar atualizações de aplicações em várias dimensões antes de implantá-las para seus clientes. Esses testes podem incluir testes de interface, carga, integração confiabilidade de API, etc. Isso ajuda desenvolvedores a validar mais detalhadamente as atualizações e descobrir problemas de modo preventivo.
Distribuição contínua vs Implantação contínua (Delivery vs Deployment)
Com a distribuição contínua, cada alteração de código é criada, testada e, em seguida, enviada para um ambiente de teste ou validação, que não pertence à produção. É possível que existam vários ambientes de teste paralelos antes de uma implantação de produção. A diferença entre entrega contínua e implantação contínua é a presença de uma aprovação manual para atualizar o ambiente de produção. Com a implantação contínua, a atualização da produção ocorre automaticamente, sem aprovação explícita.
Benefícios da integração e distribuição contínua
Melhore a produtividade do desenvolvedor: Estas práticas ajudam sua equipe sua equipe a ser mais produtiva ao liberar os desenvolvedores de tarefas manuais e encorajar comportamentos que ajudam a reduzir o número de bugs liberados para os clientes.
Encontre e investigue bugs mais rapidamente: Com testes mais frequentes, sua equipe pode descobrir e corrigir bugs mais cedo, antes de se transformarem em problemas maiores mais tarde. A distribuição contínua permite que você realize mais facilmente testes adicionais em seu código, pois o processo completo já foi automatizado.
Automatize o processo de lançamento de software: A distribuição contínua permite que a sua equipe crie, teste e prepare automaticamente alterações de código para liberar a produção, de modo que a distribuição de software seja mais rápida e eficiente.
Distribua atualizações mais rapidamente: A integração contínua ajuda a sua equipe a distribuir atualizações para seus clientes com mais rapidez e frequência. Quando a distribuição contínua é implementada adequadamente, você sempre terá um artefato compilado pronto para ser implantado e que passou por um processo de teste padronizado.
Ferramentas que podem apoiar o CI/CD
Abaixo algumas ferramentas que podem te ajudar na sua jornada de implantação do modelo DevOps, com integração e distribuição contínua: