A etapa de implementação do software é crucial no desenvolvimento moderno, especialmente em ambientes de nuvem. Contudo, essa fase é frequentemente negligenciada. Empresas muitas vezes não dedicam tempo e recursos suficientes para tornar a implantação rápida, confiável e automatizada.
Observamos, com frequência, processos de implementação manuais. Na melhor das hipóteses, existe uma lista de verificação de etapas documentadas; na pior, planos improvisados de última hora. A automação da implementação surge como um objetivo a longo prazo, mas o caminho até ela é incerto. Um processo de implementação totalmente automatizado e confiável é fundamental para economizar tempo e esforço, liberando as equipes de desenvolvimento da tarefa de implantar cada nova versão.
As estratégias de implantação *Canary* e *Blue-Green* oferecem esses benefícios, além de alta disponibilidade, instalações rápidas e processos de *rollback*, permitindo que as equipes realizem lançamentos mais frequentes e sem preocupações. Vamos explorar essas estratégias e suas diferenças.
Implementação Azul-Verde: Uma Visão Geral
Fonte: cncf.io
A implementação Azul-Verde minimiza o tempo de inatividade e o risco de novas versões de software, utilizando dois ambientes idênticos: um ativo (azul) e um inativo (verde). O ambiente ativo executa a versão atual do software, recebendo o tráfego dos usuários. O ambiente inativo recebe a nova versão para testes.
Após a nova versão ser testada, o tráfego é direcionado do ambiente ativo para o inativo, que se torna o novo ambiente ativo. Este processo pode ser repetido conforme necessário.
Leia também: A Implementação Azul-Verde e seu Papel no DevOps Explicados
Principais Características e Vantagens
Estas são as particularidades da implementação Azul-Verde:
- Existem dois ambientes idênticos, em termos de dados e processos. O ambiente azul (ativo) é usado pelos usuários em suas atividades diárias. O ambiente verde (inativo) recebe a nova versão e permanece sincronizado com o azul.
- A troca de tráfego do ambiente ativo para o inativo é instantânea, eliminando tempo de inatividade. Os usuários acessam o novo ambiente sem interrupção.
- A reversão rápida em caso de problemas garante tempo de inatividade mínimo. A aplicação permanece altamente disponível, mesmo se a nova versão apresentar problemas.
- Testes automatizados são cruciais na implementação Azul-Verde, assegurando que a nova versão seja totalmente testada antes de entrar em produção.
- Essa implementação faz parte de um pipeline de entrega contínua, resultando em lançamentos de software mais rápidos e frequentes. A troca de tráfego é tão rápida que pode ser realizada diariamente.
Implementação Canário: Uma Visão Geral
Fonte: cncf.io
A implementação Canário lança novos recursos ou atualizações de forma gradual para um pequeno grupo de usuários, antes de estender para toda a base. Uma nova versão do software é implantada para um grupo reduzido, enquanto a versão antiga continua em uso para os demais. A equipe de desenvolvimento monitora de perto a nova versão, garantindo sua estabilidade e desempenho.
Se tudo correr bem, a nova versão é liberada para mais usuários até alcançar toda a base. Isso minimiza o risco de bugs ou problemas que afetem todos os usuários de uma vez. O objetivo é suavizar a transição para a nova versão.
Leia também: Implementação Canário e seu Papel no DevOps Explicado
Principais Características e Vantagens
Estas são as particularidades da implementação Canário:
- A nova versão é lançada para um pequeno grupo de usuários, e então gradualmente para mais usuários. Isso minimiza o risco de problemas que afetem todos os usuários de uma vez.
- O monitoramento da nova versão garante estabilidade e bom desempenho. Os desenvolvedores recebem feedback rapidamente, permitindo ajustes antes da implantação completa.
- A reversão para a versão anterior em caso de problemas é rápida e fácil. Isso aumenta a confiança no processo de implementação, reduzindo o risco de problemas que afetem a experiência do usuário.
- A automação do processo de implementação minimiza o risco de erros humanos.
Resumo: Implementação Azul-Verde vs. Implementação Canário
| Característica | Implementação Azul-Verde | Implementação Canário |
| Sincronização de Dados | Sincronização constante entre ambientes azul e verde. | Um subconjunto de usuários/servidores recebe a nova versão. |
| Processo de Ativação | Troca do ambiente ativo para o inativo quando uma nova versão está pronta. | Lançamento gradual para um grupo de usuários que testa a nova versão. |
| Experiência dos Usuários | Sem tempo de inatividade; alternância contínua entre ambientes ativos. | Um subconjunto de usuários testa a nova versão, podendo encontrar problemas. |
| Prioridade | Alta disponibilidade. | Feedback rápido e implementação controlada. |
| Mitigação de Risco | Redução de problemas através da liberação gradual. | Teste em ambientes inativos pode não detectar todos os problemas. |
| Abordagem de Teste | Testes em ambientes inativos podem não detectar todos os problemas. | Usuários testam em produção, descobrindo problemas do mundo real. |
| Casos de Uso | Netflix, Amazon, Etsy, LinkedIn e IBM usam Azul-Verde. | Netflix e Google usam Canário. |
Implementação Azul-Verde vs. Implementação Canário: Características
Implementação
Na implementação Azul-Verde, dois ambientes (azul e verde) estão sincronizados em termos de dados. Após testar a nova versão, o tráfego é direcionado do ambiente ativo para o inativo, tornando este o novo ambiente ativo. Não há tempo de inatividade e os usuários não percebem a mudança.
Fonte: aws.amazon.com
Na implementação Canário, a nova versão é lançada para um pequeno grupo de usuários enquanto a maioria continua usando a versão atual. É uma implantação gradual. Os testadores são usuários de produção que testam a nova versão e, quando estável, ela é liberada para todos.
A implementação Azul-Verde é ideal para alta disponibilidade, enquanto a Canário oferece feedback mais rápido e distribuição controlada.
Mitigação do Risco
A implementação Azul-Verde mitiga o risco de falha, permitindo uma reversão rápida para a versão anterior, garantindo que nenhum usuário seja bloqueado. Já a implementação Canário reduz o risco gradualmente, com novos recursos sendo lançados para um subgrupo antes de todos os usuários, permitindo a detecção precoce de problemas.
Diferença na Abordagem de Teste
Na implementação Azul-Verde, os testes são realizados no ambiente inativo. Desenvolvedores e testadores podem simular testes do ambiente de produção, pois os dados e configurações estão sincronizados. Embora exista a possibilidade de não detectar todos os problemas, a troca rápida entre os ambientes permite correções e uma nova troca.
Fonte: ibm.com
Na implementação Canário, os usuários de produção atuam como testadores. Eles encontram problemas rapidamente, realizando seus processos de negócios diários. Apesar do risco de alguns usuários terem problemas temporariamente, a equipe pode focar nos problemas mais críticos do mundo real.
Experiência e Casos de Uso
Empresas que usam essas implementações com sucesso:
- Netflix usa Azul-Verde para lançar novas versões de seu serviço de streaming.
- Amazon e Etsy usam Azul-Verde para suas plataformas de comércio eletrônico.
- LinkedIn usa Azul-Verde para sua rede social.
- IBM usa Azul-Verde para sua plataforma em nuvem.
- Netflix usa Canário para mudanças em seu serviço de streaming, combinando testes automatizados, sinalizadores de recursos e testes A/B.
- Google usa Canário para seus serviços em nuvem, com testes automatizados, divisão de tráfego e monitoramento.
Melhores Práticas e Tendências Futuras
A automação é essencial, com pipelines DevOps sendo o futuro dos processos de implementação. Esses processos incluem:
- Criação/atualização de ambientes em termos de serviços, dados, usuários e privilégios.
- Implementação automática de versões de código.
- Atualização de esquemas de banco de dados.
- Execução automática de testes.
- Reversão automática em caso de falhas nos testes.
- Eliminação de qualquer intervenção manual.
Com esses pipelines de implementação, você pode usar Canário, Azul-Verde ou outras opções. Elas são estruturas para resolver problemas de implementação. É possível alternar entre elas ou usá-las em conjunto.
Considerações Finais
Processos de implementação manuais são um sinal de equipes imaturas ou empresas inflexíveis. É preciso esforço para mudar essa situação. Implemente as estratégias de implementação mencionadas acima em seus projetos.
Em seguida, veja como implementar aplicativos no Kubernetes.