Recomendações 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 implantaçã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.
Principais estratégias de design
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: você pode minimizar o raio de explosão potencial de problemas causados pela implantação adotando 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 sua cadeia de suprimentos de carga de trabalho e pipelines de implantação sejam confiáveis, seguros e tenham padrões de implantaçã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 postmortems irrepreensíveis 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 o novo recurso 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, o pool de atualizações se torna o pool azul e o pool verde está pronto 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 em uma carga de trabalho que usa o padrão de design Carimbos de Implantação implantando em um carimbo 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 suficiente 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 capacidade normal. 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.
Desenvolva modelos robustos de integridade da carga de trabalho
Desenvolva um modelo de saúde robusto como parte de sua plataforma de observabilidade e estratégias de confiabilidade. Seu modelo de integridade deve fornecer visibilidade detalhada dos componentes e da integridade geral da carga de trabalho. Durante uma distribuição, se você receber um alerta sobre uma alteração de integridade relacionada a um usuário final, a distribuição deverá ser interrompida imediatamente e uma investigação sobre a causa do alerta deverá ser executada para ajudar a determinar o próximo curso de ação. 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 uso em seu modelo de integridade para ajudar a garantir que a falta de problemas relatados pelo usuário e sinais negativos de integridade não estejam escondendo um problema. Para obter mais informações, consulte Criando um modelo de integridade.
Implementar mecanismos de deteção de falhas
Quando a implantação causa um problema em um dos grupos de distribuição, a distribuiçã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 implantação desfazendo as alterações feitas na implantação e revertendo para a última configuração de trabalho conhecida.
Avançar com a implantação resolvendo o problema no meio da implantaçã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 de banco de dados, esquema ou outras alterações de componentes com monitoração de 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, a rolagem deve ser tratada 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 controle de versão em seus artefatos de compilação para ajudar a garantir que você possa reverter 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. Os sinalizadores de recursos 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.
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 em estratégias de ramificação, uso de sinalizadores de recursos 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.
Use os slots de preparo 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 Integridade do Aplicativo para relatar a integridade do aplicativo de dentro de uma instância do Conjunto de Dimensionamento de Máquina Virtual. A extensão investiga um ponto de extremidade do aplicativo local e atualiza o status de integridade com base nas respostas TCP/HTTP(S) recebidas do aplicativo.
Use os Aplicativos Lógicos do Azure para criar uma nova versão do aplicativo sempre que uma atualização for feita nele. 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 point-in-time que pode ajudá-lo a reverter. Os serviços que oferecem suporte à restauração point-in-time incluem:
Exemplo
Consulte o guia de arquitetura de clusters do Serviço Kubernetes do Azure (AKS) para obter um exemplo de como usar esse modelo de implantação.
Ligações relacionadas
- Extensão de integridade do aplicativo
- Configuração do Aplicativo do Azure
- Slots de preparo do Serviço de Aplicativo do Azure
- BD do Cosmos para o Azure
- Base de Dados do Azure para MySQL
- Base de Dados do Azure para PostgreSQL
- Balanceadores de carga do Azure
- Azure Logic Apps
- Azure Pipelines
- Base de Dados SQL do Azure
- Instância Gerida do SQL no Azure
- Construir um modelo de saúde
- Guia de integração contínua
- Carimbos de Implementação
- Considerações de desempenho para sua infraestrutura de implantação
- Engenharia de lançamento: Desenvolvimento de aplicações
- Engenharia de lançamento: Integração contínua
- Engenharia de lançamento: Rollback
- Testando seu aplicativo e o ambiente do Azure
- Aplicativos VM
Ligações da comunidade
Lista de verificação de Excelência Operacional
Consulte o conjunto completo de recomendações.