Usar a entrega contínua para lançar mais rápido, com custos e riscos menores

Concluído

A entrega contínua é uma das oito funcionalidades na taxonomia de DevOps.

Descubra por que a entrega contínua é necessária

Em 2012, um erro de implantação de software resultou em uma perda de US$ 460 milhões para o Knight Capital Group, o maior negociador de ações dos EUA na época.

As perdas começaram quando o mercado foi aberto. Não havia nenhum bug no código – o problema foi causado por um erro cometido durante uma implantação manual em apenas um dos oito servidores de produção.

Quando tentarem corrigi-lo, todos os oito servidores acabaram desconfigurados, portanto, eles perderam ainda mais dinheiro. Como toda a implantação foi manual, não havia como reverter as alterações automaticamente.

Depois de tentar corrigir o problema por 45 minutos, eles finalmente desligaram o sistema inteiro. Nesse momento, eles tinham perdido US$ 460 milhões.

Essa é uma história real. Qual seria o impacto em sua organização? Você está fazendo a implantação manual?

Talvez a única pergunta mais importante a ser feita para ajudar a entender o desempenho de entrega em uma organização seja:

Importante

Qual é o tamanho da sua dificuldade de implantação para a produção?

O medo e a ansiedade que os engenheiros e a equipe técnica sentem quando enviam código para a produção podem nos dizer muito sobre o desempenho de entrega de software de uma equipe.

O que é a entrega contínua?

Importante

Entrega contínua é uma abordagem de engenharia de software em que as equipes produzem software em ciclos curtos, garantindo que o software pode ser:

  • Lançado de maneira confiável a qualquer momento
  • Lançado manualmente

A finalidade da entrega contínua é:

  • Compilar, testar e lançar software com mais velocidade e frequência
  • Reduzir o custo, o tempo e o risco de fornecer alterações permitindo mais atualizações incrementais em aplicativos em produção

A entrega contínua ocorre quando:

  • O software pode ser implantado durante todo o ciclo de vida
  • A integração contínua e a ampla automação estão disponíveis em todas as partes possíveis do processo de entrega, normalmente usando um pipeline de implantação
  • É possível executar implantações de botão de ação de qualquer versão do software para qualquer ambiente sob demanda

Diagram shows the difference between continuous delivery and continuous deployment. The stages are the same in both cases: code done - unit tests - integrate - acceptance test - deploy to production. For continuous delivery, deployment to production happens manually. For continuous deployment, it's automatic.

As implantações manuais grandes criam um alto nível de risco aumentando drasticamente a complexidade do software que está sendo lançado, introduzindo a probabilidade de erro humano e dificultando a identificação e a correção de falhas de implantação. A frequência de implantação é baixa, o prazo de entrega para as alterações é alto, o tempo médio de recuperação é longo e você tem uma alta taxa de falha de alteração.

Uma equipe de operações designada realiza a implantação manual fora do horário comercial. Eles precisam de um documento de etapas manuais e do tempo para testar as etapas documentadas manualmente. As implantações grandes também levam mais tempo para serem executadas, são mais difíceis de reverter se falharem e envolvem um escopo de teste maior após a implantação. O número de alterações por implantação é maior e os comentários levam mais tempo para serem implementados.

Ao automatizar o processo e habilitar a capacidade de liberar para produção a qualquer momento, os benefícios da entrega contínua são significativos e numerosos:

Diagram shows the circle of Continuous Delivery. The cycle goes from planning and tracking to development, building and testing, deployment, operation, monitoring and learning, and back to planning.

De acordo com o State of DevOps Report de 2019, as organizações DevOps de alto desempenho em comparação com as de baixo desempenho:

  • Implantações mais que 200 vezes mais frequentes
  • Prazos de entrega de alterações mais de cem vezes mais rápidos
  • Tempo médio para recuperação mais de 2.600 vezes mais rápido
  • Taxa de falha de alteração sete vezes menor

Além disso, de acordo com um estudo global realizado pela CA Technologies, as organizações percebem um aprimoramento de até 20% no tempo para comercialização e aumento na receita.

Diagram shows the advantages of high-performing DevOps organizations using Continuous Delivery over low performers.

Observação

Às vezes, a entrega contínua é confundida com a implantação contínua. A implantação contínua significa que cada alteração passa pelo pipeline e é automaticamente colocada na produção, resultando em muitas implantações de produção todos os dias. A entrega contínua significa apenas que você pode fazer implantações frequentes, mas pode optar por não fazer isso, normalmente devido às empresas preferirem ter uma taxa de implantação mais lenta. Você deve fazer a entrega contínua para fazer a implantação contínua.

A integração contínua é um pré-requisito para a entrega contínua. As práticas em vigor permitem criar e implantar (de maneira confiável) o aplicativo a qualquer momento e com alta qualidade, do controle do código-fonte.

Diagram shows the relationship between Continuous Integration, Continuous Delivery and Continuous Integration