Analise a integração contínua

Concluído

A Integração Contínua é um dos oito recursos da taxonomia de DevOps.

Descubra por que a Integração Contínua é necessária

Em 23 de setembro de 1999, a Mars Climate Orbiter arrumou seus painéis solares para protegê-los de uma descida temporária para a atmosfera marciana superior.

Depois de ter entrado em órbita com sucesso, o satélite deveria transmitir fotos de Marte para a Terra por vários anos. Mas, infelizmente, a nave queimou na atmosfera marciana.

Um bug no software de controle de solo, que foi fornecido por um terceiro, calculou o valor em uma unidade imperial, libra-segundos. O software construído pela NASA esperava que o valor fosse em uma unidade métrica, newton-segundos. Como esses valores não foram convertidos corretamente, pequenas discrepâncias na posição da espaçonave foram agravadas ao longo de milhões de quilômetros.

A garantia de qualidade não havia notado o uso de uma unidade imperial em software externo, embora os padrões de codificação da NASA na época exigissem o uso de unidades métricas. Os cálculos também foram feitos manualmente em vez de usar o software fornecido, devido a erros de formato de arquivo e bugs diversos. Esta situação é um exemplo da necessidade de Integração Contínua.

Explore a integração contínua

A Integração Contínua é uma mentalidade e uma estratégia de equipa. Além disso, o autor e palestrante Martin Fowler diz que a Integração Contínua é uma prática de desenvolvimento de software onde os membros de uma equipe integram seu trabalho com frequência, geralmente cada pessoa integra pelo menos diariamente – levando a múltiplas integrações por dia.

Cada integração é verificada por uma compilação automatizada (incluindo teste) para detetar erros de integração o mais rápido possível.

Quando bem feita, esta abordagem conduz a problemas de integração reduzidos, apanhando-os numa fase mais precoce do processo.

O diagrama mostra a diferença entre entrega contínua e implantação contínua. As etapas são as mesmas em ambos os casos: código feito - testes de unidade - integrar - teste de aceitação - implantar na produção. Para a entrega contínua, a implantação na produção acontece manualmente. Para implantação contínua, é automático. A integração contínua abrange os três primeiros estágios para entrega contínua e implantação contínua.

Os objetivos da Integração Contínua são:

  • Aproveite a colaboração
  • Permitir o desenvolvimento paralelo
  • Minimizar a dívida de integração
  • Atuar como um ponto de controlo de qualidade
  • Automatize tudo!

Nota

Note como os objetivos da Integração Contínua incluem Colaboração Contínua, Entrega Contínua e Qualidade Contínua!

Mas o que acontece quando não há Integração Contínua? A falta de esforços contínuos de integração pode muitas vezes resultar em:

  • Longos ciclos de desenvolvimento
    • Código não compilável
    • A qualquer momento, o código-fonte pode não ser funcional
    • Congelamento de código
  • Altas falhas de compilação / Contagem de bugs
    • Branches duradouros, resultando em fusões que levam vários dias
    • Código ausente do controle do código-fonte
    • Falhas de segurança encontradas no final do ciclo de desenvolvimento
    • Grande montante de dívida técnica
    • Números de cobertura de código baixos ou inexistentes
    • Qualidade geral reduzida
  • Comunicação e colaboração limitadas
    • Código que não segue os padrões de codificação
    • Nenhuma ou poucas revisões de código
    • Testes feitos no final do ciclo de desenvolvimento
    • Em muitos casos, manual, quando muito

Os pontos de integração são o ciclo de feedback rápido usado para melhorar o sistema. Quando o cronograma dos pontos de integração atrasa, o projeto está com problemas. Aqui está o que Dantar Oosterwal diz sobre eles no livro The Lean Machine:

A epifania dos pontos de integração é que eles controlam o desenvolvimento de produtos. São os pontos de alavancagem para melhorar o sistema. Quando o cronograma dos pontos de integração atrasa, o projeto está com problemas.

Dantar Oosterwal, A Máquina Enxuta

© Scaled Agile, Inc.

Se você se pergunta se sua equipe está realmente fazendo Integração Contínua, essas perguntas podem ajudá-lo a determinar a resposta.

  • Todos os desenvolvedores estão fazendo desenvolvimento baseado em tronco?
  • Cada alteração em um tronco inicia um processo de compilação?
  • Quando a compilação e o teste falham, a equipe corrige a compilação em poucos minutos?

O desempenho também é influenciado pela presença ou ausência de Integração Contínua. Dados coletados e analisados para o livro The Science Of DevOps – Accelerate – Building and scaling high performance technology organizations por Nicole Forsgren, Jez Humble e Gene Kim mostram que quando a velocidade de entrada no mercado de pessoas de baixo desempenho aumenta, sua qualidade diminui.

Mas os profissionais de alto desempenho podem manter a qualidade enquanto aumentam a velocidade de entrada no mercado. Eles têm ciclos de implantação mais curtos (e menos complexos) e usam a Integração Contínua para corrigir problemas imediatamente, aumentando o fluxo e a eficiência.

2017 Profissionais de alto desempenho Pessoas de desempenho médio Pessoas de baixo desempenho
Frequência de implantação Várias vezes por dia 1 semana - 1 mês 1 semana - 1 mês
Prazo para a mudança < 1 hora 1 semana - 1 mês 1 semana - 1 mês
MTTR < 1 hora < 1 dia 1 dia - 1 semana
Taxa de falhas nas alterações 0-15% 0-15% 31-45%