Estratégias de implementação
As práticas do DevOps envolvem ciclos de lançamentos frequentes que beneficiam as organizações e os seus utilizadores finais de muitas formas. Como as implantações individuais são menores, elas são mais rápidas e menos estressantes, mas as coisas ainda podem dar errado. Para reduzir a possibilidade de problemas, você precisa adotar uma estratégia de implantação que melhor se adapte às necessidades da sua organização.
Você já conhece a abordagem de "implantação épica", que alguns chamam de estratégia de "big bang". Você sabe que esse método não funciona bem para aplicativos modernos. Existem muitas outras estratégias de implementação que se tornaram populares no contexto de operações modernas e cada uma tem as suas vantagens e desvantagens, consoante a situação.
Estratégia de implementação contínua
A estratégia de implantação contínua adota uma abordagem gradual para introduzir novas versões de código. A nova versão é faseada durante um período e aumenta gradualmente as instâncias do novo código, ao mesmo tempo que diminui as instâncias do código antigo. Isto significa que as instâncias antigas e novas vão coexistir na organização. Por exemplo, poderá atualizar o software num servidor, máquina virtual ou contentor 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 seu desempenho, segurança, confiabilidade e outros padrões antes de ser amplamente implantado.
Estratégia de implementação azul-verde
A estratégia de implementação azul-verde utiliza dois ambientes separados que são idênticos. Um deles é um ambiente de teste com a nova versão do software e o outro é o ambiente de produção atual. Quando estiver satisfeito que o software está funcionando corretamente e atende aos seus padrões, você pode executar uma mudança completa do ambiente de produção atual para o novo para que ele agora lide com todo o tráfego de produção.
O ambiente azul é o seu ambiente de produção atual. O ambiente verde é o seu duplicado do mesmo. Primeiro, você implanta a nova versão do software no ambiente verde e, quando estiver pronto, roteia o tráfego do aplicativo do ambiente azul para o verde, que agora é seu ambiente de produção.
Uma vantagem dessa estratégia é que você pode fazer a mudança quase instantaneamente, sem tempo de inatividade. Também é fácil voltar para azul se ocorrer um problema depois de levar o ambiente verde ao vivo.
Estratégia de implementação canário
A estratégia de implementação canário combina alguns elementos da implementação contínua com os da implementação azul-verde. Você não faz a mudança de uma só vez, mas implanta a nova versão em uma parte limitada do ambiente de produção e, em seguida, desloca gradualmente todo o tráfego para a nova versão. O software é implantado em etapas incrementais em um número limitado de instâncias ou usuários até que você verifique se ele funciona corretamente e, em seguida, é implantado para o restante da infraestrutura.
O nome tem origem na utilização de canários em minas de carvão como um sistema de aviso antecipado. Em uma implantação canária, você pode fazer testes automatizados e usar monitoramento e análise para obter um aviso antecipado de quaisquer problemas com a nova versão dentro do subconjunto de instâncias ou usuários. Dessa forma, todo o ambiente de produção não é afetado.
Marcas de funcionalidades
A ideia da bandeira de recurso é outra estratégia que exige 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 (presumivelmente com novas funcionalidades), preparamos uma versão do software que contém o software antigo e as novas alterações (funcionalidades, etc). As novas alterações estão inativas por predefinição e não estão visíveis até que o "sinalizador de funcionalidades" para essa alteração seja ativado ao ligar o sinalizador. Esse sinalizador pode assumir muitas formas, incluindo uma linha em um arquivo de configuração, um argumento de linha de comando, uma resposta especial de um servidor on-line que o software consulta na inicialização e assim por diante.
Uma forte vantagem para essa abordagem é a facilidade com que podemos reverter se houver um problema, ou a facilidade em implementar lentamente as mudanças. Não temos de enviar uma nova versão (com todos aqueles bits) para os nossos servidores ou clientes. Basta ativar ou desativar o sinalizador adequado para atualizar ou mudar para a versão anterior.
Melhores práticas de implementação
Independentemente da estratégia de implementação que utilizar, existem algumas melhores práticas que vão ajudá-lo a minimizar os riscos ao lançar novo software ou uma nova versão de um software existente:
Use ferramentas adequadas, como o Azure Pipelines, para criar um pipeline contínuo de integração e implantação.
Integre os testes automatizados.
Utilizar canais de comunicação para notificar as partes apropriadas dos resultados dos testes; ou seja, alerte as equipes se as implantações falharem, encontrarem problemas e assim por diante.
Monitorize os problemas imediatamente após a implementação.
Tenha um plano para reverter se uma implantação de nova versão não passar nas verificações de integridade ou funcionar corretamente.