Canary Deployment e seu papel no DevOps explicado

A implantação Canary é uma técnica de desenvolvimento e implantação de software que executa uma liberação gradual de novos recursos ou atualizações para um pequeno subconjunto de usuários antes de distribuir para toda a base de usuários.

Essa abordagem envolve criar uma nova versão do software e implantá-la para um pequeno grupo de usuários 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 da implantação Canary é reduzir o risco de introduzir novos recursos para uma grande base de usuários. Ao distribuir gradualmente as alterações para os usuários, os desenvolvedores podem monitorar o desempenho e a estabilidade da nova versão. Eles fazem todos os ajustes necessários antes de implantar em toda a base de usuários. A transição para a nova versão é, portanto, muito mais suave.

Principais Princípios e Benefícios

Fonte: martinfowler.com

Os principais princípios da implantação Canary incluem o seguinte:

  • 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.
  • Monitore de perto a nova versão para garantir que ela esteja estável e com o desempenho esperado.
  • Se surgir algum problema, reverta a implantação para a versão anterior de forma rápida e fácil.
  • Automatize o processo de implantação o máximo possível para reduzir o risco de erro humano.
  • Os benefícios da implantação Canary no DevOps incluem:

  • Ao implantar as alterações gradualmente, você minimiza o risco de introduzir bugs ou outros problemas que podem afetar todos os usuários de uma só vez.
  • 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.
  • Ao monitorar o desempenho e a estabilidade da nova versão, os desenvolvedores podem garantir que ela atenda aos padrões de qualidade necessários antes de implantá-la em toda a base de usuários.
  • A implantação Canary ajuda a aumentar a confiança dos desenvolvedores e partes interessadas no processo de implantação, pois reduz o risco de apresentar problemas que podem afetar a experiência do usuário.
  • Implantação Canary baseada em conceito e terminologia

    Fonte: cncf.io

    Vamos passar pelo ciclo de vida típico do processo.

    Tudo começa com o Canary, ou seja, os “early adopters” da nova versão do sistema. Em paralelo a isso, existe o grupo Baseline. Aqui pertencem todos os outros usuários que não estão dentro do Canary.

      Como excluir uma conta Rakuten

    Como os usuários do Canary continuam usando a nova versão, a implantação do Canary se estende a mais e mais usuários. Isso é Mudança de Tráfego. O grupo Canary cresce enquanto o grupo Baseline diminui, portanto, o sistema executa a distribuição gradual.

    Ao longo do caminho, o processo de monitoramento registra todas as atividades e resultados de uso e gera métricas que os desenvolvedores precisam como feedback. Os desenvolvedores então reagem e corrigem o que for necessário. Ou eles revertem para a linha de base se não puderem corrigir os problemas neste momento.

    Automatize todas as atividades de monitoramento e implantação. Isso dá aos desenvolvedores foco exclusivo na correção de problemas.

    Pode ser que o grupo Canary descubra que alguns recursos da nova versão são ruins, enquanto outros são ótimos. Assim, os desenvolvedores sinalizarão os recursos que apresentam problemas para desativá-los dos processos de implantação.

    Os desenvolvedores ficam de olho nos dois grupos simultaneamente – o Canary e o Baseline. Os usuários estão gerando resultados de Teste A/B. Esse é o comportamento do antigo sistema e do novo sistema nas mesmas condições. Mas também há testes automáticos em execução constante na nova versão do sistema para garantir que o Health Check do grupo Canary esteja estável.

    Como ela difere das estratégias de implantação tradicionais

    Depois de compreender o processo de ciclo de vida de alto nível, as diferenças entre este e os processos de implantação tradicionais são bastante óbvias.

    • Você implanta gradualmente e com melhor controle, em vez de implantar tudo de uma vez para todos e aguardar os problemas que afetam toda a produção.
    • Você limita o risco de novos bugs de versão apenas ao grupo Canary em vez de expor o mundo inteiro aos problemas simultaneamente.
    • Você monitora a nova versão antes que os usuários a tenham, em vez de monitorá-la depois disso e investir uma quantidade substancial de tempo e recursos na fase de hipercuidado do processo de lançamento.
    • Você pode decidir sobre a reversão bem antes de implantar a nova versão completamente na produção. Por outro lado, está agendando outra janela de lançamento para desfazer a produção logo após a conclusão do lançamento da produção.
    • Ter a implantação Canary naturalmente força você a investir em ferramentas e processos automatizados sempre que possível. Por outro lado, aderir às estratégias de implantação tradicionais naturalmente desprioriza todas as iniciativas de automação para o final da lista de pendências.

    Pipelines de CI/CD na implantação Canary

    Fonte: aws.amazon.com

    Em um pipeline típico de CI/CD, as alterações são criadas, testadas e implantadas automaticamente em um ambiente de preparação para testes adicionais antes de serem implantadas na produção. Além disso, é um caso de uso perfeito dentro de uma implantação Canary.

    Depois que as alterações forem implantadas no ambiente de preparação e tiverem passado em todos os testes necessários, o pipeline de CI/CD implantará automaticamente a versão canário para um pequeno subconjunto de usuários no ambiente de produção.

    Se algo der errado, basta executar outro pipeline para uma reversão. Ou sinalize recursos problemáticos e nunca mais aparecerá no processo de implantação do pipeline de implantação. Tudo automático, e você não precisa mais se preocupar com isso.

      Como desligar o Walkie Talkie no Apple Watch

    Como a versão canário está cheia de testes de verificação de integridade automatizados, todos eles são naturalmente incorporados aos recursos básicos dos pipelines de CI/CD. Eles são uma parte obrigatória de todo bom CI/CD Pipeline de qualquer maneira.

    Fluxo de trabalho e as fases da implantação canário

    Resumindo as informações, esse é o fluxo de trabalho normal de uma implantação Canary típica que você pode usar em seu projeto.

    #1. Planejamento e Preparação

    Nesta fase, a equipe de desenvolvimento planeja e se prepara para a implantação do canário. Isso inclui identificar as alterações ou atualizações a serem feitas, criar uma nova versão do software e definir as métricas e verificações de integridade que serão usadas para monitorar o desempenho da nova versão. A equipe também identifica o subconjunto de usuários que receberá a nova versão primeiro e define o plano de implantação.

    #2. Implementação de roteamento e monitoramento de tráfego

    A nova versão do software é implantada no subconjunto de usuários identificados na fase de planejamento. O roteamento de tráfego é implementado para direcionar uma parte do tráfego do usuário para a nova versão enquanto mantém a versão antiga em execução para o restante dos usuários. O desempenho e a estabilidade da nova versão são monitorados de perto por meio de métricas e verificações de integridade para garantir o desempenho esperado.

    #3. Analisando e avaliando o desempenho da implantação

    O desempenho da nova versão é analisado e avaliado com base nas métricas e verificações de saúde definidas na fase de planejamento. Se a nova versão tiver um bom desempenho, o lançamento aumentará gradualmente para mais usuários ao longo do tempo. Se surgir algum problema com a nova versão, a implantação pode ser revertida rapidamente para a versão anterior.

    #4. Promover ou reverter a implantação

    A equipe de desenvolvimento decide se deve promover a nova versão para toda a base de usuários ou reverter para a versão anterior. Se a nova versão tiver um bom desempenho e atender aos padrões de qualidade necessários, promova-a para toda a base de usuários. Se surgir algum problema com a nova versão, reverta a implantação para a versão anterior de forma rápida e fácil.

    Fonte: aws.amazon.com

    Melhores Práticas e Estratégias

    Ao implementar o Canary Deployment em sua plataforma, comece definindo objetivos claros e como será o sucesso no final. Você pode ajudar aqui com coisas como métricas de desempenho, critérios de feedback do usuário e impacto nos negócios.

    Crie um pequeno subconjunto de usuários para testar a nova versão (Canary) do software. O grupo maior no início não é realmente uma vantagem. Você quer ser o mais flexível possível, especialmente no começo.

    Como já mencionado algumas vezes, monitore o desempenho e a estabilidade da nova versão usando métricas e verificações de integridade. Reaja sempre que vir algo suspeito. É melhor reagir exageradamente do que reagir de forma insuficiente quando se trata de um lançamento gradual.

    Aumente gradualmente o lançamento da nova versão para mais usuários ao longo do tempo. Isso garante uma transição mais suave para a nova versão.

    Use ferramentas e processos de automação sempre que possível para simplificar o processo de implantação e monitoramento. Inclua-os nos pipelines de CI/CD e torne-os processos de implantação agendados acionados automaticamente. Isso reduz o risco de erro humano e garante que o processo de implantação seja consistente e repetível.

      Como adicionar sites confiáveis ​​em um navegador

    Implemente sinalizadores de recursos para ativar ou desativar recursos específicos no software. Você obterá controle sobre os futuros processos de implantação sem a necessidade de sempre corrigir ou atualizar manualmente. Você dará mais foco aos desenvolvedores nas áreas que importam – corrigindo os bugs.

    Use o teste A/B para comparar o desempenho de duas versões diferentes do software. Atribua usuários aleatórios a uma versão ou outra. Identifique qual versão tem melhor desempenho e reaja a isso com futuras decisões de desenvolvimento.

    Certifique-se de que você pode reverter a implantação rapidamente e a qualquer momento se surgir algum problema com a nova versão. Isso reduzirá o impacto de quaisquer problemas e permitirá uma recuperação rápida.

    Desafios e Estudos de Caso

    Ainda existem alguns desafios associados à implantação do Canary, apesar de suas claras vantagens.

    Um desafio do Canary Deployment é a latência da rede, que pode afetar o desempenho da nova versão do software. Para enfrentar esse desafio, os desenvolvedores podem usar ferramentas como balanceadores de carga e redes de entrega de conteúdo para melhorar o desempenho da rede. Não é apenas latência para o sistema de uso externo. Mas também latência para processos internos, como implantações ou execuções de CI/CD Pipelines. Esses devem ser concluídos o mais rápido possível. Caso contrário, você terá uma linha de desenvolvedores em um estado ocioso esperando que os pipelines concluam sua execução.

    Outro desafio é garantir a consistência dos dados entre as versões antiga e nova do software. Para enfrentar esse desafio, os desenvolvedores podem usar técnicas como replicação e sincronização de banco de dados para garantir que os dados sejam consistentes em todas as versões. Ter usuários de produção operando em versões antigas e novas ao mesmo tempo aumenta as expectativas de que você garantirá que ambas as versões estejam em total sincronia o tempo todo e os usuários não perderão nenhum dado de produção apenas porque estão no grupo Canary/Baseline . Isso pode ser uma expectativa realmente desafiadora de atender, portanto, apoie-se com processos sólidos em segundo plano.

    A Netflix é um exemplo bem conhecido de empresa que 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 é outro exemplo de empresa que usa o Canary Deployment para implementar mudanças 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. Essa abordagem ajudou o Google a melhorar a qualidade e a estabilidade de seus serviços.

    Palavras Finais

    Como acontece com todos os processos, abordagens ou estratégias, a implantação Canary não é uma solução para todos os problemas do mundo. Há casos em que é quase impossível implementá-lo devido a restrições ambientais, conhecimento das pessoas ou falta geral de compreensão conceitual. EU

    t é muito mais adequado para os projetos da nova era. Onde uma mentalidade ágil é a propriedade básica sólida, a automação de todos os processos é uma prioridade indubitável e um nível máximo de confiabilidade é uma forte expectativa das partes interessadas.

    Nesse caso, a implantação Canary é, de alguma forma, o próximo nível de práticas de desenvolvimento ágil. Pode elevar as equipes a um território que o projeto nunca alcançou antes.

    Em seguida, confira dimensionamento e otimização de CI/CD.