Estratégias de implantação
- 4 minutos
As práticas de DevOps envolvem ciclos de lançamento frequentes que beneficiam as organizações e os usuários finais de várias maneiras. Como as implantações individuais são menores, elas são mais rápidas e menos estressantes, mas ainda pode haver problemas. Para reduzir a possibilidade da ocorrência de problemas, você precisa adotar uma estratégia de implantação que melhor atenda às necessidades da sua organização.
Você já conhece a abordagem de "implantação épica", que alguns chamam de estratégia "Big Bang". E sabe que esse método não funciona bem em aplicativos modernos. Há várias outras estratégias de implantação que se tornaram populares no contexto de operações modernas, e cada uma tem pontos fortes e fracos, dependendo da situação.
Estratégia de implantação sem interrupção
A estratégia de implantação sem interrupção usa uma abordagem gradual para a introdução de novas versões de código. A nova versão é colocada em fases ao longo de um período de tempo, aumentando gradualmente as instâncias do novo código, diminuindo as instâncias do antigo. Como resultado, instâncias antigas e novas coexistem no ambiente de destino da implantação durante a implementação. Por exemplo, você pode atualizar o software em um servidor, máquina virtual ou contêiner de cada vez.
Uma vantagem dessa estratégia é que você pode monitorar o novo código no ambiente de produção para garantir que ele atenda ao desempenho, à segurança, à confiabilidade e a outros padrões antes que eles sejam amplamente implantados.
Estratégia de implantação azul-verde
A estratégia de implantação azul-verde usa dois ambientes separados que são mantidos o mais semelhantes possível e ambos são capazes de atender ao tráfego de produção. Um ambiente lida com a carga de produção atual, enquanto o outro hospeda a nova versão do software para que você possa validá-lo antes de deslocar o tráfego. Quando estiver satisfeito com a estabilidade da nova versão, você poderá redirecionar todo o tráfego de uma vez ou aumentar gradualmente a proporção do tráfego indo para o novo ambiente enquanto monitora os resultados.
O ambiente azul é aquele que atualmente atende ao tráfego de produção. O ambiente verde é seu equivalente paralelo. Primeiro, você implanta a nova versão do software em verde, valida-a e, em seguida, roteia o tráfego de produção de azul para verde. Após a transição, os papéis podem ser invertidos: o ambiente verde torna-se o ambiente de produção e o azul pode ser preparado para a próxima versão.
Uma vantagem dessa estratégia é que você pode alternar rapidamente, muitas vezes com pouco ou nenhum tempo de inatividade. Também é relativamente fácil direcionar o tráfego de volta para o ambiente anterior se ocorrer um problema depois que o novo ambiente ficar ativo.
Estratégia de implantação canário
A estratégia de implantação canário combina alguns elementos da implantação sem interrupção com os da implantação azul-verde. A alternância não é feita toda de uma vez. Você deve implantar a nova versão em uma parte limitada do ambiente de produção e, em seguida, migrar gradualmente todo o tráfego para a nova versão. O software é implantado em etapas incrementais para um número limitado de instâncias ou usuários até que você verifique se ele funciona corretamente e, em seguida, é implantado no restante da infraestrutura.
O nome vem da prática de uso de canários em minas de carvão como um sistema de aviso antecipado. Em uma implantação canário, você pode fazer testes automatizados e usar monitoramento e análise para receber um aviso antecipado de qualquer problema com a nova versão no subconjunto de instâncias ou usuários. Dessa maneira, todo o ambiente de produção não é afetado.
Sinalizadores de recursos
A ideia do sinalizador de recurso é outra estratégia que requer um pouco mais de sofisticação por parte dos desenvolvedores. Em vez de ter duas versões separadas do mesmo software (uma antiga e uma nova com novos recursos), você envia uma única versão que contém o comportamento antigo mais as novas alterações. As novas alterações estão inativas por padrão e não ficam visíveis até que o "sinalizador de recurso" correspondente seja ativado. Um sinalizador pode usar várias formas, incluindo uma linha em um arquivo de configuração, um argumento de linha de comando ou um valor recuperado de um serviço de configuração remota e avaliado em runtime.
Uma grande vantagem dessa abordagem é a facilidade de reverter se ocorrer um problema e a facilidade de implementar lentamente as alterações. Em muitos casos, você não precisa enviar uma nova versão para expor ou ocultar o recurso. Você pode simplesmente desativar ou ativar o sinalizador apropriado e permitir que o aplicativo em execução reaja à nova configuração.
No Azure, a funcionalidade de feature management do Azure App Configuration fornece um repositório gerenciado de sinalizadores de recursos que seus aplicativos podem ler em tempo de execução, com suporte do SDK para .NET, Java, Python, JavaScript e Go.
Implantações baseadas em anel
Uma implantação baseada em anel é uma forma estruturada de distribuição progressiva amplamente usada dentro da Microsoft e do Azure. O novo código é liberado para uma sequência de "anéis". Por exemplo, um anel interno ou de teste interno, um anel para usuários pioneiros, um anel de ampla implementação e, finalmente, um anel de disponibilidade geral. Cada anel é maior que o anterior e a implantação só avança para o próximo anel depois que os sinais de integridade do anel atual atendem aos critérios definidos. Implantações baseadas em anéis combinam a exposição gradual das implantações canary com públicos-alvo explícitos e nomeados e pontos de aprovação entre os anéis.
Entrega progressiva
As estratégias acima (canary, baseadas em anéis e sinalizadores de recursos) são frequentemente agrupadas sob o termo abrangente entrega progressiva. A ideia unificadora é que uma versão seja exposta a um público-alvo controlado e crescente, instrumentado com métricas de integridade e de negócios, e avançada ou revertida automaticamente com base nesses sinais. A entrega progressiva é cada vez mais o modelo padrão para serviços de nuvem de alta confiabilidade porque limita o raio de explosão de qualquer alteração individual.
Melhores práticas de implantação
Independentemente de qual estratégia de implantação você usa, algumas práticas recomendadas ajudam a minimizar o risco ao distribuir novos softwares ou uma nova versão do software existente:
Use ferramentas adequadas, como Azure Pipelines ou GitHub Actions, para criar um pipeline de integração e implantação contínua.
Integre testes automatizados.
Use canais de comunicação para notificar as partes certas dos resultados do teste. Por exemplo, alerte as equipes quando as implantações falharem ou encontrarem problemas.
Monitore o software para ver se há problemas imediatamente após a implantação.
Tenha um plano para reverter a versão caso ela não passe nas verificações de integridade ou não funcione corretamente.