Implantação azul-verde versus implantação canário: principais diferenças

A fase de implantação da entrega de software desempenha um papel importante no desenvolvimento de software atual, ainda mais em um ambiente de nuvem.

Apesar disso, é também uma das fases de entrega mais subestimadas. As empresas geralmente não investem tempo e energia suficientes para tornar a implantação rápida, confiável, automatizada ou qualquer um desses.

Na maioria das vezes, ainda vejo várias formas de procedimentos de implantação manual. Nos melhores casos, pelo menos com uma lista de verificação de etapas devidamente documentada. Na pior das hipóteses, apenas planos aleatórios criados pela improvisação nos últimos minutos.

O procedimento de implantação automatizada é sempre um alvo distante e um marcador de roteiro de curto a médio prazo, mas o caminho real para ele é acidentado e imprevisível. Mas ter um procedimento de implantação totalmente automatizado e confiável é a chave para uma economia significativa ao longo do tempo. Você pode, então, eliminar o esforço que a maioria da equipe de desenvolvimento geralmente gasta para implantar cada versão de produção.

As estratégias de implantação Canary e Blue-Green aproveitam todos esses benefícios e adicionam mais, alta disponibilidade e processos rápidos de instalação e reversão. Permitindo que a equipe libere com ainda mais frequência e sem mais noites sem dormir. Vamos dar uma olhada no que eles trazem e como eles diferem.

Implantação azul-verde: uma visão geral

Fonte: cncf.io

A implantação Blue-Green reduz o tempo de inatividade e o risco de novas versões de software criando dois ambientes idênticos: ativo (azul) e inativo (verde).

O ambiente ativo é onde a versão atual do software está sendo executada e os usuários estão gerando tráfego de produção. O ambiente inativo é onde a nova versão do software é implantada e testada.

Assim que a nova versão estiver testada e pronta, o tráfego é trocado do ambiente ativo para o ambiente inativo, tornando-o o novo ambiente ativo. Você pode repetir esse processo conforme necessário.

Leia também: Implantação azul-verde e seu papel no DevOps explicados

Principais recursos e benefícios

Estas são as características específicas do processo de implantação Blue-Green:

  • Dois ambientes idênticos são idênticos do ponto de vista de dados e processos. O ambiente azul (ativo) é onde os usuários de produção executam seus processos diários. O ambiente verde (inativo) é onde a nova implantação é instalada e sempre sincronizada com o azul.
  • Troca de tráfego que você pode fazer do ambiente ativo para o ambiente inativo, tornando-o o novo ambiente ativo. A troca é instantânea. Toda a implantação agora é coisa do passado. Não há janela de tempo de inatividade. Os usuários não precisam fazer nada para alcançar o novo ambiente.
  • A reversão rápida em caso de problemas é uma consequência. Isso garante um tempo de inatividade mínimo se algo der errado com a nova versão do software, e o aplicativo permanece altamente disponível.
  • O teste automatizado é um aspecto fundamental da implantação Blue-Green. Ele garante que a nova versão do software seja totalmente testada antes de ser implantada no ambiente ativo.
  • Essa implantação faz parte de um pipeline de entrega contínua, o que, em última análise, significa lançamentos de software mais rápidos e frequentes na produção. Como a implantação já foi feita e você só precisa fazer a troca de tráfego em si, é tão rápido que você pode fazer isso todos os dias. Supondo que você seja rápido nas atividades de teste.
  10 melhores ferramentas de ETL para SMBs usarem em 2022

Implantação canário: uma visão geral

Fonte: cncf.io

A implantação Canary executa um lançamento gradual de novos recursos ou atualizações para um pequeno subconjunto de usuários antes de ser distribuído para toda a base de usuários.

Essa abordagem envolve criar uma nova versão do software e implantá-la em um pequeno grupo enquanto mantém a versão antiga em execução para o restante dos usuários. A equipe de desenvolvimento monitora a nova versão de perto para garantir que ela seja estável e tenha o desempenho esperado.

Se tudo correr bem, a nova versão é lançada para mais usuários até atingir toda a base de usuários. Dessa forma, a equipe do projeto minimiza o risco de introdução de bugs ou outros problemas que possam afetar todos os usuários de uma só vez.

O objetivo é reduzir o risco de introduzir novos recursos para uma grande base de usuários. A transição para a nova versão é, portanto, muito mais suave.

Leia também: Canary Deployment e seu papel no DevOps explicado

Principais recursos e benefícios

Estes são os recursos específicos do processo de implantação Canary:

  • Implante a nova versão para um pequeno subconjunto de usuários primeiro e, em seguida, distribua-a gradualmente para mais usuários ao longo do tempo. Você minimiza o risco de introduzir bugs ou outros problemas que possam afetar todos os usuários de uma só vez.
  • Monitore de perto a nova versão para garantir que ela esteja estável e com o desempenho esperado. Os desenvolvedores podem receber feedback sobre a nova versão mais rapidamente, permitindo que façam os ajustes necessários antes de implantar em toda a base de usuários.
  • Se surgir algum problema, reverta a implantação para a versão anterior de forma rápida e fácil. Isso ajuda a aumentar a confiança dos desenvolvedores e partes interessadas no processo de implantação, pois reduz o risco de introduzir problemas que possam afetar a experiência do usuário.
  • Automatize o processo de implantação o máximo possível para reduzir o risco de erro humano.

Resumo: implantação azul-verde x implantação canário

FeatureBlue-Green DeploymentCanary DeploymentData SyncSincronização de dados constante entre ambientes azul e verde.Um subconjunto de usuários ou servidores recebe a nova versão; o restante continua com a versão atual. Processo de ativação Mude do ambiente ativo para o inativo quando uma nova versão estiver pronta. Lançamento gradual para um subconjunto definido de usuários que testam ativamente novas versões. Experiência dos usuários de produção Sem tempo de inatividade da produção; alternância contínua entre ambientes ativos. Um subconjunto de usuários de produção testa ativamente a nova versão; possíveis problemas para este grupo.Alta disponibilidade x velocidade de feedbackPrioridade em alta disponibilidade.Prioridade em feedback mais rápido e implementação controlada.Mitigação de riscosRedução da possibilidade de problemas por meio de liberação gradual para um subconjunto de usuários.Teste principalmente em ambientes inativos; os testadores podem não detectar todos os problemas do mundo real. Abordagem de teste Testar principalmente em ambientes inativos; os testadores podem não detectar todos os problemas do mundo real.Os usuários de produção agem como testadores, descobrindo problemas do mundo real com antecedência.Casos de uso notáveisNetflix, Amazon, Etsy, LinkedIn e IBM usam Blue-Green.Netflix e Google usam Canary, juntamente com testes automatizados e lançamentos graduais.

  Transfira arquivos e configurações de um PC antigo para um novo

Implantação azul-verde versus implantação canário: recursos

Implantação

A implantação azul-verde significa dois ambientes (azul e verde). Mas, ao mesmo tempo, os dois ambientes estão em constante sincronia em termos de dados. Isso aumenta a demanda por processos permanentes de sincronização de dados entre os dois ambientes.

Uma vez que a nova versão é testada e considerada pronta, o tráfego é trocado do ambiente ativo para o ambiente inativo, tornando-o o novo ambiente ativo.

Você não perde tempo implantando novo código e não há tempo de inatividade de produção envolvido. Todos os usuários de produção trabalham o tempo todo no ambiente ativo no momento e nem percebem a mudança.

Fonte: aws.amazon.com

A implantação canário envolve a implantação de uma nova versão do software para um pequeno subconjunto de usuários, enquanto a maioria dos usuários ou servidores continua a usar a versão atual. Esta é uma implantação gradual em vez de uma troca completa. Os testadores são, neste caso, usuários diretos de produção, embora apenas um subconjunto definido deles. Este grupo está testando ativamente a nova versão com processos de produção e, quando finalmente estável, a nova versão se espalhará para o restante dos usuários.

A implantação Blue-Green deve ser sua escolha se a alta disponibilidade for a prioridade. Você pode favorecer a implantação do Canary se preferir um feedback mais rápido e uma distribuição mais controlada (embora mais lenta).

Mitigação da Diferença de Risco

A implantação Blue-Green mitiga o risco de falha de lançamento ao alternar rapidamente para a versão anterior estável. Para cada usuário e instantaneamente. Obviamente, ainda existe o risco de que novos recursos sejam adiados para os usuários em caso de reversão, mas pelo menos nenhum dos usuários será bloqueado devido a alguns problemas críticos da nova versão.

A estratégia de mitigação do risco de implantação canário reside na redução gradual da possibilidade de problemas. Como os novos recursos são lançados para um subgrupo de usuários de produção, eles já usam essa versão do software algum tempo antes de o lançamento se espalhar para todos os usuários. A probabilidade é muito alta de que esses usuários iniciais detectem esses problemas em breve.

Diferença de abordagem de teste

A implantação Blue-Green deixa os processos de teste apenas para o ambiente inativo. Aqui, desenvolvedores, testadores e várias partes interessadas podem testar o que quiserem. Você sempre pode esperar um comportamento semelhante, como se os testes fossem executados diretamente no ambiente de produção ativo (já que os dados e a configuração estão sempre sincronizados entre os dois ambientes).

Portanto, seus testadores estão executando o programa de testes e ainda existe a possibilidade de não detectarem todos os problemas que os usuários reais de produção fariam. No entanto, isso não é realmente um problema, pois a troca entre ambientes inativos e ativos é sempre rápida. Você pode permitir que os desenvolvedores corrijam o problema e façam a troca novamente.

  Mesmo 25 anos depois, o Iomega Zip é inesquecível

Fonte: ibm.com

A implantação canário permite que você use usuários de produção como testadores. Esses usuários geralmente tendem a encontrar mais problemas em menos tempo. Eles simplesmente executam os processos de negócios do dia a dia de uma maneira completa, de ponta a ponta.

Não apenas porque construíram tais cenários e casos de teste, mas porque devem fazê-lo de qualquer maneira. Você corre o risco de que os membros do grupo tenham problemas sérios por algum tempo. Mas não está afetando a maioria dos usuários, e a equipe de desenvolvimento pode se concentrar imediatamente nos problemas mais sérios do mundo real.

Experiência e Casos de Uso

Aqui estão alguns dos casos de uso conhecidos em que essas implantações já estão sendo executadas com sucesso:

  • A Netflix usa a implantação Blue-Green para implantar novas versões de seu serviço de streaming.
  • A Amazon e a Etsy usam a implantação Blue-Green para implantar novas versões de sua plataforma de comércio eletrônico.
  • O LinkedIn usa implantação Blue-Green para implantar novas versões de sua plataforma de rede social.
  • A IBM usa implementação Blue-Green para implementar novas versões de sua plataforma de nuvem.
  • A Netflix também usa o Canary Deployment para implementar mudanças em seu serviço de streaming. A empresa usa uma combinação de testes automatizados, sinalizadores de recursos e testes A/B para implementar as mudanças lentamente.
  • O Google usa o Canary Deployment para implementar alterações em seus serviços em nuvem. Da mesma forma, a empresa usa os benefícios de testes automatizados, divisão de tráfego e inclusão de monitoramento para implementar gradualmente as alterações em um pequeno subconjunto de usuários antes de implantar em todos os usuários.

A automação é a chave e os pipelines de DevOps são definitivamente o futuro dos processos de implantação. Esses são processos totalmente automáticos contendo etapas como:

  • Criação ou atualização de ambientes de destino em termos de serviços, dados, usuários ou privilégios.
  • Implantação automatizada de versões completas/delta dos códigos-fonte diretamente do repositório de código.
  • Atualização do esquema de banco de dados e atualização de dados.
  • Execução automatizada de testes diretamente durante as atividades de implantação.
  • Processos de reversão automatizados caso algum caso de teste importante não seja concluído com êxito.
  • Eliminação de quaisquer etapas de intervenção manual a zero.

Depois de ter esses pipelines de implantação, você pode conectar os processos Canary ou Blue-Green ou qualquer outra coisa que desejar. Esses são apenas dois dos exemplos que já provaram funcionar bem. Mas essas são apenas estruturas filosóficas para resolver a maioria dos problemas com atividades de implantação. Não é difícil alternar entre eles ao longo do tempo ou usar uma combinação de ambos.

Palavras Finais

Aderir aos procedimentos de implantação manual é a visão de processos de desenvolvimento imaturos ou mesmo de equipes. Alternativamente, pode expor o quão inflexível e monolítica é a empresa em termos de entrega de software. Em ambos os casos, significa muito trabalho para consertar o status quo. Portanto, tente implementar as estratégias de implantação mencionadas acima para o seu projeto.

A seguir, confira como implantar aplicativos no Kubernetes.