Recomendações para implementar a automatização

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

OE:09 Automatizar todas as tarefas que não beneficiam da perspicácia e da adaptabilidade da intervenção humana, são altamente processuais e têm um prazo de validade que gera um retorno sobre o investimento em automatização. Sempre que possível, selecione software off-the-shelf para automatização versus implementações personalizadas. Trate toda a automatização da mesma forma que os componentes da carga de trabalho e aplique os pilares do Well-Architected Framework à sua conceção e implementação.

Este guia descreve as recomendações para adotar a automatização na sua carga de trabalho. Pode automatizar tarefas repetitivas e propensas a erros humanos para ajudar as suas equipas a obter eficiência e a cumprir os padrões. Automatize as tarefas para tornar a carga de trabalho simplificada e consistente. A automatização permite que as suas equipas de operações e engenharia sejam mais eficientes porque lhes dá mais tempo para trabalharem noutras melhorias. A automatização é uma ferramenta avançada em todos os aspetos da gestão de cargas de trabalho. Implemente cuidadosamente a automatização para capacitar a sua organização.

Principais estratégias de design

À medida que desenvolve a carga de trabalho, procure oportunidades para tirar partido da automatização para reduzir os encargos de gestão e minimizar o erro humano. Avalie estas oportunidades e considere o valor que trazem para a sua organização. Para maximizar o valor do seu investimento na automatização, priorize tarefas simples, processuais e tenham um longo prazo de validade. A aplicação da automatização não é uma táctica de tudo ou nada. Existem fluxos de trabalho que podem ter operações que requerem intervenção humana, como pontos de tomada de decisão. Estes fluxos de trabalho ainda podem beneficiar da automatização para realizar outras tarefas.

Tarefas de destino para automatizar

Considere as seguintes recomendações para garantir que atribui prioridades às tarefas que mais beneficiam da automatização:

  • Aponte para vitórias fáceis. Concentre-se em tarefas altamente processuais e suscetíveis a erros humanos. Estas tarefas são altamente automatizáveis. Estão claramente definidos, estão livres de variáveis que adicionam complexidade e são executadas como parte de operações normais. Por outro lado, não dê prioridade à automatização de tarefas que exijam a escrita de scripts complexos para ter em conta os fenómenos variáveis ou as tarefas que raramente ocorrem.

    Exemplos de tarefas altamente automatizadas incluem reiniciar servidores, criar contas e transferir registos para um arquivo de dados. Estas tarefas podem ocorrer numa agenda, como resposta a um evento ou alerta de monitorização, ou conforme necessário com base em fatores externos.

  • Procure formas de capacitar os operadores e libertar os SMEs. Poderá ter especialistas na sua organização que dependem de escalamentos que podem ser desnecessários. Por exemplo, os administradores da base de dados podem receber pedidos para criar novas bases de dados quando integra novos clientes na sua solução multi-inquilino. Se criar um portal self-service para a sua equipa de suporte técnico, pode permitir que criem uma base de dados vazia em segurança. Em alternativa, como um passo intermédio, pode automatizar os pedidos e os passos para que o SME efetue através da criação de scripts para execução.

  • Concentre-se no seu retorno sobre o investimento. A automatização de alto valor requer uma sobrecarga de gestão mínima e adiciona um grau de eficiência demonstrativo. Se conseguir guardar a equipa de operações uma hora por dia ao automatizar as entradas da base de dados, por exemplo, dá-lhes tempo para encontrar outras áreas para melhorar.

Áreas para implementar a automatização

Adote a automatização ao longo de todo o ciclo de vida da carga de trabalho, desde o desenvolvimento até à gestão diária. Utilize a seguinte lista de exemplos para o ajudar a considerar as áreas abrangentes do ciclo de vida da carga de trabalho que podem beneficiar da automatização. Pode automatizar:

  • Definição, execução e gestão de pipelines: utilize 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 é executado. Estas ferramentas podem ajudá-lo a automatizar tarefas ci/CD ou outras tarefas, como criar relatórios.

  • Implementações: utilize ferramentas como modelos do Azure Resource Manager, Bicep, Terraform e Ansible para automatizar os processos de desenvolvimento e lançamento da carga de trabalho. Implemente e atualize a sua infraestrutura com as mesmas plataformas de automatização com uma abordagem de infraestrutura como código (IaC).

  • Teste: estão disponíveis muitas ferramentas para automatizar os seus processos de teste. Estas ferramentas podem aliviar um fardo significativo da sua equipa de garantia de qualidade e garantir que os testes são padronizados e fiáveis.

  • Dimensionamento: utilize funcionalidades fornecidas pela plataforma e outras ferramentas, como ferramentas de orquestração, para dimensionar automaticamente a infraestrutura quando a carga aumenta ou diminui.

  • Monitorização e alertas: utilize ferramentas disponíveis na sua solução de monitorização para inscrever automaticamente recursos recentemente implementados e configurar ações acionadas por alertas para ajudar a acelerar a remediação quando surgem problemas.

  • Recuperação automática: utilize alertas gerados pelo sistema de monitorização para automatizar ações e recuperar componentes ou tarefas com mau funcionamento. Para obter mais informações, veja Recomendações para auto-recuperação e auto-preservação.

  • Gestão de configuração: utilize ferramentas de orquestração e política para garantir que todos os seus recursos executam a mesma configuração e que os requisitos de conformidade são aplicados na carga de trabalho.

  • Outras tarefas administrativas: utilize scripts para automatizar tarefas repetitivas, como atualizar registos de bases de dados ou registos DNS.

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

  • Integração de novos utilizadores e novos funcionários: pode automatizar muitas tarefas associadas à inclusão de novos utilizadores de aplicações ou novos funcionários, como atualizações de bases de dados e criação de credenciais.

  • Monitorização e alertas: tire partido da funcionalidade de automatização fornecida pela plataforma de observabilidade. Inscreva automaticamente novos dispositivos para monitorizar e alertar sobre anomalias.

Escolher uma ferramenta de automatização adequada

Desenvolver a sua própria automatização interna é um período de tempo intensivo e pode introduzir encargos de gestão para a sua equipa de desenvolvimento. Precisam de manter uma ferramenta de automatização interna, como fazem com qualquer outro software interno. Recomenda-se que utilize ferramentas fora da prateleira sempre que estas possam satisfazer as suas necessidades. Entre ferramentas comerciais, de open source e de plataformas na cloud, existem muitas opções disponíveis. É provável que utilize uma variedade de ferramentas para criar a automatização de que precisa. Confie nos seus conhecimentos internos para ajudar a orientar as suas decisões ao avaliar as ferramentas. A sua equipa poderá estar mais familiarizada com determinadas linguagens e arquiteturas de desenvolvimento. Inicialmente, pode concentrar-se em ferramentas fora da prateleira que podem utilizar sem uma curva de aprendizagem elevada. Reflita sobre as tarefas que planeia abordar com a automatização e invista nas ferramentas que podem abordar especificamente essas tarefas. Não procure ferramentas que geralmente prefere e, em seguida, considere as tarefas posteriormente.

Tenha em atenção os fatores que podem complicar as suas operações ao criar a automatização, como o bloqueio de versões e o uso excessivo do plug-in. Os plug-ins, como o Jenkins ou os plug-ins do Azure DevOps, são uma excelente forma de adicionar funcionalidades. Deve adotar plug-ins quando beneficiar os seus objetivos de automatização. No entanto, quando utiliza vários plug-ins para realizar uma única tarefa, pode dificultar as atualizações de automatização e a resolução de problemas. Seja criterioso na sua utilização de plug-ins. Evite também soluções que tenham dependências de versão de arquitetura, uma vez que são um fardo a manter ao longo do tempo. Para ajudar a minimizar o risco destes tipos de problemas, uniformize a sua seleção de ferramentas de automatização e plug-ins e utilize o controlo de origem para todos os projetos de automatização.

Integrar a automatização na carga de trabalho

Para qualquer ferramenta que utilize para criar a sua automatização, torne-a facilmente acessível e gerível para os seus operadores. Forneça interfaces claras e fáceis de utilizar para a sua equipa de carga de trabalho. Pode fornecer acesso a pipelines de CI/CD, APIs e bibliotecas. Tal como a carga de trabalho suportada pela automatização, tem de gerir a automatização de forma holística. Proteger a automatização ao mesmo nível que outros componentes de carga de trabalho. Monitorize a automatização e submiste-a aos mesmos protocolos de teste que outros componentes da carga de trabalho.

Considerações

  • Por vezes, as eficiências obtidas com a automatização superam o fardo de gestão de desenvolver a sua própria solução se nenhuma solução fora da prateleira corresponder aos seus requisitos. Nestes casos, seja criterioso nos seus esforços de desenvolvimento. Concentre-se estreitamente em desenvolver apenas aquilo de que precisa para cobrir lacunas que não pode resolver com soluções off-the-shelf e minimizar complexidades como dependências.

  • A automatização complexa que requer um elevado grau de manutenção pode ser difícil para as equipas de operações gerirem e resolverem problemas. Mantenha as tarefas automatizadas focadas apenas na realização de tarefas discretas. Tente minimizar as dependências de outras ferramentas ou componentes.

  • Tenha em atenção a utilização de processos manuais. Se decidir não automatizar uma operação, documente cuidadosamente o processo manual ao criar uma lista de verificação passo a passo para operadores. Esta prática reduz as hipóteses de erro humano, como um operador que executa erroneamente o processo errado. Esta documentação também o ajuda a conceber a automatização para esse processo no futuro.

  • Quando utiliza uma abordagem manual e automatizada híbrida, tem de ter especial cuidado. Se um script executar a maior parte de um processo mas, em seguida, diferir para um humano para uma parte ou decisão específica, é importante que 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 o ajudar a automatizar tarefas para a sua carga de trabalho.

Ferramentas IaC: pode utilizar o Terraform, o Bicep e o Azure Resource Manager para implementaçõ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.

Funções do Azure: Funções do Azure é uma ferramenta sem servidor que pode utilizar para automatizar tarefas com a sua linguagem de desenvolvimento preferida. As funções fornecem um conjunto abrangente de acionadores e enlaces orientados por eventos que ligam as suas funções a outros serviços. Não tem de escrever código extra.

GitHub Actions para o Azure: pode utilizar GitHub Actions para o Azure automatizar processos de CI/CD. GitHub Actions integra-se no Azure para simplificar as implementações. Pode criar fluxos de trabalho que compilam e testam todos os pedidos Pull no seu repositório ou implementar pedidos Pull intercalados para produção.

GitHub Actions vai além do DevOps e permite-lhe executar fluxos de trabalho quando ocorrem outros eventos no seu repositório. Por exemplo, pode executar um fluxo de trabalho para adicionar automaticamente etiquetas adequadas quando alguém cria um novo problema no seu repositório.

Automatização do Azure: o PowerShell e o Python são linguagens de programação populares para automatizar tarefas operacionais. Utilize estes idiomas para realizar operações como reiniciar serviços, transferir registos entre arquivos de dados e dimensionar a infraestrutura para satisfazer a procura. Pode expressar estas operações em código e executá-las a pedido. Apenas estes idiomas não oferecem uma plataforma para gestão centralizada, controlo de versões ou histórico de execuções. Os idiomas também não têm um mecanismo nativo para responder a eventos como alertas orientados pela monitorização. Para fornecer estas capacidades, precisa de uma plataforma de automatização.

A Automatização fornece uma plataforma alojada no Azure para alojar e executar o powerShell e o código Python em ambientes na cloud e no local, tanto no Azure como não no Azure. O powerShell e o código Python são armazenados num runbook de Automatização. Utilize a Automatização para:

  • Acione runbooks a pedido, com base numa agenda ou através de um webhook.

  • Executar o histórico e o registo.

  • Integrar um arquivo de segredos.

  • Integrar o controlo de origem.

Gerenciador de atualizações do Azure: o Update Manager é um serviço unificado para ajudar a gerir e a governar atualizações para máquinas virtuais. Pode monitorizar a conformidade de atualizações do Windows e do Linux na carga de trabalho. Também pode utilizar o Gestor de Atualizações para fazer atualizações em tempo real ou agende-as numa janela de manutenção definida. Utilize o Gestor de Atualizações para:

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

Ambientes de Implementação do Azure: os Ambientes de Implementação permitem que as equipas de desenvolvimento criem rapidamente uma infraestrutura de aplicações consistente com modelos baseados em projetos. Estes modelos minimizam o tempo de configuração e maximizam a segurança, a conformidade e a eficiência de custos. Um ambiente de implementação é uma coleção de recursos do Azure que são implementados em subscrições predefinidas. Os administradores de infraestrutura de desenvolvimento podem impor políticas de segurança empresariais e fornecer um conjunto organizado de modelos IaC predefinidos.

Os administradores da infraestrutura de desenvolvimento definem ambientes de implementação como itens de catálogo. Os itens de catálogo são alojados num repositório do GitHub ou do Azure DevOps, denominado catálogo. Um item de catálogo consiste num modelo IaC e num ficheiro manifest.yaml.

Pode criar scripts para a criação de ambientes de implementação e gerir programaticamente os ambientes.

Azure Logic Apps e Microsoft Power Automate: quando cria automatização de processos digitais (DPA) personalizada para processar tarefas de cargas de trabalho como fluxos de aprovação ou criar integrações de ChatOps, considere utilizar o Logic Apps ou o Power Automate. Pode construir fluxos de trabalho a partir de conectores e modelos incorporados. O Logic Apps e o Power Automate baseiam-se na mesma tecnologia subjacente e são ambos adequados para tarefas baseadas em acionadores ou baseadas no tempo.

Dimensionamento automático: muitas tecnologias do Azure têm capacidades de dimensionamento automático incorporadas. Também pode programar outros serviços para dimensionar automaticamente através de APIs. Para obter mais informações, veja Recomendações para conceber uma estratégia de dimensionamento fiável.

Grupos de ações do Azure Monitor: para executar automaticamente operações de autorrecuperação quando um alerta é acionado, utilize grupos de ações do Azure Monitor. Pode definir estas operações com um runbook, uma função do Azure ou um webhook.

Exemplo

Para obter um exemplo de utilização da Automatização em conjunto com outros serviços do Azure, veja Automatização de operações com Azure Event Grid. Este exemplo utiliza o Logic Apps e o Event Grid para automatizar tarefas operacionais.

Lista de verificação de Excelência Operacional

Veja o conjunto completo de recomendações.