Recomendações para implementar a automação

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

OE:09 Automatize todas as tarefas que não se beneficiam da percepção e 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 da carga de trabalho e aplique os pilares do Well-Architected Framework ao 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 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 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 diretas, processuais e com 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:

  • Apontar para vitórias fáceis. Concentre-se em tarefas altamente processuais e suscetíveis a erros humanos. Essas tarefas são altamente automatizáveis. Eles são claramente definidos, estão livres de variáveis que adicionam complexidade e são executados como parte de operações normais. Por outro lado, não priorize a automação de tarefas que exigem a escrita de scripts complexos para dar conta de 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 uma resposta a um evento ou alerta de monitoramento, ou conforme necessário com base em fatores externos.

  • Procure maneiras de capacitar os operadores e liberar suas PMEs. Você pode ter especialistas em sua organização que são confiáveis para escalonamentos que podem ser desnecessários. Por exemplo, seus 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 o SME executar criando scripts para execução.

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

Á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 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 lançamento 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).

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

  • Autocorreçã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 autocorreçã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 toda a 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 que possuem 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 e teste suas aprovações automatizadas para garantir que critérios específicos sejam definidos para conceder 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 alertas: 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 consome muito tempo e pode sobrecarregar 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 prontas para uso sempre que elas puderem atender às suas necessidades. Entre ferramentas comerciais, de código aberto e fornecidas pela plataforma em nuvem, há muitas opções disponíveis. É provável que você use uma variedade de ferramentas para criar a automação necessária. Confie em 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. Você pode inicialmente 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 abordar especificamente essas tarefas. Não adquira ferramentas que você geralmente prefere e considere as tarefas depois.

Esteja atento aos fatores que podem complicar suas operações ao criar sua automação, como bloqueio de versão e uso excessivo de plug-ins. Plug-ins, como plug-ins Jenkins ou Azure DevOps, são uma ótima maneira de adicionar funcionalidade. Você deve adotar plug-ins quando isso beneficiar seus objetivos 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. Além disso, evite soluções que tenham dependências de versão de estrutura porque elas são um fardo para manter ao longo do tempo. Para ajudar a minimizar o risco desses tipos de problemas, padronize sua seleção de ferramentas e plug-ins de automação 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ê usa 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 que a automação suporta, você precisa gerenciar a automação de forma holística. Automação segura no mesmo grau 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ê obtém com a automação superam a carga de gerenciamento de desenvolver sua própria solução se nenhuma solução pronta para uso atender às suas necessidades. Nesses casos, seja criterioso em seus esforços de desenvolvimento. Concentre-se estritamente no desenvolvimento apenas do que você precisa para cobrir lacunas que você não pode resolver 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 bem focadas na execução de 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 minuciosamente 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 por engano o processo errado. Esta documentação também ajuda você a projetar a automação para esse processo no futuro.

  • Quando você usa uma abordagem híbrida manual e automatizada, precisa ter um cuidado especial. Se um script executa a maior parte de um processo, mas depois se submete 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 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: 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 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 Azure: você pode usar o GitHub Actions para Azure para automatizar processos de CI/CD. O GitHub Actions se integra 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 implantar solicitações de pull mescladas na produção.

O GitHub Actions vai além do DevOps e permite que você execute fluxos de trabalho quando outros eventos ocorrerem no repositório. Por exemplo, você pode executar um fluxo de trabalho para adicionar automaticamente os rótulos apropriados quando alguém criar 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 essas linguagens 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. As linguagens também não têm 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 do PowerShell e do Python em ambientes locais e de nuvem, tanto no Azure quanto fora do 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.

  • Integre um repositório 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 do Linux em sua carga de trabalho. Você também pode usar o Gerenciador de Atualizações para fazer atualizações em tempo real ou agende-as em 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 recorrentes
  • Implante 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 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 implantados em assinaturas predefinidas. Os administradores de infraestrutura de desenvolvimento podem impor 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 de 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: 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 de ChatOps, considere usar Aplicativos Lógicos ou 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 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 escalar automaticamente usando APIs. Para obter mais informações, consulte Recomendações para criar uma estratégia de escalabilidade confiável.

Grupos de ações do Azure Monitor: para executar automaticamente operações de autocorreção quando um alerta é 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 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.