BlueGreen e Canary Deployments

BlueGreen e Canary Deployments

O processo de implementação de aplicações monolíticas costuma ser doloroso e arriscado, visto que todas as necessidades dos negócios existem em um único software e a infraestrutura fornecida para executar estas aplicações precisa ser atualizada com frequência.

Essa abordagem pode causar muitos problemas quando os deployments não são bem-sucedidos e as versões antigas das aplicações não existem mais.

Existem maneiras de lidar com isso, como backups e blue/green deployments, em que um ambiente totalmente novo é criado e o tráfego muda para a nova versão da aplicação, mantendo o ambiente antigo em funcionamento.

A tecnologia de containers também ajuda aqui, desempenhando um papel importante em torno do empacotamento de todos os itens necessários para a execução das aplicações; porém, uma coisa que não é endereçada nestas abordagens é a experiência do usuário, e é aqui que o conceito de Canary Deployments começa a fazer mais sentido.

Com Canary Deployments (ou canary releases), alterna-se o tráfego em pequenos incrementos de porcentagem após implementar uma nova versão de uma determinada aplicação.

Um canary deployment também pode monitorar a integridade da nova versão, portanto, se houver um problema, é possível alterar automaticamente o tráfego de volta para a versão antiga, diminuindo drasticamente o impacto de bugs nas novas versões das aplicações.

Essa abordagem ajuda não apenas com novos deployments, mas também aborda a necessidade de testes em microsserviços complexos e distribuídos, onde você pode enviar uma quantidade específica de tráfego para versões mais recentes de maneira controlada:

Observabilidade; métricas e logs para tráfego HTTP; dashboard de serviços com informações da execução e dados consolidados de métricas de serviço e logs; relacionamento entre os serviços e segurança.

 

Qual o propósito principal da estratégia de Canary Deployment?

O objetivo de uma Canary Deployment é reduzir o risco de implantação de uma nova versão – o que poderia impactar a carga de trabalho. O método implantará gradualmente a nova versão, tornando-a visível para novos usuários de forma lenta. À medida que você ganha confiança na implantação, ela deverá substituir a versão atual em sua totalidade.

Implementando Canary Deployment

→ Prefira um roteador ou balanceador de carga que lhe permita enviar uma pequena porcentagem de usuários para a nova versão;

→ Use uma dimensão em seus KPIs para indicar qual versão está relatando as métricas;

→ Utilize a métrica para medir o sucesso da implantação; isso indica se a implantação deve continuar ou ser revertida;

→ Aumente a carga na nova versão até que todos os usuários estejam na nova versão ou você tenha totalmente revertido à anterior.

 

Artigo técnico Service Mesh para conteúdo mais HandsOn

Crie um pipeline com canary deployments para Amazon EKS com AWS App Mesh | O blog da AWS

Continue lendo