Implantação Blue-Green

Blue-Green deployment is a release strategy that minimizes downtime and risk by running two identical production environments, 'Blue' (current version) and 'Gre...

Implantação Blue-Green é uma estratégia de lançamento de software projetada para minimizar o tempo de inatividade e reduzir o risco associado à implantação de novas versões de aplicativos. Essa abordagem envolve a manutenção de dois ambientes de produção idênticos, referidos como 'Blue' e 'Green'.

A qualquer momento, um ambiente (por exemplo, Blue) está executando a versão atual do aplicativo ao vivo, atendendo a todo o tráfego de produção. O outro ambiente (Green) permanece ocioso ou é usado para testes. Quando uma nova versão do aplicativo está pronta para lançamento, ela é implantada no ambiente ocioso (Green).

Uma vez que a nova versão é implantada e testada exaustivamente no ambiente Green (incluindo testes de integração, testes de desempenho e, potencialmente, testes de fumaça com um pequeno subconjunto de usuários ou pessoal interno), o tráfego é alternado do ambiente Blue para o ambiente Green. Essa alternância é tipicamente gerenciada por um balanceador de carga ou roteador que direciona todas as solicitações de entrada para o ambiente Green, enquanto o ambiente Blue agora se torna ocioso.

A principal vantagem é o tempo de inatividade próximo de zero durante a implantação. Se surgirem problemas com a nova versão no ambiente Green após a alternância, o tráfego pode ser instantaneamente alternado de volta para o ambiente Blue, fornecendo um mecanismo rápido de reversão. O ambiente Blue pode então ser usado para implantar a próxima atualização ou ser atualizado para corresponder ao ambiente Green.

As desvantagens incluem a necessidade de manter dois ambientes de produção idênticos, o que dobra os custos e a complexidade da infraestrutura. Garantir a consistência entre os dois ambientes, especialmente em relação a esquemas de banco de dados ou estado, também pode ser desafiador. Testes exaustivos no ambiente de staging são críticos para evitar a implantação de código defeituoso, pois a reversão só é eficaz se a versão anterior for estável.

        graph LR
  Center["Implantação Blue-Green"]:::main
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explique como se eu tivesse 5 anos

Imagine que você tem dois palcos idênticos para uma peça de teatro. Os atores estão se apresentando no Palco Blue. Quando o próximo ato estiver pronto, você o prepara perfeitamente no Palco Green enquanto o show continua no Blue. Então, você instantaneamente move a atenção do público para o Palco Green para o novo ato, deixando o Palco Blue pronto como backup.

🤓 Expert Deep Dive

A implantação Blue-Green é uma forma de 'canary release' ou implantação contínua focada na duplicação de infraestrutura em vez de um lançamento incremental. O mecanismo central depende do roteamento de tráfego externo (por exemplo, DNS, configuração de balanceador de carga, proxy reverso) para alternar o tráfego entre os dois pools idênticos de servidores. O gerenciamento do banco de dados apresenta um desafio significativo; estratégias incluem manter uma única instância de banco de dados acessada por ambos os ambientes (arrisca problemas de compatibilidade se as alterações de esquema não forem retrocompatíveis), ou usar replicação de banco de dados com sincronização cuidadosa e potenciais etapas de migração de dados durante a alternância. O gerenciamento de estado, particularmente para aplicativos com estado, requer consideração cuidadosa para garantir uma transição perfeita. A capacidade de reversão é altamente eficaz para falhas de código de aplicativo, mas menos para problemas relacionados à corrupção de dados ou configurações de infraestrutura persistentes. O custo adicional de manter infraestrutura redundante deve ser ponderado contra o valor de negócio da alta disponibilidade e do risco reduzido de implantação.

📚 Fontes