In this article
Estratégia de implantação blue-green: entenda como funciona
O que é implantação blue-green?
A implantação blue-green é uma estratégia de implantação de aplicações em que versões antigas e novas são executadas em paralelo em dois ambientes de produção idênticos. Por exemplo, a versão antiga é executada no ambiente azul, enquanto a nova versão é testada no ambiente verde. Quando os testes são concluídos, um roteador ou balanceador de carga redireciona gradualmente as solicitações para o ambiente verde. Em seguida, os desenvolvedores executam testes de fumaça antes de direcionar todo o tráfego permanentemente para o ambiente verde.
Essa abordagem usa dois ambientes de produção semelhantes (azul e verde) para lançar atualizações de software.
Ambiente azul: a versão atual da aplicação em produção
Ambiente verde: a nova versão da aplicação que está sendo testada
Como funciona a implantação blue-green?
Veja como funciona a implantação blue-green:
1. Implantação
A nova versão da aplicação é implantada no ambiente verde
2. Teste
A nova versão é testada no ambiente verde para garantir que atenda a todos os requisitos de desempenho e segurança
3. Alternância
Quando a nova versão estiver estável, o tráfego passa do ambiente azul para o verde
4. Reversão
Se algum problema for identificado, o tráfego pode voltar para o ambiente azul
Quando a implantação blue-green é eficaz?
A implantação blue-green é especialmente eficaz nos seguintes cenários:
Os dois ambientes são idênticos e isolados.
É necessário contar com um roteador ou balanceador de carga.
O sistema deve ser compatível com atualizações contínuas.
A importância da implantação blue-green nos processos de DevOps
Um dos requisitos essenciais de um pipeline de DevOps eficiente é implantar código para os usuários finais com agilidade. A implantação contínua de alterações de código ajuda a lançar software rapidamente, mas também pode levar bugs e vulnerabilidades não detectados pelas verificações automatizadas para produção. Dependendo da organização, a responsabilidade pela implantação do código pode ser dos próprios desenvolvedores ou de uma equipe de operações, que implanta os artefatos de build do pipeline de CI/CD.
Em ambos os casos, as equipes precisam de uma forma de testar rapidamente novas versões das aplicações em um ambiente isolado, disponibilizá-las aos usuários e voltar às versões anteriores se algum problema for identificado em produção. A transição para a nova versão exige atenção. As equipes modernas de desenvolvimento costumam adotar a filosofia de “lançar cedo e com frequência”, que não combina com lançamentos mais complexos que exigem programar períodos de inatividade fora dos horários de pico. A transição precisa ser rápida para minimizar as interrupções.
A ideia básica por trás das implantações blue-green é configurar dois ambientes de produção idênticos: um para a versão anterior e outro para testar a nova versão. Os ambientes podem ser dispositivos físicos diferentes, máquinas virtuais distintas ou um ambiente operacional com endereços IP separados para cada um.
Quais são os benefícios das implantações blue-green?
Reversões imediatas. A abordagem blue-green facilita a detecção de bugs, pois os ambientes de homologação e produção são praticamente idênticos. Se os usuários encontrarem algum problema na nova aplicação em execução no ambiente verde, os desenvolvedores poderão redirecionar as solicitações imediatamente para a versão antiga no ambiente azul. Assim, é possível reverter a implantação sem interromper o serviço para os usuários.
Atualizações sem interrupções. As implantações blue-green automatizam o intervalo entre o momento em que o software é “escrito” e sua entrada em produção. Na atualização inicial, o ambiente verde é usado para testes e, em seguida, passa a ser o ambiente de produção da nova versão. O ambiente azul permanece ativo por um período, caso seja necessário reverter a implantação. Depois, ele é desativado e usado para testes de homologação na próxima atualização.
Sem interrupções. Assim que estiverem prontos, os desenvolvedores podem colocar o novo código em produção durante o horário normal de uso. Não é preciso esperar por períodos mais tranquilos, como a madrugada ou os fins de semana, nem programar períodos de inatividade. Outra vantagem é que o ambiente de homologação pode ser usado para testar a recuperação de desastres ou como backup.
Desvantagens da implantação blue-green
Em alguns casos, a abordagem blue-green pode envolver riscos que aumentam a probabilidade de falhas e problemas na implantação.
Sincronização de bancos de dados: Gerenciar alterações no esquema pode ser um desafio. Na implantação blue-green, as alterações no banco de dados e nos dados precisam ser sincronizadas entre os ambientes azul e verde. A falta de sincronização pode gerar inconsistências.
Detecção de falhas em QA/UAT: Em infraestruturas grandes, os testes de QA em ambientes que não são de produção podem deixar passar certos erros ou bugs, causando problemas que não são detectados antes da implantação.
Necessidade de um painel: Como esse método exige a manutenção de dois ambientes de produção com versões diferentes do código, é essencial monitorar o status dos pacotes e do código durante a implantação para manter o controle e executar ações quando necessário.
Impacto nos custos: a implantação blue-green exige dois ambientes paralelos, o que praticamente dobra os custos de operação e manutenção dos ambientes de produção.
Implantação blue-green e balanceamento de carga de aplicações
As implantações blue-green exigem uma implementação cuidadosa para minimizar o impacto da transição para os usuários. Uma forma de fazer essa transição é trocar os registros DNS, mas isso traz limitações, pois a propagação do DNS não é imediata.
Outra opção é usar o balanceamento de carga da aplicação para direcionar o tráfego gradualmente ao ambiente verde, permitindo controlar com precisão quais usuários são afetados. Os balanceadores de carga podem redirecionar o tráfego se houver erros no ambiente verde e ser configurados para aguardar um período determinado antes de desconectar os usuários ou encerrar suas sessões no ambiente azul.
No geral, isso resulta em atualizações mais tranquilas e menos interrupções do que obrigar os usuários a encerrar as sessões antes do redirecionamento do tráfego. O balanceamento de carga pode tornar o processo mais lento ou falhar para alguns usuários, mas a maioria não percebe interrupções nem diferenças.
Outras estratégias de implantação
Implantação blue-green: garante alta disponibilidade e facilita a reversão caso sejam descobertos bugs críticos. Ela consiste em executar dois ambientes em paralelo, um ativo e outro em espera, minimizando as interrupções na aplicação.
Implantação A/B: assim como a implantação blue-green, direciona uma pequena parte do tráfego para um servidor ou ambiente separado. Essa técnica costuma ser usada para avaliar o uso de funcionalidades e coletar feedback dos usuários sobre uma nova versão.
Implantação canário: libera gradualmente novos recursos para um grupo de usuários, direcionando grupos diferentes a servidores específicos. Essa abordagem é útil para implantar recursos de forma incremental e coletar feedback durante todo o lançamento. Implantação rolling: substitui sequencialmente os servidores que executam a versão antiga da aplicação por servidores com a nova versão. Esse método facilita pausar a implantação, se necessário.
Qual é a diferença entre implantações blue-green e canário?
Ao contrário das implantações blue-green, as implantações canário não exigem ambientes separados para teste e produção. As equipes de DevOps ou operações implantam a alteração para um pequeno grupo de usuários (o “canário”), testam a versão e, então, decidem se devem disponibilizá-la para todos os usuários.
Como não usam ambientes separados, as implantações canário exigem apenas uma pequena quantidade adicional de infraestrutura. É possível configurá-las com um nó ou servidor disponível, usando apenas os recursos necessários para dar suporte a uma pequena parte do ambiente de produção e a um volume reduzido de tráfego.
Implantações blue-green com infraestrutura como código (IaC)
As implantações blue-green são uma técnica poderosa para lançar software rapidamente e minimizar os riscos tecnológicos e comerciais. Elas também exigem atenção especial à segurança. A arquitetura complexa das aplicações e dos ambientes em que são implantadas — com servidores web, contêineres e microsserviços — e o uso de ferramentas para automatizar builds, testes e implantações no pipeline de CI/CD podem levar a configurações incorretas, ambientes inseguros e surpresas após a transição.
A segurança de aplicações tradicional não é suficiente para proteger a infraestrutura de IaC. Ela se concentra na aplicação já em produção, o que permite que bugs e vulnerabilidades afetem os usuários finais. As equipes de segurança atuam separadamente dos desenvolvedores. Por isso, quando identificam problemas, dependem da equipe de desenvolvimento para corrigi-los, criando gargalos nas entregas e prioridades divergentes entre desenvolvedores e profissionais de segurança. Além disso, a segurança funciona como uma atividade externa ao processo de desenvolvimento, em vez de ser parte integrante do pipeline de CI/CD.
Implantação blue-green e ferramentas de IaC
Felizmente, existe uma solução. O Snyk Infrastructure as Code se integra perfeitamente ao pipeline de CI/CD para proteger as configurações antes que elas cheguem à produção. Com foco nos desenvolvedores, ele permite corrigir código automaticamente em linha. O Snyk IaC inclui testes automatizados para arquivos e planos do Terraform, AWS CloudFormation, configurações do Kubernetes e Azure Resource Manager (ARM) da Azure. As equipes de desenvolvimento podem executar análises de IaC em todo o pipeline de CI/CD para detectar e corrigir problemas de configuração logo no início. Os testes de drift com o DriftCTL também detectam alterações na infraestrutura após a implantação, feitas por pessoas e ferramentas fora do fluxo habitual. Assim, os desenvolvedores assumem a responsabilidade pela segurança de builds, testes e implantações, colocando em prática os princípios de DevSecOps com ferramentas de IaC para implantações blue-green.
Proteja a infraestrutura desde a origem
A Snyk automatiza a segurança e a conformidade de IaC nos fluxos de trabalho e detecta recursos com configurações divergentes ou ausentes.