Estratégias de ramificação para IaC - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Estratégias de ramificação para IaC

A metodologia Git típica usa uma ramificação base de tronco primária (comomain) para produção, uma ramificação de desenvolvimento e ramificações de recursos. Muitas organizações adotam instantaneamente esse mesmo design de infraestrutura como código (IaC). No entanto, a metodologia Git não é diretamente compatível com padrões comuns de design de infraestrutura. Considere os seguintes pontos:

  • Os aplicativos têm vários ambientes.

    • Exemplos de ambientes incluem sandbox, desenvolvimento, preparação e produção.

  • Os ambientes não estão fortemente acoplados.

    • A produção geralmente é fortemente associada a implantações preparatórias bem-sucedidas.

    • Normalmente, a produção e a preparação são totalmente dissociadas do ambiente de desenvolvimento.

    • Normalmente, o desenvolvimento é totalmente desacoplado do ambiente sandbox.

  • Cada aplicativo tem seu próprio conjunto de padrões ambientais.

    • Muitos aplicativos não usam um ambiente sandbox.

    • Alguns aplicativos não exigem um ambiente de teste, mas usam uma estratégia de implantação azul/verde.

Imagine um cenário em que um repositório de aplicativos forneça três ambientes que usam uma metodologia baseada em troncos. O ambiente de desenvolvimento está vinculado à develop filial, a preparação à staging filial e a produção à main filial. Para esse aplicativo, é necessário um novo recurso para conectar um gateway de trânsito na solução, que é gerenciado por outra equipe e repositório. Um desenvolvedor grava o código da infraestrutura em uma ramificação de recursos e o mescla à develop ramificação quando estiver pronto. Tudo parece bem.

No entanto, surge um desafio. Outro desenvolvedor tem uma história de usuário separada para um recurso separado, a grava em uma ramificação de recursos e a mescla com a develop ramificação. O segundo recurso agora está pronto para ser mesclado entre preparação e produção. No entanto, o recurso de gateway de trânsito original não está pronto devido a um critério de risco na organização. Agora, todos os recursos estão bloqueados, desde a promoção até a produção, e o código do aplicativo está efetivamente congelado ou quebrado.

Nesse cenário, considere as seguintes soluções possíveis:

  • Solução mais comum: aumente a repetição de código (reduza o DRY) em locais específicos da estrutura de código configurando ./environments pastas separadas no repositório. Isso permite que o código dos ambientes esteja no mesmo repositório, mas desacoplado.

  • Configure um processo de CI/CD com gerenciamento complexo de variáveis.

  • Ambientes separados em repositórios separados.

  • Solução menos comum: use várias ramificações de tronco.