Partilhar via


Estratégias de arquitetura para práticas de implantação seguras

Aplica-se a esta recomendação de lista de verificação de Excelência Operacional do Azure Well-Architected Framework:

OE:11 Defina claramente as práticas de implementação seguras da sua carga de trabalho. Enfatize os ideais de métodos de liberação pequenos, incrementais e com qualidade limitada. Use padrões modernos de implantação e técnicas de exposição progressiva para controlar o risco. Conta para implantações de rotina e implantações de emergência ou hotfix.

Este guia descreve as recomendações para o uso de práticas de implantação seguras (SDP). Processos e procedimentos de implantação seguros definem como fazer e implantar alterações com segurança em sua carga de trabalho. A implementação do SDP exige que você pense nas implantações através da lente do gerenciamento de riscos. Você pode minimizar o risco de erro humano em suas implantações e limitar os efeitos de implantações problemáticas em seus usuários implementando o SDP.

Há quatro diretrizes importantes a ter em mente ao implementar práticas de implantação seguras:

  • Segurança e consistência: Todas as alterações na carga de trabalho de produção são inerentemente arriscadas e devem ser feitas com foco na segurança e consistência.

  • Exposição progressiva: Pode-se minimizar o impacto potencial de problemas causados pelo processo de implantação seguindo um modelo de implantação de exposição progressiva.

  • Modelos de integridade: as implantações devem passar por verificações de integridade antes que cada fase de exposição progressiva possa começar.

  • Deteção de problemas: quando problemas são detetados, a implantação deve ser imediatamente interrompida e a recuperação iniciada.

As secções seguintes apresentam recomendações pormenorizadas sobre cada um destes pontos.

Garantir a segurança e a consistência das implantações

Se você está implantando uma atualização para o código do aplicativo, infraestrutura como código (IaC), sinalizador de recurso ou uma atualização de configuração, você está introduzindo risco para a carga de trabalho. Não há implantações de baixo risco para a produção. Cada implantação deve seguir um padrão padrão e deve ser automatizada para impor consistência e minimizar o risco de erro humano. É fundamental que a sua cadeia de fornecimento de carga de trabalho e os pipelines de implementação sejam confiáveis, seguros e tenham padrões de implementação claramente definidos. Trate cada implantação como um risco possível e sujeite cada implantação ao mesmo nível de gerenciamento de riscos. Apesar dos riscos, você deve continuar a implantar alterações regulares em sua carga de trabalho. A falha na implantação de atualizações regulares introduz outros riscos, como vulnerabilidades de segurança que devem ser resolvidas por meio de implantações. Para obter mais informações, consulte Recomendações para projetar uma cadeia de suprimentos de desenvolvimento de carga de trabalho.

Implantações pequenas frequentes são preferíveis a implantações grandes pouco frequentes. Pequenas alterações são mais fáceis de resolver quando surgem problemas e implantações frequentes ajudam sua equipe a criar confiança no processo de implantação. Também é importante que você aprenda com a produção revisando seus processos de carga de trabalho quando encontrar uma anomalia durante a implantação. Você pode encontrar pontos fracos no design de sua infraestrutura ou implantação. Quando ocorrerem problemas durante as implantações, certifique-se de que análises pós-mortem sem atribuição de culpa façam parte do seu processo SDP para capturar lições sobre o incidente.

Adotar um modelo de exposição progressiva

Quando ocorrem problemas de implantação, o objetivo é detetá-los o mais cedo possível para minimizar o efeito sobre os usuários finais. Implemente um modelo de implantação gradual, também conhecido como modelo de exposição progressiva, para atingir esse objetivo. As implantações de canárias são um exemplo comum de exposição progressiva. Nesse modelo de implantação, um pequeno grupo de usuários internos ou externos recebe o novo recurso primeiro. Depois que o primeiro grupo executa a nova versão sem problemas, o recurso é implantado em grupos sucessivamente maiores até que toda a população de usuários esteja executando a nova versão. Os sinalizadores de recursos são normalmente usados para habilitar a nova versão para os usuários de destino em implantações canárias.

Outro modelo de implantação comum é uma abordagem azul-verde. Neste modelo, dois conjuntos idênticos, ou pools, de infraestrutura de carga de trabalho são implantados. Ambos os pools são capazes de lidar com uma carga de produção completa. O primeiro pool (azul) executa a versão atual da implantação onde todos os usuários pousam. O segundo pool (verde) é atualizado com a nova funcionalidade e testado internamente. Após testes internos, um subconjunto do tráfego de produção é roteado do pool azul para o pool verde. Como as implantações canárias, a implantação é progressiva à medida que você transfere mais do tráfego para o pool verde em ondas de implantação sucessivamente maiores. Depois de concluir a distribuição, a piscina de atualizações torna-se a piscina azul e a piscina verde está pronta para a próxima implantação. As duas piscinas estão logicamente separadas uma da outra para proteger de avarias. Você pode implantar uma variação do modelo azul-verde numa carga de trabalho que utilize o padrão de design Deployment Stamps implementando em um 'stamp' de cada vez.

Em ambos os modelos, o tempo entre cada fase da implantação deve ser longo o suficiente para permitir que você monitore as métricas de integridade da carga de trabalho. Você deve fornecer tempo de assimilação adequado entre os grupos de distribuição, para ajudar a garantir que usuários de regiões diferentes ou usuários que executam tarefas diferentes tenham tempo para usar a carga de trabalho em sua plena capacidade. Os tempos de cozedura devem ser medidos em horas e dias, em vez de minutos. Os tempos de cozimento também devem aumentar para cada grupo de distribuição para que você possa levar em conta diferentes fusos horários e padrões de uso ao longo do dia.

Oportunidade de IA: A afinação manual de implementação cria atritos e atrasa a implementação. A IA acelera as implementações e reduz incidentes ao substituir a tomada de decisões subjetivas por recomendações baseadas em dados.

Comece com uma abordagem GenAI de baixa a média intensidade. Dê aos modelos acesso seguro à documentação de implementação, revisões de código e histórico de incidentes para analisar e sugerir estratégias e parâmetros de implementação.

Soluções agêncicas avançadas podem prever percentagens para teste canário, programação de lançamento e segmentos-alvo. Quando integradas com ferramentas de implementação, atualizam automaticamente as configurações de implementação. Estas soluções requerem integração mais profunda, acesso de escrita regulado e suporte de plataforma.

Modelos preditivos personalizados oferecem maior precisão, mas exigem um investimento significativo em infraestrutura de treino e experiência em ML. Podem não ser práticos para a maioria das equipas.

Desenvolva modelos robustos de saúde da carga de trabalho

Desenvolva um modelo de saúde robusto como parte de sua plataforma de observabilidade e estratégias de confiabilidade. O seu modelo de estado deve fornecer visibilidade detalhada sobre os componentes e o estado geral da carga de trabalho. Durante uma implementação, se receber um alerta sobre uma alteração do estado de saúde relacionado a um utilizador final, a implementação deverá ser interrompida imediatamente e uma investigação sobre a causa do alerta deverá ser realizada para ajudar a determinar os próximos passos. Se não houver problemas relatados pelos usuários finais e todos os indicadores de saúde permanecerem verdes durante todo o tempo de preparação, a implantação deve continuar. Certifique-se de incluir métricas de utilização no seu modelo de saúde para garantir que a ausência de problemas relatados pelos utilizadores e de sinais de saúde negativos não está a ocultar um problema. Para obter mais informações, consulte Construindo um modelo de saúde.

Implementar mecanismos de deteção de falhas

Quando a implementação causa um problema em um dos grupos de implementação, a implementação deve ser interrompida imediatamente. Uma investigação sobre a causa do problema e a gravidade dos efeitos deve ser realizada assim que o alerta é recebido. A recuperação do problema pode incluir:

  • Reverter a implementação, desfazendo as alterações realizadas e voltando à última configuração conhecida e funcional.

  • Continuar com a implantação resolvendo o problema durante o processo de implementação. Você pode resolver problemas no meio da implantação aplicando um hotfix ou minimizando o problema.

  • Implantação de nova infraestrutura usando a última configuração de trabalho conhecida.

A reversão de alterações, especialmente em banco de dados, esquema ou outras alterações em componentes com estado, pode ser complexa. Suas diretrizes de SDP devem fornecer instruções claras sobre como lidar com alterações de dados de acordo com o design do conjunto de dados para sua carga de trabalho. Da mesma forma, o avanço deve ser tratado com cuidado para garantir que o SDP não seja negligenciado e que o hotfix ou outros esforços de minimização sejam executados com segurança.

Estabelecer protocolos para implantações de emergência

  • Implemente o controlo de versões nos seus artefatos de compilação para ajudar a garantir que pode retroceder e avançar quando necessário.

  • Use um fluxo de liberação ou uma estrutura de ramificação baseada em tronco, que impõe uma colaboração fortemente sincronizada entre a equipe de desenvolvimento, em vez de uma estrutura de ramificação baseada em ambiente ou Gitflow.

  • Automatize o máximo possível do seu SDP. Para obter orientações detalhadas sobre como automatizar o IaC e os processos de integração contínua e entrega contínua (CI/CD) de aplicativos, consulte Recomendações para implementar automação.

  • Use práticas de CI para integrar regularmente alterações de código em repositórios. As práticas de CI podem ajudá-lo a identificar conflitos de integração e reduzir a probabilidade de fusões grandes e arriscadas. Para obter mais informações, consulte o Guia de integração contínua.

  • Use sinalizadores de recursos para habilitar ou desabilitar seletivamente novos recursos ou alterações na produção. As flags de funcionalidades podem ajudá-lo a controlar a exposição do novo código e reverter rapidamente a implantação se surgirem problemas.

  • Implante alterações em ambientes de preparação que espelhem seu ambiente de produção. Os ambientes de prática permitem que você teste alterações em uma configuração controlada antes de implantar no ambiente ao vivo.

  • Estabeleça verificações pré-implantação, incluindo revisão de código, verificações de segurança e verificações de conformidade, para ajudar a garantir que as alterações sejam seguras para implantação.

  • Implemente disjuntores para interromper automaticamente o tráfego para um serviço que esteja enfrentando problemas. Fazê-lo pode ajudar a evitar uma maior degradação do sistema.

Protocolos SDP de emergência

Estabeleça protocolos prescritivos que definam como seu SDP pode ser ajustado para um hotfix ou para problemas de emergência, como uma violação de segurança ou exposição a vulnerabilidade. Por exemplo, seus protocolos SDP de emergência podem incluir:

  • Aceleração da fase de promoção e aprovação.

  • Teste de fumaça e aceleração de testes de integração.

  • Redução do tempo de cozedura.

Em alguns casos, a emergência pode limitar a qualidade e os portões de teste, mas os portões ainda devem ser executados o mais rápido possível como um exercício fora de banda. Certifique-se de definir quem pode aprovar a aceleração do SDP em uma emergência e os critérios que devem ser atendidos para que a aceleração seja aprovada. Alinhe seus protocolos SDP de emergência com seu plano de resposta a emergências para ajudar a garantir que todas as emergências sejam tratadas de acordo com os mesmos protocolos.

Planear e executar o desmantelamento seguro

Remover ou depreciar um componente é uma das alterações de maior risco que você pode fazer. Uma vez excluído, um recurso geralmente desaparece definitivamente e a recuperação pode ser difícil. Mesmo algo que pareça ocioso ou insignificante ainda pode suportar uma dependência oculta crítica. Trate cada eliminação como irreversível e siga uma abordagem deliberada e que priorize a segurança, como:

  • Valide a inatividade. Confirme se o recurso realmente não foi utilizado. Defina indicadores claros de inatividade ao longo de todo o ciclo de um usuário ou empresarial. Se você vir alguma atividade, como solicitações, acessos de rota, alterações de profundidade da fila, avaliações de sinalizadores de recursos ou consultas DNS, investigue e confirme se é legítima antes de prosseguir.

  • Preservar o estado antes da remoção. Tire um instantâneo, exporte ou faça backup do recurso e marque-o com uma data de descarte ou revisão.

  • Desative antes de apagar. Quando possível, mova o componente para um modo desativado ou offline em vez de excluí-lo imediatamente. Isso ajuda a expor dependências ocultas com segurança. Só ignore esta etapa se os requisitos de conformidade ou segurança exigirem remoção imediata.

  • Monitorize através de uma janela de observação. Observar durante um período de monitorização que abrange padrões de uso normal e de pico. Qualquer atividade inesperada durante este período deve reiniciar o processo de desmantelamento.

  • Limpar referências residuais. Uma vez confiante na inatividade total, limpe as referências relacionadas ao componente removido.

Considerações

Criar e manter práticas de implantação seguras é complexo. Seu sucesso na implementação total de padrões robustos depende da maturidade de suas práticas em muitas áreas de desenvolvimento de software. O uso de automação, somente IaC para alterações de infraestrutura, consistência nas estratégias de ramificação, uso de flags de funcionalidades e muitas outras práticas podem ajudar a garantir uma implantação segura. Use este guia para otimizar sua carga de trabalho e informar seus planos de melhoria à medida que suas práticas evoluem.

Facilitação do Azure

  • Os Pipelines do Azure e as Ações do GitHub dão suporte a implantações de vários estágios usando portas de aprovação, que podem ajudá-lo a projetar sua distribuição de exposição progressiva para implantações.

  • Utilize os slots de ensaio do Serviço de Aplicativo do Azure para trocar facilmente entre versões de código. Os slots de preparo são úteis para testes em ambientes de preparo e podem ser usados para implantações azul-verde.

  • Armazene e gerencie seus sinalizadores de recursos de aplicativo Web na Configuração do Aplicativo do Azure. Usando esse serviço, você pode criar, alterar e implantar recursos em um plano de gerenciamento unificado.

  • Implante aplicativos de carga de trabalho em sua máquina virtual usando aplicativos VM.

  • Use os balanceadores de carga do Azure para implementar estratégias de implantação e expor a integridade de seus aplicativos de carga de trabalho usando recursos nativos.

  • Use a extensão de Integridade do Aplicativo para monitorizar a saúde do aplicativo a partir de uma instância de um Conjunto de Dimensionamento de Máquina Virtual. A extensão sonda um ponto de extremidade da aplicação local e atualiza o estado de saúde com base nas respostas TCP/HTTP(S) recebidas da aplicação.

  • Utilize Azure Logic Apps para criar uma nova versão da aplicação sempre que se fizer uma atualização. O Azure mantém um histórico de versões de aplicativos e pode reverter ou promover para qualquer versão anterior.

  • Muitos serviços do Banco de Dados do Azure fornecem funcionalidade de restauração pontual no tempo para ajudá-lo a reverter. Os serviços que oferecem suporte à restauração pontual no tempo incluem:

Exemplo

Consulte o guia de arquitetura do modelo de implantação azul-verde para clusters do Serviço Kubernetes do Azure (AKS) para obter um exemplo de como utilizar este modelo de implantação.

Lista de verificação de Excelência Operacional

Consulte o conjunto completo de recomendações.