Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

3
respostas

Blue Green Deployment na prática

Eu fico pensando como seria uma implementaçao de um ambiente de Blue/Green Deployment em um sistema real. Por exemplo: um sistema de processo eletronico, onde a aplicaçao roda em um cluster kubernetes e faz acesso a uma banco de dados Postgres. Como seria uma estratégia Blue/Green deployment neste caso ?

3 respostas

Olá, Cleverson! Como vai?

Blue/Green Deployment é uma estratégia interessante para garantir que sua aplicação tenha zero downtime e facilite o rollback em caso de problemas.

Vou buscar explicar como você poderia implementar isso em um sistema real como o que você descreveu, com Kubernetes e PostgreSQL.

  1. Ambientes Separados: Primeiro, você precisa ter dois ambientes de produção idênticos, chamados de Blue e Green. Ambos devem estar configurados para rodar sua aplicação no Kubernetes. Inicialmente, o tráfego de usuários está sendo direcionado para o ambiente Blue.

  2. Banco de Dados: Como você está usando PostgreSQL, é importante garantir que ambos os ambientes (Blue e Green) possam acessar o mesmo banco de dados. Isso pode ser feito configurando o banco para aceitar conexões de ambos os conjuntos de pods, ou usando uma estratégia de migração de banco de dados que suporte mudanças sem downtime.

  3. Deploy da Nova Versão: Quando você deseja lançar uma nova versão da sua aplicação, você a implanta no ambiente Green. Isso significa que você cria um novo conjunto de pods no Kubernetes com a nova versão do seu aplicativo.

  4. Teste no Ambiente Green: Antes de redirecionar o tráfego para o ambiente Green, é crucial realizar testes para garantir que a nova versão está funcionando corretamente. Isso pode incluir testes automatizados ou manuais.

  5. Troca de Tráfego: Uma vez que você esteja confiante de que o ambiente Green está funcionando como esperado, você pode alterar o roteamento para direcionar o tráfego de usuários para o ambiente Green. Isso pode ser feito através de um load balancer ou um roteador de tráfego no Kubernetes, como o Istio.

  6. Monitoramento e Rollback: Após a troca, é importante monitorar o ambiente Green para detectar qualquer problema. Se algo der errado, você pode rapidamente reverter o tráfego para o ambiente Blue, que ainda está rodando a versão antiga e estável.

Essa estratégia ajuda a minimizar riscos e garante que você possa voltar rapidamente para uma versão estável se necessário.

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

O problema é que geralmente, uma nova versão da aplicaçao costumar fazer alteraçoes na base de dados, criando, excluindo e alterando objetos. Nesse caso, tendo um banco de dados compartilhado seria um empecilho.

Olá, Cleverson!

Isso acontece porque diferentes versões podem entrar em conflito, gerando inconsistências ou até falhas na execução.

Por isso, em cenários de evolução contínua, é comum adotar estratégias como:

  • Compatibilidade retroativa: planejar alterações de forma que versões antigas ainda consigam operar até que a migração seja concluída.
  • Versionamento do banco de dados: manter scripts de migração bem documentados para que cada atualização seja previsível e reversível.
  • Ambientes isolados: separar bases de desenvolvimento, teste e produção, evitando que mudanças em uma versão impactem diretamente usuários finais.

Continue com esse olhar crítico, esse cuidado é essencial para garantir estabilidade e escalabilidade das aplicações.

Forte abraço!