Para garantir a continuidade dos negócios e a alta disponibilidade é muito importante conhecer as principais estratégias de deployment em nuvem: Bing Bang, Phased Rollout, e Parallel Adoptation para então escolher quando usar cada uma delas.

Big Bang

Na estratégia Bing Bang, tudo é atualizado ao mesmo tempo.

Essa a forma de deployment mais simples e rápida, porém, a menos recomendada porque tem maior risco operacional.

Isso porque se algo der errado todos os usuários serão afetados e há grandes chances de indisponibilidade do sistema.

Phased Rollout

Na estratégia de Phased Rollout, você geralmente vai substituindo os servidores aos poucos até que todos estejam rodando a nova versão da aplicação.

Em um rolling deployment, a nova versão da aplicação gradualmente vai substituindo a antiga, durante algum tempo ambas as versões coexistirão sem afetar as funcionalidades ou a experiência dos usuários.

Fonte: Jason Skowronski: Intro to deployment strategies

Na prática, você pode fazer isso substituindo instancias EC2s por novas instâncias usando AMIs atualizadas, também é possível substituir containers com ECS (Elastic Container Service) ou Kubernetes.

Parallel Adoptation

Com Parallel Adoptation se mantém 2 versões do sistema funcionando em paralelo.

Sobe-se a nova versão enquanto a anterior ainda está rodando e vai migrando o trafego paulatinamente de um cluster para outro com a possibilidade de fazer rollback se algo não correr como era esperado.

É possível fazer isso com Roteamente de trafego, no caso da AWS usando Load Balancers (ELB/ALB) e Route 53 colocando em prática algumas das seguintes duas sub-estratégias mais comuns Canary Releases ou Blue Green Deployments.

Blue Green Deployments

Essa estratégia também é conhecida como Red-Black Deployment ou A/B Deployment.

Na estratégia BlueGreen, você tem dois ambientes, o blue (azul) é o que está recebendo todo o trafego da aplicação e o green (verde) é um clone desse ambiente que não está assumindo nenhum trafego.

No momento de fazer deploy a nova versão é implantada no ambiente verde (green) e então lá essa versão poderá ser testada.

Somente os testes forem bem sucedidos, então, o trafego será migrado do ambiente azul (blue) com a versão antiga para o ambiente verde (green) com a nova versão.

Veja nas imagens:

Fonte: Jason Skowronski: Intro to deployment strategies
Fonte: Jason Skowronski: Intro to deployment strategies

Canários (Canary Releases)

O modelo Canário é bem semelhante ao BlueGreen, porém, em vez de trocar todo o trafego em um único passo de um ambiente para o outro, essa troca de roteamento é mais faseada.

Dessa forma atualiza-se a aplicação em apenas uma parte da infra-estrutura e os usuários vão sendo migrados aos poucos até que gradualmente, se não houver problemas, todos os usuários serão migrados e o restante da infra atualizada para a nova versão.

Fonte: Jason Skowronski: Intro to deployment strategies

Se você quiser se aprofundar no assunto recomendo que leia o livro Entrega Contínua (Continuous Delivery) de Jez Humble e David Farley.

Deployment na AWS na Prática

Para aprender mais, veja essa palestra que Andy Mui e Vald Vlasceanu apresentaram no evento global da Amazon em Las Vegas.

Vale a pena ver também essa apresentação de Brent Maxwell no evento AWS Innovate sobre Entrega Contínua (Continuous Delivery).

Referências