Partilhar via


Recomendações para a implementação da automação

Aplica-se a esta recomendação de lista de verificação de Excelência Operacional da Estrutura Bem Arquitetada:

OE:09 Automatize todas as tarefas que não se beneficiam da perceção e adaptabilidade da intervenção humana, são altamente processuais e têm um prazo de validade que gera retorno sobre o investimento em automação. Sempre que possível, escolha software pronto para automação versus implementações personalizadas. Trate toda a automação da mesma forma que os componentes da carga de trabalho e aplique os pilares do Well-Architected Framework ao seu projeto e implementação.

Este guia descreve as recomendações para adotar a automação em sua carga de trabalho. Você pode automatizar tarefas repetitivas e propensas a erros humanos para ajudar suas equipes a ganhar eficiência e aderir aos padrões. Automatize tarefas para tornar sua carga de trabalho simplificada e consistente. A automação permite que suas equipes de operações e engenharia sejam mais eficientes, pois lhes dá mais tempo para trabalhar em outras melhorias. A automação é uma ferramenta poderosa em todos os aspetos do gerenciamento de carga de trabalho. Implemente cuidadosamente a automação para capacitar sua organização.

Principais estratégias de design

À medida que você desenvolve sua carga de trabalho, procure oportunidades para aproveitar a automação para reduzir a carga de gerenciamento e minimizar o erro humano. Avalie essas oportunidades e considere o valor que elas trazem para sua organização. Para maximizar o valor do seu investimento em automação, priorize tarefas que sejam simples, processuais e tenham uma longa vida útil. Aplicar automação não é uma tática de tudo ou nada. Existem fluxos de trabalho que podem ter operações que exigem intervenção humana, como pontos de tomada de decisão. Esses fluxos de trabalho ainda podem se beneficiar da automação para executar outras tarefas.

Avalie tarefas para automatizar

Considere as seguintes recomendações para garantir que você priorize as tarefas que mais se beneficiam da automação:

  • Visar vitórias fáceis. Concentre-se em tarefas altamente processuais e suscetíveis a erros humanos. Estas tarefas são altamente automatizáveis. Eles são claramente definidos, estão livres de variáveis que adicionam complexidade e são realizados como parte de operações normais. Por outro lado, não priorize a automatização de tarefas que exigem a escrita de scripts complexos para levar em conta fenômenos variáveis ou tarefas que raramente ocorrem.

    Exemplos de tarefas altamente automatizáveis incluem a reinicialização de servidores, a criação de contas e a transferência de logs para um armazenamento de dados. Essas tarefas podem ocorrer em um cronograma, como resposta a um evento ou alerta de monitoramento, ou conforme necessário com base em fatores externos.

  • Procure formas de capacitar os operadores e libertar as suas PME. Você pode ter especialistas em sua organização que são confiáveis para escalonamentos que podem ser desnecessários. Por exemplo, os administradores de banco de dados podem receber rotineiramente solicitações para criar novos bancos de dados quando você integra novos clientes à sua solução multilocatário. Se você criar um portal de autoatendimento para sua equipe de suporte técnico, poderá permitir que eles criem com segurança um banco de dados vazio. Ou, como uma etapa intermediária, você pode automatizar as solicitações e as etapas para a PME executar criando scripts para executar.

  • Concentre-se no retorno do seu investimento. A automação de alto valor requer despesas gerais de gerenciamento mínimas e adiciona um grau demonstrável de eficiência. Se você puder economizar sua equipe de operações uma hora por dia automatizando entradas de banco de dados, por exemplo, você dará a eles tempo para encontrar outras áreas para melhorias.

Áreas a implementar automação

Adote a automação em todo o ciclo de vida da sua carga de trabalho, desde o desenvolvimento até o gerenciamento diário. Use a lista de exemplos a seguir para ajudá-lo a considerar as amplas áreas do ciclo de vida da carga de trabalho que podem se beneficiar da automação. Você pode automatizar:

  • Definição, execução e gerenciamento de pipeline: use ferramentas de integração contínua e entrega contínua (CI/CD), como o Azure DevOps e outras ferramentas de DevOps, para definir automaticamente um pipeline e como ele é executado. Essas ferramentas podem ajudá-lo a automatizar tarefas de CI/CD ou outras tarefas, como a criação de relatórios.

  • Implantações: use ferramentas como modelos do Azure Resource Manager, Bicep, Terraform e Ansible para automatizar seus processos de desenvolvimento e liberação de carga de trabalho. Implante e atualize sua infraestrutura com as mesmas plataformas de automação usando uma abordagem de infraestrutura como código (IaC).

  • Testes: Muitas ferramentas estão disponíveis para automatizar seus processos de teste. Essas ferramentas podem aliviar uma carga significativa de sua equipe de garantia de qualidade e garantir que os testes sejam padronizados e confiáveis.

  • Dimensionamento: use a funcionalidade fornecida pela plataforma e outras ferramentas, como ferramentas de orquestração, para dimensionar automaticamente sua infraestrutura quando a carga aumentar ou diminuir.

  • Monitoramento e alerta: use as ferramentas disponíveis em sua solução de monitoramento para registrar automaticamente recursos recém-implantados e configurar ações acionadas por alertas para ajudar a acelerar a correção quando surgirem problemas.

  • Autorrecuperação: use alertas gerados pelo seu sistema de monitoramento para automatizar ações e recuperar componentes ou trabalhos com defeito. Para obter mais informações, consulte Recomendações para autorrecuperação e autopreservação.

  • Gerenciamento de configuração: use ferramentas de orquestração e políticas para garantir que todos os seus recursos executem a mesma configuração e que os requisitos de conformidade sejam aplicados em toda a sua carga de trabalho.

  • Outras tarefas administrativas: use scripts para automatizar tarefas repetitivas, como atualizar registros de banco de dados ou registros DNS.

  • Aprovações: permita que os sistemas tomem decisões de aprovação automaticamente com base em regras predefinidas para melhorar a eficiência dos fluxos de trabalho com portas de aprovação. Este método incentiva o uso de formulários e modelos padronizados, o que aumenta a eficiência dos processos. A aprovação automática em ambientes elevados pode ser arriscada. Concentre-se e teste suas aprovações automatizadas para garantir que critérios específicos sejam definidos para conceder a aprovação.

  • Integração de novos usuários e novos funcionários: você pode automatizar muitas tarefas associadas à integração de novos usuários de aplicativos ou novos funcionários, como atualizações de banco de dados e criação de credenciais.

  • Monitoramento e alerta: aproveite a funcionalidade de automação que sua plataforma de observabilidade oferece. Registre automaticamente novos dispositivos para monitorar e alertar sobre anomalias.

Escolha uma ferramenta de automação apropriada

Desenvolver sua própria automação internamente é demorado e pode introduzir carga de gerenciamento para sua equipe de desenvolvimento. Eles precisam manter uma ferramenta de automação interna como fazem com qualquer outro software interno. Recomenda-se o uso de ferramentas prontas sempre que elas possam atender às suas necessidades. Entre ferramentas comerciais, de código aberto e de plataforma em nuvem, há muitas opções disponíveis. É provável que você use uma variedade de ferramentas para criar a automação de que precisa. Confie na sua experiência interna para ajudar a orientar as suas decisões ao avaliar ferramentas. Sua equipe pode estar mais familiarizada com determinadas linguagens e estruturas de desenvolvimento. Inicialmente, você pode se concentrar em ferramentas prontas para uso que eles podem usar sem uma alta curva de aprendizado. Reflita sobre as tarefas que você planeja abordar com a automação e invista nas ferramentas que podem lidar especificamente com essas tarefas. Não adquira ferramentas que geralmente prefere e considere as tarefas depois.

Esteja atento aos fatores que podem complicar suas operações ao criar sua automação, como o bloqueio de versão e o uso excessivo de plugins. Plug-ins, como Jenkins ou plug-ins de DevOps do Azure, são uma ótima maneira de adicionar funcionalidade. Você deve adotar plugins quando isso beneficiar suas metas de automação. Mas quando você usa vários plug-ins para executar uma única tarefa, isso pode dificultar as atualizações de automação e a solução de problemas. Seja criterioso no uso de plugins. Evite também soluções que tenham dependências de versão de estrutura porque elas são um fardo a ser mantido ao longo do tempo. Para ajudar a minimizar o risco desses tipos de problemas, padronize sua seleção de ferramentas de automação e plug-ins e use o controle do código-fonte para todos os projetos de automação.

Integre a automação à sua carga de trabalho

Para qualquer ferramenta que você use para construir sua automação, torne-a facilmente acessível e gerenciável para seus operadores. Forneça interfaces claras e fáceis de usar para sua equipe de carga de trabalho. Você pode fornecer acesso a pipelines de CI/CD, APIs e bibliotecas. Como a carga de trabalho que a automação suporta, você precisa gerenciar a automação de forma holística. Proteja a automação na mesma medida que outros componentes da carga de trabalho. Monitore a automação e submeta-a aos mesmos protocolos de teste que outros componentes da carga de trabalho.

Considerações

  • Às vezes, as eficiências que você ganha com a automação superam a carga de gerenciamento do desenvolvimento de sua própria solução se nenhuma solução pronta para uso atender às suas necessidades. Nestes casos, seja criterioso nos seus esforços de desenvolvimento. Concentre-se estritamente em desenvolver apenas o que você precisa para cobrir lacunas que não podem ser resolvidas com soluções prontas para uso e minimize complexidades, como dependências.

  • A automação complexa que requer um alto grau de manutenção pode ser difícil para as equipes de operações gerenciarem e solucionarem problemas. Mantenha as tarefas automatizadas firmemente focadas em executar apenas trabalhos discretos. Tente minimizar as dependências de outras ferramentas ou componentes.

  • Seja cuidadoso ao usar processos manuais. Se você decidir não automatizar uma operação, documente completamente o processo manual criando uma lista de verificação passo a passo para os operadores. Essa prática reduz as chances de erro humano, como um operador executando erroneamente o processo errado. Esta documentação também ajuda a projetar a automação para esse processo no futuro.

  • Quando você usa uma abordagem manual e automatizada híbrida, você precisa ser especialmente cuidadoso. Se um script executa a maior parte de um processo, mas depois defere a um humano para uma parte ou decisão específica, é importante que você dê à pessoa o contexto e as informações necessárias para tomar uma decisão informada.

Facilitação do Azure

O Azure oferece muitas ferramentas para ajudá-lo a automatizar tarefas para sua carga de trabalho.

Ferramentas IaC: Você pode usar Terraform, Bíceps e Azure Resource Manager para implantações 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 de recursos.

Azure Functions: o Azure Functions é uma ferramenta sem servidor que você pode usar para automatizar tarefas usando sua linguagem de desenvolvimento preferida. O Functions fornece um conjunto abrangente de gatilhos e ligações orientados a eventos que conectam suas funções a outros serviços. Você não precisa escrever código extra.

Ações do GitHub para Azure: você pode usar o GitHub Actions for Azure para automatizar processos de CI/CD. O GitHub Actions integra-se ao Azure para simplificar as implantações. Você pode criar fluxos de trabalho que criam e testam cada solicitação pull em seu repositório ou implantar solicitações pull mescladas na produção.

O GitHub Actions vai além do DevOps e permite que você execute fluxos de trabalho quando outros eventos ocorrem em seu repositório. Por exemplo, você pode executar um fluxo de trabalho para adicionar automaticamente rótulos apropriados quando alguém cria um novo problema em seu repositório.

Automação do Azure: PowerShell e Python são linguagens de programação populares para automatizar tarefas operacionais. Use esses idiomas para executar operações como reiniciar serviços, transferir logs entre armazenamentos de dados e dimensionar a infraestrutura para atender à demanda. Você pode expressar essas operações em código e executá-las sob demanda. Sozinhas, essas linguagens não oferecem uma plataforma para gerenciamento centralizado, controle de versão ou histórico de execução. Os idiomas também carecem de um mecanismo nativo para responder a eventos como alertas orientados por monitoramento. Para fornecer esses recursos, você precisa de uma plataforma de automação.

A automação fornece uma plataforma hospedada no Azure para hospedar e executar código PowerShell e Python em ambientes locais e na nuvem, tanto do Azure quanto de outros países. O código PowerShell e Python é armazenado em um runbook de automação. Use a automação para:

  • Acione runbooks sob demanda, em um cronograma ou por meio de um webhook.

  • Execute o histórico e o registro.

  • Integre uma loja de segredos.

  • Integre o controle do código-fonte.

Azure Update Manager: o Update Manager é um serviço unificado para ajudar a gerenciar e controlar atualizações para máquinas virtuais. Você pode monitorar a conformidade de atualizações do Windows e Linux em toda a sua carga de trabalho. Também pode utilizar o Azure Update Manager para fazer atualizações em tempo real ou agendá-las dentro de uma janela de manutenção definida. Use o Update Manager para:

  • Supervisione a conformidade em toda a sua frota de máquinas.
  • Agendar atualizações periódicas
  • Implantar atualizações críticas

Ambientes de Implantação do Azure: os Ambientes de Implantação permitem que as equipes de desenvolvimento criem rapidamente uma infraestrutura de aplicativo consistente usando modelos baseados em projetos. Esses modelos minimizam o tempo de configuração e maximizam a segurança, a conformidade e a eficiência de custos. Um ambiente de implantação é uma coleção de recursos do Azure que são implantados em assinaturas predefinidas. Os administradores de infraestrutura de desenvolvimento podem aplicar políticas de segurança corporativa e fornecer um conjunto selecionado de modelos de IAC predefinidos.

Os administradores de infraestrutura de desenvolvimento definem ambientes de implantação como itens de catálogo. Os itens de catálogo são hospedados em um repositório GitHub ou Azure DevOps, chamado de catálogo. Um item de catálogo consiste em um modelo IaC e um arquivo manifest.yaml.

Você pode criar scripts para a criação de ambientes de implantação e gerenciar programaticamente os ambientes.

Aplicativos Lógicos do Azure e Microsoft Power Automate: Quando você cria DPA (automação de processo digital) personalizada para lidar com tarefas de carga de trabalho, como fluxos de aprovação ou criação de integrações ChatOps, considere usar Aplicativos Lógicos ou Power Automate. Você pode construir fluxos de trabalho a partir de conectores e modelos internos. As Aplicações Lógicas e o Power Automate baseiam-se na mesma tecnologia subjacente e são adequados para tarefas baseadas em gatilhos ou no tempo.

Dimensionamento automático: muitas tecnologias do Azure têm recursos internos de dimensionamento automático. Você também pode programar outros serviços para dimensionar automaticamente usando APIs. Para obter mais informações, consulte Recomendações para projetar uma estratégia de dimensionamento confiável.

Grupos de ação do Azure Monitor: para executar automaticamente operações de autorrecuperação quando um alerta é acionado, use os grupos de ação do Azure Monitor. Você pode definir essas operações usando um runbook, uma função do Azure ou um webhook.

Exemplo

Para obter um exemplo de como usar a Automação em conjunto com outros serviços do Azure, consulte Automação de operações usando a Grade de Eventos do Azure. Este exemplo usa Aplicativos Lógicos e Grade de Eventos para automatizar tarefas operacionais.

Lista de verificação de Excelência Operacional

Consulte o conjunto completo de recomendações.