Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a esta recomendação de lista de verificação de Excelência Operacional do Azure Well-Architected Framework:
| OE:06 | Construa e otimize a sua cadeia de abastecimento de carga de trabalho utilizando pipelines previsíveis e automatizados que testam e promovem mudanças entre ambientes. Projete estes pipelines para cumprir consistentemente as suas metas de fiabilidade, segurança, eficiência de custos e desempenho. |
|---|
Para fornecer uma forma previsível e padronizada de manter a sua carga de trabalho, desenhe a sua cadeia de abastecimento de desenvolvimento de carga de trabalho em torno da integração contínua e da entrega contínua (CI/CD). Manter uma cadeia de abastecimento única e padronizada e implementá-la utilizando pipelines automatizados de CI/CD. Pode usar vários pipelines, desde que todos sigam a mesma cadeia de fornecimento.
Use uma cadeia de abastecimento padronizada para proteger a sua carga de trabalho dos riscos de mudanças não geridas. Mantenha visibilidade contínua sobre o estado da carga de trabalho para evitar comportamentos imprevisíveis e o dispendioso rastreamento de alterações não acompanhadas quando surgem problemas. Para minimizar esses riscos, padronize os processos e as ferramentas que definem sua cadeia de suprimentos e garanta que sua equipe de carga de trabalho se comprometa totalmente com seu uso.
Definição
| Termo | Definição |
|---|---|
| Cadeia de fornecimento | Em cargas de trabalho cloud, uma cadeia de abastecimento é um conjunto padronizado de ferramentas e processos que utiliza para implementar alterações de infraestrutura e aplicações em vários ambientes. |
Nota
As recomendações neste guia referem-se a ambientes de carga de trabalho em uma cadeia de promoção de código. Sandbox ou outros ambientes exploratórios e de prova de conceito (POC) exigem menos rigor e estrutura.
As recomendações a seguir podem ajudá-lo a definir os princípios fundamentais da sua cadeia de suprimentos.
Impor uma política rigorosa de implantações automatizadas baseadas em modelos
Faça todas as alterações propostas na carga de trabalho através dos processos e ferramentas da sua cadeia de abastecimento, e imponha implementações automatizadas baseadas em templates. Esta abordagem mantém as configurações padronizadas, bem definidas e rigorosamente controladas entre os ambientes. Nos ambientes de uma cadeia de promoção de código, proíba atualizações manuais ou a interação direta com o plano de controlo da nuvem, tais como através do portal ou das APIs. Aplique todas as alterações ao ambiente através de pipelines que sigam as suas práticas de implementação definidas. Para aplicar esta política, limitar o acesso a apenas leitura e usar portas de autorização para conceder acesso à escrita quando necessário.
Um aspeto importante desse princípio é que todas as alterações são propostasaté que sejam implantadas em produção. Por meio de testes automatizados, como integração e testes de fumaça, você permite que sua cadeia de suprimentos rejeite automaticamente as alterações.
Oportunidade de IA: O diagnóstico manual de falhas de implementação abranda as equipas, causa frustração e cria silos de conhecimento. Melhore a produtividade e a resiliência avaliando primeiro ferramentas DevOps prontas a usar que fornecem análise de falhas assistida por IA. Para expandir estas capacidades, adicione um agente personalizado à sua cadeia de ferramentas existente para identificar e resolver problemas comuns. Para cenários avançados, considere uma solução agente que monitoriza a telemetria do pipeline e os dados históricos de incidentes para detetar padrões recorrentes de falhas e recomendar remediações proativas.
Implantar infraestrutura repetível e imutável como código
Implementar infraestruturas repetíveis e imutáveis usando infraestrutura como código (IaC). Gere a infraestrutura como definições declarativas, controladas por versões, que espelhem o código-fonte da tua aplicação. Aplicar o mesmo IaC de forma consistente cria sempre o mesmo ambiente, de forma semelhante a como o mesmo código-fonte cria o mesmo binário quando o compilas.
Para padronizar e automatizar a forma como implementa e configura a infraestrutura, adote o IaC. Substitua as implantações dependentes de pessoas por pipelines totalmente automatizados. Esta abordagem transfere a responsabilidade dos indivíduos para as ferramentas e reduz o esforço manual. Permitir que os membros autorizados da equipa iniciem implementações através deste processo automatizado para manter consistência e qualidade entre os ambientes.
Desenhe a sua carga de trabalho como um grupo lógico de componentes que pode agrupar num único modelo para tornar as implementações simples e repetíveis. Você pode pensar nesses pacotes como selos ou unidades de escala. Para obter mais informações, consulte Padrão Deployment Stamps. Quando precisar implantar a sua carga de trabalho para aumentar para outra região ou zona dentro da mesma região, implante um modelo utilizando um pipeline. Dependendo de como você cria seus carimbos, você pode implantar um subconjunto de sua carga de trabalho em vez de toda a carga de trabalho. Para garantir que os seus carimbos de implementação se ligam automaticamente aos recursos existentes, inclua componentes de rede nos seus pipelines IaC.
Para otimizar seu pipeline de IaC para consistência e eficiência, projete uma infraestrutura imutável em vez de uma infraestrutura mutável. Implemente uma infraestrutura imutável para garantir que todos os sistemas no escopo sejam substituídos pela configuração atualizada simultaneamente e de forma idêntica a cada implantação.
Oportunidade de IA: Otimize a gestão do pipeline e reduza o esforço manual utilizando otimização de implementação impulsionada por IA. O GitHub Copilot pode acelerar a geração de código nos seus pipelines CI/CD. A integração da IA pode validar e aplicar padrões organizacionais, recomendar estratégias de rollback e detetar desvios comparando os estados atuais e pretendidos da infraestrutura. Melhore a monitorização com modelos de IA que antecipam problemas e os detetem precocemente para intervenção.
Manter inventários de recursos precisos e monitorizados continuamente em todos os ambientes, incluindo passos de aprovação e registos de auditoria para acompanhar as ações da IA.
Use o mesmo conjunto de artefatos de implantação em todos os ambientes
Use o mesmo conjunto de ativos e artefactos de código em todos os ambientes e pipelines. Um desafio comum para as organizações é quando ambientes não produtivos diferem dos ambientes de produção. Construir manualmente ambientes de produção e não produção pode resultar em configurações desajustadas entre os ambientes. Este desajuste atrasa os testes e aumenta a probabilidade de alterações prejudicarem um sistema de produção. Uma abordagem IaC reduz estes problemas. Quando usa automação IaC, pode usar os mesmos ficheiros de configuração de infraestrutura para todos os ambientes para produzir ambientes quase idênticos. Você pode adicionar parâmetros aos arquivos de configuração de infraestrutura e ajustá-los para atender aos requisitos de cada ambiente.
Para controlar os custos, normalmente há uma variação entre ambientes de produção e não produção. Normalmente não precisas do mesmo nível de redundância ou desempenho em não-produção, por isso a contagem de recursos e os SKUs podem variar. Certifique-se de controlar e entender a variância usando parâmetros padronizados para ajudá-lo a manter a previsibilidade à medida que faz alterações.
Refletir a estrutura organizacional na cadeia de suprimentos
Reflita sua estrutura organizacional em sua cadeia de suprimentos e projetos de pipeline. A sua organização pode estar compartimentada entre as equipas. Pode organizar as suas equipas por função (como redes, dados e computação) ou integrá-las como equipas DevOps que gerem a infraestrutura e as aplicações. Há muitas maneiras de organizar as equipes envolvidas em uma cadeia de suprimentos. Independentemente da estrutura, a sua cadeia de abastecimento depende da colaboração entre todas as equipas. Garantir que todas as equipes sigam processos padrão e usem ferramentas padrão para tornar a cadeia de suprimentos o mais eficiente possível.
A sua cadeia de abastecimento pode depender de fornecedores externos se subcontratar partes do ciclo de vida da carga de trabalho. Esses fornecedores são tão críticos para o sucesso da sua cadeia de fornecimento como os recursos internos. Certifique-se de que há um acordo mútuo entre todas as equipes sobre os processos e ferramentas que você usa.
Escolha o método de implantação correto
Padronize seu método de implantação. Fale com o proprietário do produto sobre a quantidade aceitável de tempo de inatividade de produção para sua carga de trabalho. Dependendo do tempo de inatividade aceitável, pode escolher o método de implementação que se adequa aos seus requisitos. Idealmente, realizar implementações durante uma janela de manutenção para reduzir a complexidade e o risco. Se não for aceitável nenhum tempo de inatividade, utilize um método de implementação azul-verde.
Use uma abordagem de exposição progressiva, como implantações de canários, para reduzir o risco de introduzir bugs não detetados nos seus clientes. Implemente as alterações em pequenos grupos controlados em fases para que possa detetar problemas antes de um lançamento geral. O grupo de distribuição inicial pode ser uma subseção de seus clientes que estão cientes da estratégia de implantação. Esta subseção de clientes pode tolerar alguma quantidade de comportamento inesperado e fornecer feedback. Ou pode ser um grupo de utilizadores internos, o que ajuda a limitar o impacto dos bugs durante o lançamento.
Quando definir o seu método de implementação, adote uma política padrão de libertar a menor alteração viável em cada implementação. Determine o que qualifica como a menor alteração viável com base na criticidade da sua carga de trabalho e na complexidade dos seus componentes. Se usares uma infraestrutura imutável, a menor alteração viável é redistribuir recursos com a configuração mais recente para substituir aqueles que correm a versão anterior. Se usar uma infraestrutura mutável, pode decidir que a menor alteração viável é apenas uma única atualização com âmbito definido do grupo de recursos.
Oportunidade de IA: A análise orientada por IA identifica padrões de utilização e recomenda tempos ótimos de implementação, eliminando assim a inspeção manual repetitiva dos registos. Evite adivinhar períodos de baixa utilização, implementar durante períodos de grande tráfego ou causar perturbações ao utilizador. Comece com uma abordagem de IA generativa de baixo esforço (GenAI) que liga os modelos diretamente à telemetria da sua carga de trabalho. Esta abordagem permite a deteção interativa de padrões e a geração de insights. Para cargas de trabalho em grande escala e elevadas transações, escale para modelos preditivos baseados em aprendizagem automática que prevejam janelas de implementação ótimas à medida que as tendências de utilização evoluem.
Siga uma abordagem em camadas
Siga uma abordagem em camadas para refletir diferentes ciclos de vida. Espera-se que as camadas de carga de trabalho mudem ao longo do ciclo de vida, mas deve manter as operações estáticas e consistentes. Use pipelines de implementação separados para cada camada para que possa aplicar alterações de forma independente e adequada.
Uma zona de aterragem está localizada na camada mais baixa da sua arquitetura. É um agrupamento lógico de elementos fundamentais, como subscrições, grupos de gestão, grupos de recursos, controlos de governação e topologia de rede, que pode usar para implementar e operar cargas de trabalho de forma consistente. Proporciona às operações centrais ou equipas da plataforma uma configuração de ambiente repetível. Para garantir consistência, as zonas de aterragem Azure incluem áreas de design comuns, uma arquitetura de referência, uma implementação de referência e um processo para adaptar as implementações aos seus requisitos de design. Os princípios de design recomendam práticas baseadas numa governação orientada por políticas, juntamente com a democratização por subscrição. Uma zona de aterragem deve exigir alterações mínimas ao longo do ciclo de vida da carga de trabalho. Para ver um exemplo de zona de aterragem com práticas recomendadas para Azure, consulte Azure zona de aterragem.
Mantenha a sua infraestrutura central estável, incluindo controladores de rede de entrada e saída, balanceadores de carga, soluções de encaminhamento de rede, Sistema de Nomes de Domínio (DNS) e servidores principais, fazendo alterações significativas apenas quando necessário. Espere e planeie atualizações de configuração mais frequentes nestes componentes.
As suas camadas de aplicação e dados normalmente exigem atualizações frequentes de configuração e alterações de infraestrutura. Use os pipelines de implementação mais dinâmicos para estes componentes.
Incorporar tipos abrangentes de testes
Planeje uma estratégia de teste holística. Um princípio fundamental da fiabilidade do sistema é o princípio do deslocamento à esquerda. O processo de desenvolvimento de software tem passos que vão da esquerda para a direita. Não esperes até ao fim para testar. Move os testes o mais cedo possível para detetar problemas quando custam menos a resolver. Defeitos que se descobrem tarde no ciclo de vida podem ser dispendiosos ou até impossíveis de corrigir.
Teste todo o código, incluindo código de aplicativo, modelos de infraestrutura e scripts de configuração. Controle as versões do ambiente que executa aplicações e implemente-o através dos mesmos mecanismos que utiliza para o código da aplicação. Use as mesmas abordagens de teste que as suas equipas usam para o código da aplicação para validar o ambiente.
Use testes automatizados sempre que possível para garantir consistência. Inclua os seguintes tipos de testes no design da sua cadeia de suprimentos.
Testes unitários: Execute testes unitários como parte de uma rotina de integração contínua. Os testes unitários devem ser extensivos e rápidos. Idealmente, devem cobrir 100% do código e ser executados em menos de 30 segundos.
Implementar testes unitários para verificar se a sintaxe e funcionalidade dos módulos individuais de código funcionam como devem, como produzir uma saída definida para uma entrada conhecida. Você também pode usar testes de unidade para verificar se os ativos IaC são válidos.
Aplique testes de unidade a todos os ativos de código, incluindo modelos e scripts.
Teste de fumo: Os testes de fumo confirmam que uma carga de trabalho pode ser configurada num ambiente de teste e que funciona conforme esperado. Os testes de fumaça não verificam a interoperabilidade dos componentes.
Os testes de fumaça verificam se a metodologia de implantação da infraestrutura e do aplicativo funciona e se o sistema responde como pretendido após a conclusão do processo.
Testes de integração: Os testes de integração garantem que os componentes da aplicação operam individualmente e determinam se os componentes podem interagir entre si conforme pretendido.
Pode levar uma quantidade considerável de tempo para executar um grande conjunto de testes de integração. Por esta razão, é melhor incorporar o princípio shift-left e testar precocemente no ciclo de vida de desenvolvimento de software (SDLC). Reserve os testes de integração para cenários que não possa testar usando um teste de fumo ou teste unitário.
Você pode executar processos de teste de longa duração em um intervalo regular, se necessário. Um intervalo regular constitui um bom equilíbrio e deteta problemas de interoperabilidade entre componentes da aplicação o mais tardar um dia depois de serem introduzidos.
Alguns cenários de teste se beneficiam de execuções manuais. Use testes manuais quando precisar introduzir elementos de interatividade humana nos testes.
Testes de aceitação: Dependendo do contexto, pode realizar manualmente os testes de aceitação. Pode ser parcial ou totalmente automatizado. Os testes de aceitação determinam se o sistema de software atende às especificações de requisitos.
O principal objetivo deste teste é avaliar a conformidade do sistema com os requisitos de negócios e determinar se o sistema atende aos critérios exigidos para entrega aos usuários finais.
Oportunidade de IA: Melhore a sua estratégia de testes para encontrar casos-limite e cenários focados no cliente, que sejam difíceis de detetar e muitas vezes ignorados. Comece por usar as suas análises e relatórios existentes para identificar lacunas de cobertura, depois use ferramentas como o Copilot para gerar novos casos de teste e scripts. Otimize o seu conjunto de testes removendo testes redundantes para melhorar a velocidade e a eficiência. Considere uma solução de IA agente que analisa o uso em produção, dados de monitorização e defeitos históricos para encontrar padrões e criar automaticamente testes na sua base de código que correspondam aos padrões da sua organização.
Implementar portas de qualidade em processos de promoção de código
Implemente portas de qualidade ao longo do seu processo de promoção de código através de testes. Promove o teu código através de ambientes mais baixos, como desenvolvimento e testes, antes de avançares para ambientes superiores como staging e produção. Defina limites claros de qualidade e metas para cada etapa e só promova alterações na produção depois de cumprirem esses critérios. Os requisitos do seu negócio determinam o foco dos seus portões de qualidade. Considere também os princípios fundamentais do Well-Architected Framework: Fiabilidade, Segurança e Eficiência de Desempenho.
Integre os fluxos de trabalho de aprovação nos seus portões de qualidade. Defina e automatize claramente os fluxos de trabalho de aprovação quando apropriado. Defina critérios de aceitação de qualidade na sua automação para que possa passar pelos seus portões de forma eficiente e segura.
Oportunidade de IA: Elimine gargalos durante as revisões encaminhando automaticamente as PRs para os especialistas na matéria (SMEs) certos. Comece pelo Copilot para avaliar o alcance e o impacto. Depois, adicione uma integração CI/CD com agente para avaliar alterações ao código, configurações e padrões de aprovação. Conceda acesso de privilégio mínimo apenas a artefactos exigidos, como repositórios, pipelines, dados de configuração, histórico de incidentes e registos de aprovação. Com este acesso, pode avaliar o impacto, atribuir revisores, identificar gargalos e recomendar aprovação automática ou revisão adicional. Para cargas de trabalho de alto valor, treine com base em dados históricos para prever o risco de implementação e os resultados de aprovação. Mantém os humanos informados e sê cauteloso com a aprovação automática.
Facilitação do Azure
O Azure DevOps é uma coleção de serviços que ajudam você a criar uma prática de desenvolvimento colaborativa, eficiente e consistente.
O Azure Pipelines fornece serviços de compilação e lançamento para dar suporte a CI/CD em seus aplicativos.
O GitHub Actions for Azure integra-se ao Azure para simplificar as implantações. Use as Ações do GitHub para automatizar processos de CI/CD. Você pode criar fluxos de trabalho que criam e testam cada solicitação pull para seu repositório ou implantar solicitações pull mescladas na produção.
Você pode usar o Terraform, o Bíceps e o Azure Resource Manager para implantações do IaC. Dependendo dos seus requisitos e da familiaridade da sua equipa com as ferramentas, poderá utilizar uma ou mais destas ferramentas para as suas implementações e gestão dos recursos.
Exemplo
Para obter um exemplo que mostra como usar o Azure Pipelines para criar um pipeline de CI/CD, consulte Arquitetura de linha de base do Azure Pipelines.
Ligações relacionadas
- Azure DevOps
- Azure Pipelines
- Padrão de selos de implantação
- Ações do GitHub para Azure
- Pilar de Eficiência de Desempenho
- Pilar da fiabilidade
- Pilar da segurança
Lista de verificação de Excelência da Operação
Consulte o conjunto completo de recomendações.