Share via


Recomendações para implementar a automação

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

OE:09 Automatizar todas as tarefas que não se beneficiam do insight e da adaptabilidade da intervenção humana, são altamente processuais e têm uma vida útil que gera um retorno sobre o investimento em automação. Quando possível, escolha software pronto para uso para automação versus implementações personalizadas. Trate toda a automação da mesma forma que os componentes de carga de trabalho e aplique os pilares do Well-Architected Framework ao seu design 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 obter 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 dá a elas mais tempo para trabalhar em outras melhorias. A automação é uma ferramenta poderosa em todos os aspectos 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 são simples, processuais e têm uma vida útil longa. A aplicação da automação não é uma tática tudo ou nada. Há 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.

Tarefas de destino para automatizar

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

  • Almeje vitórias fáceis. Concentre-se em tarefas altamente processuais e suscetíveis a erros humanos. Essas tarefas são altamente automatizadas. Eles são claramente definidos, são livres de variáveis que adicionam complexidade e são executadas 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 automatizadas incluem reinicialização de servidores, criação de contas e transferência de logs para um armazenamento de dados. Essas tarefas podem ocorrer em um agendamento, como uma resposta a um evento ou alerta de monitoramento, ou conforme necessário com base em fatores externos.

  • Procure maneiras de capacitar operadores e liberar seus SMEs. Você pode ter especialistas em sua organização que dependem de 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á habilitá-lo a criar um banco de dados vazio com segurança. Ou, como uma etapa intermediária, você pode automatizar as solicitações e as etapas para que o SME seja executado criando scripts a serem executados.

  • Concentre-se em seu retorno sobre o investimento. A automação de alto valor requer sobrecarga mínima de gerenciamento e adiciona um grau de eficiência demonstrativo. Se você puder salvar sua equipe de operações uma hora por dia automatizando entradas de banco de dados, por exemplo, dê a elas tempo para encontrar outras áreas para aprimoramento.

Áreas para implementar a automação

Adote a automação em todo o ciclo de vida da 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 CI/CD (integração contínua e entrega contínua), 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 criar relatórios.

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

  • Teste: 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 alertas: use ferramentas disponíveis em sua solução de monitoramento para registrar automaticamente recursos implantados recentemente e configurar ações disparadas por alerta para ajudar a acelerar a correção quando surgirem problemas.

  • Autorrecuperação: use alertas gerados pelo sistema de monitoramento para automatizar ações e recuperar trabalhos ou componentes 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ítica para garantir que todos os seus recursos executem a mesma configuração e que os requisitos de conformidade sejam impostos em 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: permite que os sistemas tome decisões de aprovação automaticamente com base em regras predefinidas para melhorar a eficiência dos fluxos de trabalho que têm portões de aprovação. Esse 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 altos pode ser arriscada. Concentre-se firmemente e teste suas aprovações automatizadas para garantir que critérios específicos sejam definidos para conceder aprovação.

  • Novo usuário e nova integração de 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 alertas: aproveite a funcionalidade de automação que sua plataforma de observabilidade fornece. Registre automaticamente novos dispositivos para monitorar e alertar sobre anomalias.

Escolher uma ferramenta de automação apropriada

Desenvolver sua própria automação internamente faz uso intensivo de tempo e pode introduzir uma carga de gerenciamento para sua equipe de desenvolvimento. Eles precisam manter uma ferramenta de automação interna como fazem com qualquer outro software interno. É recomendável que você use ferramentas prontos para uso sempre que elas puderem atender às suas necessidades. Entre ferramentas comerciais, código aberto e fornecidas pela plataforma de nuvem, há muitas opções disponíveis. É provável que você use uma variedade de ferramentas para criar a automação necessária. Conte com sua experiência interna para ajudar a orientar 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 fora da prateleira que elas podem usar sem uma curva de aprendizado alta. Reflita sobre as tarefas que você planeja resolver com automação e invista nas ferramentas que podem abordar especificamente essas tarefas. Não obtenha ferramentas que você geralmente prefere e considere as tarefas posteriormente.

Lembre-se de fatores que podem complicar suas operações ao criar sua automação, como bloqueio de versão e uso excessivo de plug-in. Plug-ins, como o Jenkins ou plug-ins do Azure DevOps, são uma ótima maneira de adicionar funcionalidade. Você deve adotar plug-ins quando ele 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 plug-ins. Evite também soluções que tenham dependências de versão da estrutura porque elas são um fardo para manter ao longo do tempo. Para ajudar a minimizar o risco desses tipos de problemas, padronizar sua seleção de ferramentas de automação e plug-ins e usar o controle do código-fonte para todos os projetos de automação.

Integrar a automação à carga de trabalho

Para qualquer ferramenta usada para criar 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, APIs e bibliotecas de CI/CD. Assim como a carga de trabalho compatível com a automação, você precisa gerenciar a automação de forma holística. Automação segura no mesmo grau que outros componentes de carga de trabalho. Monitore a automação e sujeita-a aos mesmos protocolos de teste que outros componentes de carga de trabalho.

Considerações

  • Às vezes, as eficiências que você obtém com a automação superam a carga de gerenciamento do desenvolvimento de sua própria solução se nenhuma solução pronto para uso atender às suas necessidades. Nesses casos, seja criterioso em seus esforços de desenvolvimento. Concentre-se estreitamente no desenvolvimento apenas do que você precisa para cobrir lacunas que você não pode resolver com soluções prontos para uso e minimizar 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 focadas apenas na execução de trabalhos discretos. Tente minimizar as dependências de outras ferramentas ou componentes.

  • Tenha cuidado com o uso de 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 operadores. Essa prática reduz as chances de erro humano, como um operador executando erroneamente o processo errado. Esta documentação também ajuda você a projetar automação para esse processo no futuro.

  • Ao usar uma abordagem manual e automatizada híbrida, você precisa ser especialmente cuidadoso. Se um script executar a maior parte de um processo, mas, em seguida, adiar para um humano para uma parte ou decisão específica, é importante que você dê à pessoa o contexto e as informações necessários 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 de IaC: você pode usar o Terraform, o Bicep e o Azure Resource Manager para implantações de IaC. Dependendo de seus requisitos e da familiaridade de sua equipe com as ferramentas, você pode usar uma ou mais dessas ferramentas para suas implantações e gerenciamento de recursos.

Azure Functions: 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 associações controlados por eventos que conectam suas funções a outros serviços. Você não precisa escrever código extra.

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

GitHub Actions vai além apenas de DevOps e permite executar 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: o PowerShell e o 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. Sozinhos, esses idiomas não oferecem uma plataforma para gerenciamento centralizado, controle de versão ou histórico de execução. Os idiomas também não têm um mecanismo nativo para responder a eventos como alertas controlados por monitoramento. Para fornecer esses recursos, você precisa de uma plataforma de automação.

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

  • Dispare runbooks sob demanda, em um agendamento ou por meio de um webhook.

  • Histórico de execução e registro em log.

  • Integrar um repositório de segredos.

  • Integrar o controle do código-fonte.

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

  • Supervisionar a conformidade em toda a frota de computadores.
  • Agendar atualizações recorrentes
  • 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 projeto. Esses modelos minimizam o tempo de instalação e maximizam a segurança, a conformidade e a eficiência do custo. Um ambiente de implantação é uma coleção de recursos do Azure implantados em assinaturas predefinidas. Os administradores de infraestrutura de desenvolvimento podem impor políticas de segurança corporativa e fornecer um conjunto coletado 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 de IaC e um arquivo manifest.yaml.

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

Aplicativos Lógicos do Azure e Microsoft Power Automate: ao criar DPA (automação de processos digitais) personalizada para lidar com tarefas de carga de trabalho, como fluxos de aprovação ou criação de integrações do ChatOps, considere usar aplicativos lógicos ou o Power Automate. Você pode construir fluxos de trabalho a partir de conectores e modelos internos. Os Aplicativos Lógicos e o Power Automate são criados com base na mesma tecnologia subjacente e são adequados para tarefas baseadas em gatilho ou baseadas em tempo.

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

Grupos de ações do Azure Monitor: para executar automaticamente operações de autorrecuperação quando um alerta for disparado, use grupos de ações 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 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.