fbpx
Qual a diferença entre Integração, Entrega e Implantação Contínuas?
Voiced by Amazon Polly

Você se interessa por DevOps ou já adotou esse conjunto de práticas na sua empresa? Se sim, Integração Contínua (Continuous Integration), Entrega Contínua (Continuous Delivery) e Implantação Contínua (Continuous Deployment) são termos que já devem fazer parte do seu vocabulário.

Mas existem diferenças entre essas três práticas que podem não ser conhecimento de quem está começando a adotar a cultura de DevOps. Para sanar essas dúvidas, explicamos abaixo o que são essas práticas e como elas se diferenciam.

Integração Contínua (Continuous Integration)

Existe uma dificuldade em integrar o código de desenvolvedores que trabalham em diferentes features de uma aplicação. Essa dificuldade é ainda maior no contexto de empresas que lançam softwares monolíticos ou grandes blocos de atualizações por vez.

Isso acontece porque a integração das alterações é feita no estágio final do desenvolvimento, o que pode gerar conflitos entre partes do código e, consequentemente, retrabalho. Dessa forma, o processo de entregar aplicações de qualidade se torna longo, o que impacta a capacidade de inovação da empresa e a experiência do usuário. Em uma época em que atualizações frequentes se tornaram uma vantagem competitiva, essa forma de entregar softwares pode representar perda de espaço no mercado.

A Integração Contínua é uma maneira de resolver esses problemas. Ao adotá-la, a equipe de desenvolvimento de aplicações deve passar a integrar o seu código várias vezes por dia. Isso não impede que erros ocorram, mas eles ocorrerão mais cedo, ao invés de se acumularem durante todo o processo de desenvolvimento.

Errar mais rápido é uma das maiores vantagens da Integração Contínua porque sinaliza problemas e códigos defeituosos para que sejam corrigidos. Isso evita que os novos códigos desenvolvidos se comuniquem com atualizações que futuramente apresentarão problemas.

O processo de Integração Contínua acontece da seguinte forma. Para fazer alterações no código principal integrado, o desenvolvedor cria uma cópia dele no seu ambiente de trabalho com um sistema de controle de código-fonte. Quando as alterações são feitas, o código-fonte local é integrado ao principal. Durante essa etapa, é verificado se as alterações de desenvolvedores diferentes se sobrepõem, caso isso aconteça, o repositório sinaliza o problema para ser corrigido. O desenvolvedor, então, usa um build automático que compila o seu código, o transforma em executável e roda os testes automatizados.

Entrega Contínua (Continuous Delivery)

É nessa parte que os conceitos começam a causar confusão. Embora a Entrega Contínua seja um caminho natural para quem implementa a Integração Contínua, elas dizem respeito a processos diferentes.

O objetivo da Entrega Contínua é sempre levar novos códigos ao ambiente de produção. Para isso, é preciso que esses códigos sejam gerados, através da integração do trabalho dos desenvolvedores, validados e testados. Todo esse processo é automatizado através de um pipeline.

Em outros modelos de desenvolvimento e entrega de software, os testes da aplicação fazem parte das últimas fases de um projeto. Na Entrega Contínua, é implementado o método chamado de “Shift to the left” (ou, em português, “Mudar para a esquerda”), que é a transferência dos testes para os estágios iniciais do processo de entrega de software. Isso se baseia na concepção de que o erro nas fases iniciais representa custos mais baixos do que na fase de homologação ou produção.

Já no desenvolvimento, são feitos testes a nível de código, que tem como objetivo garantir o sucesso da integração. Durante todo o pipeline de entrega contínua, são previstos alguns testes: revisões de código (manual), testes de unidade, análise de código estático, testes funcionais e testes A/B (manual).

 

Implantação Contínua (Continuous Deployment)

Como esses conceitos são recentes e ainda estão sendo formulados, a Implantação Contínua é muitas vezes usada como sinônimo da Entrega Contínua, apesar de fontes respeitadas, como por exemplo a AWS, diferenciá-las.

O objetivo das duas práticas é o mesmo: sempre entregar atualizações e features para o usuário final. A diferença, no entanto, é que na Implantação Contínua todo o pipeline é automatizada, enquanto a Entrega Contínua prevê o lançamento manual e pré-aprovado do software.

Ao entregar os novos códigos no ambiente de produção de forma completamente automatizada, assume-se que todos os testes foram feitos no decorrer do pipeline. Isso requer uma política de testes robusta e barreiras eficientes, para que códigos defeituosos não cheguem ao ambiente de produção. Apesar de ser uma forma ainda mais ágil para entregar valor de negócio e evitar o acúmulo de códigos na fase de homologação, é preciso já ter uma cultura de Integração e Entrega madura para fazer a Implantação Contínua.

Entre em Contato

Se tiver interesse em saber mais sobre essas práticas e como implementá-las, entre em contato conosco e converse com os nossos especialistas.