O que é continuous deployment?
Continuous Deployment, ou implantação contínua, como o próprio nome sugere, pode ser pensado como uma abordagem que é uma extensão da integração contínua, com o objetivo de minimizar o lead time (o tempo decorrido entre o desenvolvimento de uma nova linha de código e o novo código sendo usado por usuários ao vivo) em produção.
Essa nova abordagem — podemos chamar de nova, pois começou a ser implementada a partir de 2009 e vem se popularizando nos últimos anos — já conta com adeptos no mundo todo e agora chega ao Brasil como uma forte tendência.
Você já trabalha com este conceito? É sobre ele que vamos refletir ao longo deste artigo. Continue lendo para entender em profundidade como funciona o processo de Continuous Deployment, quais são os benefícios que ele pode trazer para o departamento de TI da sua empresa e muito mais!
O que o Continuous Deployment não é
Para começar, é muito importante saber que o Continuous Deployment (implantação contínua) não é a mesma coisa que continuous delivery (entrega contínua). Também não se trata de Continuous Integration (integração contínua), embora os três termos se confundam e, em muitos momentos, até se cruzem.
Entenda melhor o que diferencia cada uma das abordagens:
Continuous Delivery
O objetivo do Continuous Delivery é entregar novo código com frequência em uma base regular, visando a garantia de qualidade, para as equipes de testes e operações. Isso geralmente envolve uma área de armazenamento de produção semelhante e muitas vezes há um intervalo de tempo entre quando uma liberação pode ser revista, quando a mudança é feita manualmente e quando o novo código é liberado para a produção.
Continuous Deployment
Em contraste, o Continuous Deployment não requer uma área de teste para ser revisada manualmente, pois os testes automatizados são integrados no início do processo de desenvolvimento e continuam em todas as fases do release. Conseqüentemente, não há nenhum intervalo de tempo entre quando uma mudança de código passa a aplicação e teste de nível de plataforma e quando ele se move em produção.
Continuous Integration
Já a Continuous Integration (integração contínua) é uma primeira parte essencial de um fluxo de trabalho de entrega contínua. O objetivo é ajudar as equipes de software a garantir que suas alterações sejam construídas e testadas com a versão mais recente de toda a base de código.
Como resultado da integração contínua, a maioria dos bugs é encontrada quase imediatamente depois da alteração de código ser confirmada. Isso leva a uma melhor qualidade, pois cada bug pode ser facilmente isolado para uma mudança de código específico, e corrigido prontamente.
Síntese da difrença entre continuous delivery e Continuous Deployment
Para deixar ainda mais clara essa diferenciação, podemos resumir a ideia de Continuous Deployment como uma estratégia para lançamentos de software em que qualquer confirmação que passa a fase de teste automatizada é liberada automaticamente para a implantação de produção.
Portanto, trata-se de um conjunto de práticas que facilitam para que cada mudança que passe por testes automatizados seja automaticamente entregue em produção.
Como funciona o Continuous Deployment na prática
Para obter essa implantação contínua, a equipe deve contar com infraestrutura que facilite a automatização e instrumentação das várias etapas que levam à implantação, de modo que após cada integração atender com êxito aos critérios de release, a aplicação seja atualizada com novo código em tempo real.
A instrumentação é necessária para garantir que qualquer sugestão de qualidade reduzida resulte em abortar o processo de implantação ou reverter os novos recursos e acionar a intervenção humana.
Principais benefícios do Continuous Deployment
Dois pontos fundamentais sintetizam as vantagens desse processo:
- Continuous Deployment remove o passo de deploy manual no pipeline de deploy;
- e resulta em múltiplos deploys por dia.
Mas não é só isso. Podemos entrar mais a fundo nos benefícios dessa abordagem, apontando o que é possível conseguir com ela:
- aumentar o foco sobre o produto;
- automatizar as tarefas repetitivas e concentrar-se em testes reais;
- fazer implantações sem grandes atritos e sem comprometer a segurança;
- escalar de um único aplicativo para um portfólio de TI mais amplo e rico;
- conectar as ferramentas e tecnologias existentes (como provedores de CI, ferramentas DevOps ou scripts) em um fluxo de trabalho harmonioso;
- integrar equipes e processos com um pipeline unificado;
- criar fluxos de trabalho em todos os ambientes de desenvolvimento, teste e produção;
- fornecer uma única visualização em todos os aplicativos e ambientes;
- enviar aplicações nativas e tradicionais em um pipeline unificado;
- melhorar a produtividade geral.
Em suma, uma definição mais abrangente e acolhedora para o Continuous Deployment pode ser: implementar consistentemente o código na produção à medida que os recursos forem concluídos e assim que tiver cumprido os critérios de liberação para esses recursos.
Esse critério de liberação depende da situação e pode acelerar a execução de alguns testes automatizados, revisões de código, testes de carga, verificação manual por uma pessoa de controle de qualidade ou parte interessada no negócio, ou apenas ter outro par de olhos no recurso e certificar-se de que o processo não vai “explodir”.
É importante ter em mente que os critérios específicos podem variar de empresa para empresa, mas a ideia-chave é ter um fluxo contínuo empurrando mudanças para a produção, sempre movendo o código para a frente, e mantendo o pipeline tão curto quanto possível.
As vantagens de utilização desta abordagem, portanto, estão muito ligadas a uma nova visão na gestão dos projetos de implantação de soluções. Requerem também o engajamento da equipe, de ponta a ponta, do contrário, a resistência e até as dificuldades técnicas e de identificação com essa nova forma de trabalhar podem dificultar a obtenção de bons resultados.
Para finalizar, é importante frisar que a aplicação de continuous deployment pode não ser prática ou possível para empresas que tenham restrições regulatórias ou outros requerimentos.
O que você achou da nossa definição de Continuous Deployment? Deixe-nos suas impressões na caixa de comentários! Continue atualizando seus conhecimentos, baixe agora o e-book Os Segredos Para Otimizar a Rotina da Área de TI!