Share via


Recomendações para habilitar a automação

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

OE:10 Projete e implemente a automação antecipadamente para operações como problemas de ciclo de vida, inicialização e aplicação de proteção de governança e conformidade. Não tente readequar a automação mais tarde. Escolha os recursos de automação que sua plataforma fornece.

Este guia descreve as recomendações para projetar e implementar sua carga de trabalho para habilitar a automação. Crie sua carga de trabalho com automação em mente para garantir que tarefas rotineiras, como recursos de provisionamento, dimensionamento e implantações, sejam executadas de forma rápida e confiável. A automação simplifica as tarefas de manutenção e permite que você atualize, corrija e atualize seus sistemas com mais eficiência.

Principais estratégias de design

Design da carga de trabalho

Você pode projetar sua carga de trabalho para dar suporte à automação desde a fase de ideação até a fase de melhoria em andamento. Primeiro, considere como você deseja aplicar a automação em sua carga de trabalho para ajudar a garantir que você esteja colocando as peças necessárias no lugar. Pense em sua carga de trabalho em termos dos pilares do Well-Architected Framework para ajudar a planejar os tipos de automação que você usará. Você pode automatizar muitas funções de segurança, confiabilidade, desempenho, operações e controle de custo.

Crie com a automação em mente para minimizar a refatoração após a execução da carga de trabalho. Considere seus requisitos de carga de trabalho ao decidir quais ferramentas de automação usar. Pode haver ferramentas de automação fora da prateleira com as quais sua equipe já está familiarizada. A adoção dessas ferramentas pode facilitar o caminho para automatizar sua carga de trabalho, mas estar atento às limitações e à compatibilidade com sua plataforma de nuvem. Por exemplo, algumas ferramentas de automação podem se integrar bem às ferramentas da CLI do Azure, enquanto outras podem exigir interfaces REST. Sempre investigue as ferramentas que sua plataforma de nuvem fornece para garantir que elas sejam compatíveis e forneçam a funcionalidade necessária. Exemplos de maneiras que você pode planejar proativamente para automação incluem:

  • Implantação: automatize suas implantações de aplicativo e infraestrutura para garantir um padrão previsível. Planeje a implantação automatizada desenvolvendo padrões de implantação, treinando sua equipe nas ferramentas que você usará e implementando a infraestrutura necessária.

  • Validação: valide automaticamente os requisitos de conformidade em relação à carga de trabalho usando ferramentas de orquestração ou política. Identifique a ferramenta de validação apropriada para sua carga de trabalho e planeje implementar os sistemas necessários, por exemplo, servidores de orquestração.

  • Dimensionamento automático: use o dimensionamento automático em toda a infraestrutura para ajudá-lo a atingir seus requisitos de confiabilidade e desempenho. Você deve alocar espaço de endereço IP e sub-redes em sua carga de trabalho antecipadamente para considerar operações de dimensionamento, além de planejar a redundância e o crescimento natural.

Compensação: ao projetar sua carga de trabalho para habilitar a automação, considere o grau de controle que você deseja manter versus a eficiência que você pode obter por meio da automação. Em alguns casos, sua carga de trabalho pode não ser madura o suficiente para automatizar algumas funções ou talvez você precise de um nível de flexibilidade que a automação não forneça.

Considere também o conjunto de habilidades da sua equipe ao projetar sua carga de trabalho. Se um alto grau de automação exigir ferramentas que sua equipe não esteja equipada para dar suporte, talvez seja necessário usar um design menos abrangente como uma etapa intermediária.

Melhorias contínuas na carga de trabalho

Depois que sua carga de trabalho estiver em execução na nuvem, é importante priorizar a melhoria contínua. Observe sua carga de trabalho em ação, analise padrões de uso e examine o comportamento do cliente relacionado à carga de trabalho para identificar áreas em que você pode melhorar a automação. Procure maneiras de aprimorar a automação existente ou introduzir uma nova automação para melhorar a experiência do cliente. Por exemplo, você pode ter o dimensionamento automatizado habilitado, mas o aumento da carga de trabalho é de curta duração. Você pode integrar a automação scale-in para diminuir o uso da CPU quando a carga cair abaixo do limite.

As seções a seguir deste guia oferecem recomendações sobre áreas específicas de automação que podem ajudá-lo no design e na implementação da carga de trabalho.

Inicialização

Inicialização refere-se às atualizações de configuração para um recurso que deve ser feito após o provisionamento, mas antes que ele esteja disponível como parte do pool de cargas de trabalho. O inicialização geralmente é associado a VMs (máquinas virtuais), mas muitos outros recursos devem ser configurados como parte do processo de implantação, incluindo tecnologias de PaaS (plataforma como serviço) e tecnologias de hospedagem de contêineres como o AKS (Serviço de Kubernetes do Azure).

Sua plataforma de nuvem pode fornecer soluções de inicialização para você, que você deve usar sempre que possível. Por exemplo, você pode usar extensões de VM no Azure para fazer alterações de configuração predefinidas durante o processo de implantação e personalizar suas alterações de configuração injetando scripts do PowerShell.

Autenticação e autorização

Leve em conta a automação ao projetar sua estratégia de autenticação e autorização. É importante manter o nível mais alto de segurança nas cargas de trabalho de produção, mas isso pode afetar a automação. Por exemplo, o uso da autenticação biométrica ou multifator adiciona complexidade que deve ser contabilizado em seu design de automação. Use contas seguras não humanas para autenticação automatizada, como identidades gerenciadas, identidades de carga de trabalho ou certificados. Verifique se você incluiu o gerenciamento de segredos e chaves em sua automação para aumentar a segurança de autenticação.

Projetar variabilidade em sua carga de trabalho

Evite implantar desnecessariamente uma nova infraestrutura quando pequenas alterações forem feitas criando flexibilidade em seus artefatos. Por exemplo, em vez de reimplantar sua infraestrutura quando um sinalizador de recurso é alterado, você pode usar parâmetros definidos para atualizar componentes como configurações de aplicativo. Defina e documente claramente como a variabilidade é usada para evitar o uso excessivo e o descompasso de configuração.

Criar um plano de controle

Um plano de controle é o sistema de back-end ou conjunto de ferramentas que você usa para gerenciar o aplicativo e suas dependências por meio de uma interface unificada. Crie seu plano de controle como uma interface REST, CLI ou webhook para dar suporte à automação por ferramentas externas.

Exponha operações de manutenção por meio do plano de controle que permitem coordenar componentes de carga de trabalho, por exemplo, backup e restauração ordenados, inicialização, configuração, importação/exportação e operações de envio em lote. Tenha cuidado para escolher o nível certo de granularidade ao decidir as operações a serem expostas por meio do plano de controle.

Monitorar e registrar em log

Desenvolva uma estratégia de monitoramento para capturar métricas que conduzem o tipo de automação necessária. Use log estruturado e métricas personalizadas para fornecer as informações exigidas pela automação em um formato fácil de reconhecer com ferramentas de automação. As métricas que você captura devem ser emparelhadas com limites definidos no sistema de monitoramento que disparam alertas e ações automatizadas, como notificações ou mecanismos de autorrecuperação, quando apropriado. Para obter mais informações, consulte Recomendações para autorrecuperação e autopreservação.

Ciclo de vida do usuário

Crie seu aplicativo e infraestrutura para permitir a integração e a remoção automatizadas de usuários, para indivíduos ou clientes multilocatários. Planeje atualizações automatizadas de banco de dados por meio de scripts, provisionamento e desprovisionamento de infraestrutura e gerenciamento de credenciais e segredos.

Orquestração e uso de política

Como parte do gerenciamento contínuo de carga de trabalho, você pode automatizar Desired State Configuration (DSC) em seus recursos para ajudar a garantir que eles atendam aos requisitos de conformidade e de negócios. A automação de DSC ajuda a garantir que o descompasso de configuração seja capturado e corrigido rapidamente. Você pode automatizar o DSC usando ferramentas de orquestração ou ferramentas de gerenciamento de políticas. Pense em ferramentas de orquestração, como serviços do Azure DevOps ou Jenkins, como mecanismos baseados em push. As ferramentas de orquestração permitem que as atualizações de configuração sejam enviadas por push por meio de um evento de fluxo de trabalho, como uma implantação manual ou automatizada. Essas atualizações são executadas como parte de uma sequência de tarefas definida no script de implantação. As ferramentas de gerenciamento de políticas usam mecanismos baseados em pull, o que significa que um sistema é executado no nível fundamental da carga de trabalho que pesquisa periodicamente a carga de trabalho para marcar seu estado em relação ao DSC definido. Se a sondagem identificar um desalinhamento ou descompasso de configuração, a ferramenta tomará medidas corretivas. Considere os seguintes fatores ao decidir entre as ferramentas de gerenciamento de políticas e orquestração:

  • As ferramentas de orquestração não têm recursos internos para sondar proativamente sua carga de trabalho quanto ao descompasso de configuração. As ferramentas de orquestração devem ser integradas ao pipeline de CI/CD (integração contínua e entrega contínua) para manter um padrão para implantação e gerenciamento de IaC (infraestrutura como código). Uma vantagem de usar ferramentas de orquestração é que os recursos são sempre totalmente configurados quando implantados.

  • As ferramentas de gerenciamento de políticas permitem definir políticas que afetam um ou mais grupos de recursos. Essas políticas são impostas quando o recurso faz check-in com o sistema de gerenciamento de políticas. Uma vantagem de usar o gerenciamento de políticas é que esses sistemas não são controlados por código, portanto, eles podem ser mais fáceis para os operadores em sua equipe adotarem.

Ao decidir entre ferramentas de orquestração ou política, considere se as atualizações de configuração que você está planejando fazer em novos recursos devem ser feitas no momento da implantação. Considere também se a definição de atualizações no código se ajusta às suas práticas operacionais e quantos tipos de recursos você planeja implantar. Se houver muitas configurações diferentes entre tipos de recursos, as ferramentas de política poderão ser uma maneira mais fácil de gerenciar atualizações.

Facilitação do Azure

Gerenciamento de política

Azure Policy: usando Azure Policy, você pode impor padrões e avaliar a conformidade em escala. Azure Policy fornece uma exibição agregada para avaliar o estado geral do ambiente de carga de trabalho no dashboard de conformidade. Ou você pode usar Azure Policy para avaliar cada recurso e política em um nível granular. Você também pode usar Azure Policy para corrigir novos recursos automaticamente ou corrigir recursos existentes em massa.

Compensação: descarregar a automação do pipeline de CI/CD para ferramentas ou serviços de plataforma, como Azure Policy, pode simplificar seu pipeline, mas tem desvantagens como a carga de gerenciamento adicional do uso de vários sistemas. Por exemplo, falhas de execução em um serviço de plataforma não serão capturadas em seus logs de pipeline e terão que ser alimentadas em sua plataforma de observabilidade de forma inteligente para que as partes apropriadas sejam notificadas.

Inicializar automação

Extensões de Máquinas Virtuais do Azure: Máquinas Virtuais extensões são pequenos pacotes que executam a configuração pós-implantação e a automação em VMs. Várias extensões estão disponíveis para diferentes tarefas de configuração, como executar scripts, configurar soluções antimalware e configurar soluções de registro em log. Instale e execute essas extensões em VMs usando um modelo de Resource Manager do Azure, a CLI do Azure, Azure PowerShell módulo ou o portal do Azure. Cada VM tem um agente de VM instalado que gerencia o ciclo de vida da extensão.

Normalmente, as extensões de VM usam uma extensão de script personalizada para instalar software, executar comandos e executar configurações em uma VM ou no Azure Conjuntos de Dimensionamento de Máquinas Virtuais. Você pode definir essas extensões para serem executadas como parte das implantações de IaC para que elas sejam executadas em novas VMs usando o Agente de VM do Azure. As extensões também podem ser executadas fora de uma implantação do Azure usando a CLI do Azure, o módulo do PowerShell ou o portal do Azure.

Cloud-init: A cloud-init é uma ferramenta do setor para configurar VMs linux na primeira inicialização. Assim como as extensões de script personalizado do Azure, o cloud-init permite instalar pacotes e executar comandos em VMs do Linux. Você pode usar o cloud-init para instalação de software, configuração do sistema e preparo de conteúdo. O Azure inclui muitas imagens de VM habilitadas para init na nuvem em distribuições conhecidas do Linux. Para obter uma lista completa, confira Suporte de inicialização de nuvem para VMs no Azure.

Recurso de script de implantação do Azure: Ao implantar usando o Azure, talvez seja necessário executar código arbitrário para inicializar o gerenciamento de contas de usuário, pods do Kubernetes ou consultar dados de um sistema que não seja do Azure. Como nenhuma dessas operações é acessível por meio do plano de controle do Azure, um mecanismo separado é necessário. Para obter mais informações, consulte Microsoft.Resources deploymentScripts. Como qualquer outro recurso do Azure, o recurso de script de implantação:

  • Pode ser usado em um modelo de Resource Manager do Azure.

  • Contém dependências de modelo de Resource Manager do Azure em outros recursos.

  • Consome entrada e produz saída.

  • Usa uma identidade gerenciada atribuída pelo usuário para autenticação.

Quando implantado, o script de implantação executa comandos e scripts do PowerShell ou da CLI do Azure. Execuções de script e registro em log podem ser observados no portal do Azure ou com a CLI do Azure e o módulo do PowerShell. Você pode personalizar as variáveis para o ambiente de execução, as opções de tempo limite e o gerenciamento de recursos após uma falha de script.

Clusters aks de inicialização com GitOps: você pode inicializar um cluster AKS recém-provisionado usando o GitOps e a extensão de cluster Flux v2 declarando suas configurações em repositórios do GitHub. Como os arquivos de cluster do AKS são armazenados em um repositório GitHub, eles são com controle de versão e as alterações entre as versões são facilmente controladas. Os controladores do Kubernetes são executados nos clusters e reconciliam continuamente o estado do cluster com o estado desejado declarado no repositório Git, extraindo os arquivos do repositório. Para obter mais informações, consulte Arquitetura de referência de linha de base do AKS.

Gerenciamento de configuração

Automação do Azure State Configuration é uma ferramenta de gerenciamento de DSC gerenciada pelo recurso de configuração de convidado Azure Policy que você pode usar para gravar, gerenciar e compilar configurações de DSC do PowerShell para nós em qualquer datacenter local ou na nuvem. Você também pode usar essa ferramenta para importar recursos de DSC e atribuir configurações a nós de destino.

Configuração de Aplicativos do Azure é um serviço que você pode usar para gerenciar centralmente as configurações do aplicativo e os sinalizadores de recursos. Ele funciona com o Azure Key Vault para que você possa gerenciar com segurança uma ampla variedade de configurações de aplicativo em seu ambiente.

Controle de alterações e inventário

O controle de alterações e o inventário usando o Agente de Monitoramento do Azure rastreia o descompasso de configuração do sistema operacional em máquinas virtuais. Isso automatiza a detecção de descompasso, os serviços em execução de inventário e os pacotes instalados nas máquinas virtuais em sua carga de trabalho. Os itens rastreados pelo controle de alterações e pelo inventário incluem:

  • Software Windows e Linux instalados
  • Principais arquivos do Windows e do Linux
  • Chave do registro do Windows
  • Serviços Windows e daemons do Linux

Lista de verificação de Excelência Operacional

Consulte o conjunto completo de recomendações.