

# Resumo das práticas recomendadas
<a name="summary-of-best-practices"></a>

 Veja a seguir algumas práticas recomendadas sobre o que devemos e não devemos fazer com relação a CI/CD. 

 Faça: 
+  Trate a infraestrutura como código 
  +  Use o controle de versão para o código da infraestrutura. 
  +  Faça uso de sistemas de rastreamento/emissão de tíquetes para bugs. 
  +  Peça aos colegas que analisem as alterações antes de aplicá-las. 
  +  Estabeleça padrões/projetos de código de infraestrutura. 
  +  Teste as alterações na infraestrutura, como alterações no código. 
+  Coloque os desenvolvedores em equipes integradas de no máximo 12 membros autossustentáveis. 
+  Faça com que todos os desenvolvedores confirmem o código no tronco principal com frequência, sem ramificações de recursos de longa duração. 
+  Adote consistentemente um sistema de compilação como o Maven ou o Gradle em toda a organização e padronize as compilações. 
+  Faça com que os desenvolvedores criem testes de unidade com 100% de cobertura da base de código. 
+  Certifique-se de que os testes de unidade sejam 70% do teste geral em duração, número e escopo. 
+  Certifique-se de que os testes de unidade estejam atualizados e não sejam negligenciados. As falhas no teste de unidade devem ser corrigidas, não ignoradas. 
+  Trate sua configuração de entrega contínua como código. 
+  Estabeleça controles de segurança baseados em função (ou seja, quem pode fazer o quê e quando). 
  +  Monitore/rastreie todos os recursos possíveis. 
  +  Alerte sobre serviços, disponibilidade e tempos de resposta. 
  +  Capture, aprenda e melhore. 
  +  Compartilhe o acesso com todos da equipe. 
  +  Planeje métricas e monitoramento para o ciclo de vida. 
+  Mantenha e acompanhe as métricas padrão. 
  +  Número de compilações. 
  +  Número de implantações. 
  +  Tempo médio para as mudanças chegarem à produção. 
  +  Tempo médio desde o primeiro estágio do pipeline até cada estágio. 
  +  Número de mudanças chegando à produção. 
  +  Tempo médio de compilação. 
+  Use vários pipelines distintos para cada ramificação e equipe. 

 Não faça: 
+  Não tenha ramificações de longa duração com fusões grandes e complicadas. 
+  Não faça testes manuais. 
+  Não tenha processos de aprovação manual, portões, revisões de código e revisões de segurança. 