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