
Esse conceito/estratégia de deploy vem com uma abordagem bem interessante.
A ideia é que você crie círculos de implementação, e disponibilize para cada circulo a versão de software que lhe convém.
Mas o que isso significa então?
Imagine que você tenha definido conjuntos de usuários específicos, de acordo com determinada característica como idade, localização, classe social, ou qualquer coisa do tipo. A ideia é que seu deploy possa ser específico para cada um desses públicos, sem a necessidade de replicação de ambiente.
Diferente do deploy tradicional, o deploy em círculos permite que você habilite seu deploy de forma gradativa, expandindo os círculos de deploy. Ou seja, imagine que você possua quatro grupos segregados por idade, cada um com um conjunto de vinte pessoas.
Você pode deixar três grupos com a V1 da sua aplicação, enquanto testa sua hipótese com os vinte usuários do quarto grupo. Caso sua aplicação seja aceita você inicia a expansão para os demais grupos.
Entenda que nesse momento, o deploy em círculos te da uma possibilidade nova de implementação. Caso você entenda que sua nova versão fez sucesso com o publico do grupo 1, 2, e 3 mas não foi muito aceita pelo publico do grupo 4, você pode optar por rodar com duas versões diferentes, possibilitando uma experiência mais direcionada.
Essa estratégia possibilita um ganho de confiabilidade, e diminuição de possíveis impactos em produção, mas traz também uma possibilidade de negócio bastante promissora para conquistar os clientes com experiências que façam mais sentido.
Então bora implementar deploy em círculos em tudo?
Bom, não é bem assim. No meu ponto de vista, esse tipo de estratégia funciona muito bem para aplicações que já estejam em um grau de desacoplamento e granularidade de microsserviços bem definidos. Não acho que seja uma boa opção para quem possui um alto grau de acoplamento, ou que ainda tenha alguns monolitos.
Esse tipo de estratégia, se aplicada a cenários acoplados, deve aumentar sua necessidade de implementações em serviços secundários para atender a implementação de um determinado microsserviço com duas versões diferentes.
Fora isso, esse tipo de estratégia aumenta sua complexidade em ambiente produtivo, podendo por um lado, dificultar na hora de um troubleshooting, mas diminuindo os impactos em caso de problema, uma vez que você consegue controla-los em grupos específicos.
E qual a diferença do deploy em círculos para o Blue Green ?
Eu vejo duas grandes diferenças.
A primeira é no controle mais direcionado de carga, podendo contar com características e não apenas com distribuição de rede.
A segunda fica no custo, que para o blue green é bastante elevado, dada a necessidade de manutenção de dois ambientes.
E se comparado ao Canary
Basicamente a maior diferença entre o Canary e o deploy em círculos é o fator de escolha de fluxo de carga de forma funcional, e orientada a características de negócio, e não apenas a características de infra.
Curtiu ? Compartilhe esse conteúdo com seus amigos e equipe.
Quer ver ainda mais dicas de tecnologia ? Me siga no insta @natanpf.
Até semana que vem.
Natan Pasquarelli Freitas
Deixe uma resposta