Azul-Verde vs. Canary: Qual a Melhor Estratégia de Implantação?

Foto do autor

By luis

A etapa de implementação do software é crucial no desenvolvimento moderno, especialmente em ambientes de nuvem. Contudo, essa fase é frequentemente negligenciada. Empresas muitas vezes não dedicam tempo e recursos suficientes para tornar a implantação rápida, confiável e automatizada.

Observamos, com frequência, processos de implementação manuais. Na melhor das hipóteses, existe uma lista de verificação de etapas documentadas; na pior, planos improvisados de última hora. A automação da implementação surge como um objetivo a longo prazo, mas o caminho até ela é incerto. Um processo de implementação totalmente automatizado e confiável é fundamental para economizar tempo e esforço, liberando as equipes de desenvolvimento da tarefa de implantar cada nova versão.

As estratégias de implantação *Canary* e *Blue-Green* oferecem esses benefícios, além de alta disponibilidade, instalações rápidas e processos de *rollback*, permitindo que as equipes realizem lançamentos mais frequentes e sem preocupações. Vamos explorar essas estratégias e suas diferenças.

Implementação Azul-Verde: Uma Visão Geral

Fonte: cncf.io

A implementação Azul-Verde minimiza o tempo de inatividade e o risco de novas versões de software, utilizando dois ambientes idênticos: um ativo (azul) e um inativo (verde). O ambiente ativo executa a versão atual do software, recebendo o tráfego dos usuários. O ambiente inativo recebe a nova versão para testes.

Após a nova versão ser testada, o tráfego é direcionado do ambiente ativo para o inativo, que se torna o novo ambiente ativo. Este processo pode ser repetido conforme necessário.

Leia também: A Implementação Azul-Verde e seu Papel no DevOps Explicados

Principais Características e Vantagens

Estas são as particularidades da implementação Azul-Verde:

  • Existem dois ambientes idênticos, em termos de dados e processos. O ambiente azul (ativo) é usado pelos usuários em suas atividades diárias. O ambiente verde (inativo) recebe a nova versão e permanece sincronizado com o azul.
  • A troca de tráfego do ambiente ativo para o inativo é instantânea, eliminando tempo de inatividade. Os usuários acessam o novo ambiente sem interrupção.
  • A reversão rápida em caso de problemas garante tempo de inatividade mínimo. A aplicação permanece altamente disponível, mesmo se a nova versão apresentar problemas.
  • Testes automatizados são cruciais na implementação Azul-Verde, assegurando que a nova versão seja totalmente testada antes de entrar em produção.
  • Essa implementação faz parte de um pipeline de entrega contínua, resultando em lançamentos de software mais rápidos e frequentes. A troca de tráfego é tão rápida que pode ser realizada diariamente.

Implementação Canário: Uma Visão Geral

Fonte: cncf.io

A implementação Canário lança novos recursos ou atualizações de forma gradual para um pequeno grupo de usuários, antes de estender para toda a base. Uma nova versão do software é implantada para um grupo reduzido, enquanto a versão antiga continua em uso para os demais. A equipe de desenvolvimento monitora de perto a nova versão, garantindo sua estabilidade e desempenho.

Se tudo correr bem, a nova versão é liberada para mais usuários até alcançar toda a base. Isso minimiza o risco de bugs ou problemas que afetem todos os usuários de uma vez. O objetivo é suavizar a transição para a nova versão.

Leia também: Implementação Canário e seu Papel no DevOps Explicado

Principais Características e Vantagens

Estas são as particularidades da implementação Canário:

  • A nova versão é lançada para um pequeno grupo de usuários, e então gradualmente para mais usuários. Isso minimiza o risco de problemas que afetem todos os usuários de uma vez.
  • O monitoramento da nova versão garante estabilidade e bom desempenho. Os desenvolvedores recebem feedback rapidamente, permitindo ajustes antes da implantação completa.
  • A reversão para a versão anterior em caso de problemas é rápida e fácil. Isso aumenta a confiança no processo de implementação, reduzindo o risco de problemas que afetem a experiência do usuário.
  • A automação do processo de implementação minimiza o risco de erros humanos.

Resumo: Implementação Azul-Verde vs. Implementação Canário

Característica Implementação Azul-Verde Implementação Canário
Sincronização de Dados Sincronização constante entre ambientes azul e verde. Um subconjunto de usuários/servidores recebe a nova versão.
Processo de Ativação Troca do ambiente ativo para o inativo quando uma nova versão está pronta. Lançamento gradual para um grupo de usuários que testa a nova versão.
Experiência dos Usuários Sem tempo de inatividade; alternância contínua entre ambientes ativos. Um subconjunto de usuários testa a nova versão, podendo encontrar problemas.
Prioridade Alta disponibilidade. Feedback rápido e implementação controlada.
Mitigação de Risco Redução de problemas através da liberação gradual. Teste em ambientes inativos pode não detectar todos os problemas.
Abordagem de Teste Testes em ambientes inativos podem não detectar todos os problemas. Usuários testam em produção, descobrindo problemas do mundo real.
Casos de Uso Netflix, Amazon, Etsy, LinkedIn e IBM usam Azul-Verde. Netflix e Google usam Canário.

Implementação Azul-Verde vs. Implementação Canário: Características

Implementação

Na implementação Azul-Verde, dois ambientes (azul e verde) estão sincronizados em termos de dados. Após testar a nova versão, o tráfego é direcionado do ambiente ativo para o inativo, tornando este o novo ambiente ativo. Não há tempo de inatividade e os usuários não percebem a mudança.

Fonte: aws.amazon.com

Na implementação Canário, a nova versão é lançada para um pequeno grupo de usuários enquanto a maioria continua usando a versão atual. É uma implantação gradual. Os testadores são usuários de produção que testam a nova versão e, quando estável, ela é liberada para todos.

A implementação Azul-Verde é ideal para alta disponibilidade, enquanto a Canário oferece feedback mais rápido e distribuição controlada.

Mitigação do Risco

A implementação Azul-Verde mitiga o risco de falha, permitindo uma reversão rápida para a versão anterior, garantindo que nenhum usuário seja bloqueado. Já a implementação Canário reduz o risco gradualmente, com novos recursos sendo lançados para um subgrupo antes de todos os usuários, permitindo a detecção precoce de problemas.

Diferença na Abordagem de Teste

Na implementação Azul-Verde, os testes são realizados no ambiente inativo. Desenvolvedores e testadores podem simular testes do ambiente de produção, pois os dados e configurações estão sincronizados. Embora exista a possibilidade de não detectar todos os problemas, a troca rápida entre os ambientes permite correções e uma nova troca.

Fonte: ibm.com

Na implementação Canário, os usuários de produção atuam como testadores. Eles encontram problemas rapidamente, realizando seus processos de negócios diários. Apesar do risco de alguns usuários terem problemas temporariamente, a equipe pode focar nos problemas mais críticos do mundo real.

Experiência e Casos de Uso

Empresas que usam essas implementações com sucesso:

  • Netflix usa Azul-Verde para lançar novas versões de seu serviço de streaming.
  • Amazon e Etsy usam Azul-Verde para suas plataformas de comércio eletrônico.
  • LinkedIn usa Azul-Verde para sua rede social.
  • IBM usa Azul-Verde para sua plataforma em nuvem.
  • Netflix usa Canário para mudanças em seu serviço de streaming, combinando testes automatizados, sinalizadores de recursos e testes A/B.
  • Google usa Canário para seus serviços em nuvem, com testes automatizados, divisão de tráfego e monitoramento.

Melhores Práticas e Tendências Futuras

A automação é essencial, com pipelines DevOps sendo o futuro dos processos de implementação. Esses processos incluem:

  • Criação/atualização de ambientes em termos de serviços, dados, usuários e privilégios.
  • Implementação automática de versões de código.
  • Atualização de esquemas de banco de dados.
  • Execução automática de testes.
  • Reversão automática em caso de falhas nos testes.
  • Eliminação de qualquer intervenção manual.

Com esses pipelines de implementação, você pode usar Canário, Azul-Verde ou outras opções. Elas são estruturas para resolver problemas de implementação. É possível alternar entre elas ou usá-las em conjunto.

Considerações Finais

Processos de implementação manuais são um sinal de equipes imaturas ou empresas inflexíveis. É preciso esforço para mudar essa situação. Implemente as estratégias de implementação mencionadas acima em seus projetos.

Em seguida, veja como implementar aplicativos no Kubernetes.