|
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.