O que é integração contínua e entrega/implantação contínuas? - Prática de integração e entrega contínuas na AWS

O que é integração contínua e entrega/implantação contínuas?

Esta seção discute as práticas de integração e entrega contínuas e explica a diferença entre entrega contínua e implantação contínua.

Integração contínua

Integração contínua (CI) é uma prática de desenvolvimento de software em que os desenvolvedores mesclam regularmente alterações de código em um repositório central para permitir a execução de compilações e testes automáticos. Na maioria das vezes, a CI é uma referência à etapa de compilação ou integração do processo de lançamento de software e exige um componente de automação (por exemplo, um serviço de CI ou de compilação) e um componente cultural (por exemplo, aprender a integrar com frequência). Os principais objetivos da CI são encontrar e investigar erros mais rapidamente, melhorar a qualidade do software e reduzir o tempo necessário para validar e lançar novas atualizações de software.

A integração contínua se concentra em confirmações menores e mudanças de código menores para integrar. Um desenvolvedor confirma o código em intervalos regulares, no mínimo uma vez por dia. O desenvolvedor extrai o código do repositório para garantir que o código no host local seja mesclado antes de enviar ao servidor de compilação. Nesse estágio, o servidor de compilação executa os vários testes e aceita ou rejeita a confirmação de código.

Os desafios básicos da implementação da CI incluem confirmações mais frequentes para a base de código comum, manutenção de um único repositório de código-fonte, automação de compilações e automação de testes. Desafios adicionais incluem testes em ambientes semelhantes aos de produção, fornecendo visibilidade do processo para a equipe e permitindo que os desenvolvedores obtenham facilmente qualquer versão da aplicação.

Entrega e implantação contínuas

A entrega contínua (CD) é uma prática de desenvolvimento de software em que alterações de código são criadas, testadas e preparadas automaticamente para liberação para produção. Ela expande a integração contínua, implantando todas as alterações de código em um ambiente de teste, de produção ou ambos após a etapa de compilação ter sido concluída. A entrega contínua pode ser totalmente automatizada com um processo de fluxo de trabalho ou parcialmente automatizada com etapas manuais em pontos críticos. Quando a integração contínua for implementada adequadamente, os desenvolvedores sempre terão um artefato de criação pronto para ser implantado, e que passou por um processo de teste padronizado.

Com a implantação contínua, as revisões são implantadas em um ambiente de produção automaticamente, sem aprovação explícita de um desenvolvedor, automatizando todo o processo de lançamento de software. Isso, por sua vez, permite um encaminhamento de feedback contínuo dos clientes no início do ciclo de vida do produto.

A entrega contínua não é implantação contínua

Um equívoco sobre a entrega contínua é que isso significa que todas as alterações confirmadas são aplicadas à produção imediatamente após passar nos testes automatizados. No entanto, o mais importante da entrega contínua não é aplicar todas as alterações à produção imediatamente, mas garantir que todas as mudanças estejam prontas entrar em produção.

Antes de implantar uma alteração na produção, você pode implementar um processo de decisão para garantir que a implantação da produção seja autorizada e auditada. Essa decisão pode ser tomada por uma pessoa e depois executada pelas ferramentas.

Usando a entrega contínua, a decisão de entrar em operação passa a ser uma escolha comercial, não técnica. A validação técnica acontece em cada confirmação.

Implementar uma mudança na produção não é um evento disruptivo. A implantação não exige que a equipe técnica pare de trabalhar no próximo conjunto de alterações e não precisa de um plano de projeto, documentação de entrega ou uma janela de manutenção. A implantação se torna um processo repetível que foi realizado e comprovado várias vezes em ambientes de teste.