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.