Compartilhar via


Automação

Na infraestrutura de nuvem definida pelo software, as equipes usam várias ferramentas e técnicas para provisionar, configurar e gerenciar a infraestrutura. À medida que as equipes evoluem e crescem, elas podem fazer a transição do uso de portais e esforços manuais para o uso de código e automação para provisionar, configurar e gerenciar a infraestrutura e os serviços.

Considerações sobre a automação de plataforma

  • Implementar a metodologia de EaC (Tudo como Código) permite que as equipes liberem os principais benefícios, criem uma cultura de desenvolvimento robusta e permitam que todos os membros de cada equipe inspecionem como e quais recursos são implantados. EaC também ajuda as equipes de plataforma a adotar as principais práticas de desenvolvimento, que melhoram a agilidade e eficiência. As equipes podem controlar as alterações e as que são movidas para a produção, abrigando o código em repositórios e usando sistemas de controle de versão para gerenciá-lo.
  • As equipes podem seguir o princípio dos quatro olhos e usar a programação em pares ou a revisão em pares para garantir que as alterações de código nunca sejam feitas isoladamente. A programação em pares e a revisão em pares melhoram a qualidade do código, permitem que as equipes compartilhem a responsabilidade pelas alterações e aumentem o conhecimento da equipe sobre o que é estabelecido e implantado. A revisão de código é uma maneira fantástica para que os membros da equipe aprendam novas técnicas e métodos de codificação e automação.
  • As equipes devem usar sistemas de controle de versão como o Git, juntamente com repositórios Git, para impor a revisão em pares. Os repositórios Git permitem que as equipes definam as ramificações importantes e as protejam com políticas de ramificação. Você pode usar a política para exigir que as alterações de código nessas ramificações atendam a determinados critérios, como um número mínimo de aprovações de membros da equipe, antes que possam ser mescladas em uma ramificação protegida.
  • As equipes devem conectar a metodologia EaC e o processo de revisão de alterações, juntamente com um processo de CI/CD (integração contínua e entrega contínua). Cada alteração de código deve disparar automaticamente um processo de CI que executa implantações de teste, validação e análise de código estático. A CI garante que os desenvolvedores verifiquem o código antecipadamente (geralmente chamado de fail fast ou teste de shift-left) em busca de erros que possam causar problemas futuros. Dependendo da estratégia de ramificação usada pela equipe, as alterações nas ramificações importantes devem disparar a implantação em ambientes diferentes. Depois que as alterações forem aprovadas e mescladas em main, o processo de CD implantará essas alterações na produção. Esse sistema de gerenciamento de código fornece à equipe uma única fonte de verdade para o que está em execução em cada ambiente.
  • Para garantir que a plataforma seja completamente autorrecuperada e forneça autoatendimento para as equipes de carga de trabalho, a equipe de plataforma deve trabalhar para automatizar tudo (o que geralmente é chamado de Automação Extrema) desde o provisionamento, a configuração e o gerenciamento de plataforma até o provisionamento de assinatura de zona de destino para equipes de carga de trabalho. A automação extrema permite que a equipe de plataforma se concentre em agregar valor, em vez de implantar, configurar e gerenciar a plataforma. A automação extrema também cria um ciclo de autoaprimoramento, que dá à equipe mais tempo para criar automação adicional.
  • À medida que as equipes de plataforma automatizam as atividades operacionais e reduzem a intervenção humana, elas devem mudar o foco para tarefas importantes que permitem e aceleram a inovação da equipe de carga de trabalho no Azure. Para tanto, a equipe de plataforma deve iterar por meio de vários ciclos de criação e desenvolvimento, à medida que coloca em prática as ferramentas, os scripts e os aprimoramentos de funcionalidade da plataforma.
  • Existem várias opções disponíveis para ajudar a equipe a começar a usar a implantação de Zona de Destino do Azure. Essas opções dependem dos recursos atuais da equipe e podem aumentar, à medida que a equipe evolui. Mais especificamente, para Implantação de Plataforma, pode-se escolher entre experiências baseadas em Portal, Bicep ou Terraform, dependendo da proficiência em IaC e preferência de ferramentas das respectivas equipes.
    • As equipes de plataforma novas e emergentes que ainda estão conhecendo a Infraestrutura como Código (IaC) e estão mais familiarizadas com o uso de um portal para implantar e gerenciar recursos podem usar o acelerador de zona de aterrissagem do Azure para iniciar, que oferece suporte a equipes que ainda usam uma abordagem ClickOps. O ClickOps é o processo de provisionamento, configuração e gerenciamento de recursos ao clicar em portais, consoles de gerenciamento e assistentes. Esse acelerador permite que sua equipe use o portal como ferramenta de implantação inicial e, progressivamente, à medida que a maturidade de engenharia da plataforma aumenta, use ainda mais a CLI do Azure, o PowerShell ou o IaC.
    • A solução AzOps permite que as equipes desenvolvam as práticas de automação e gerenciamento de plataforma passando de ClickOps para DevOps. A equipe pode deixar de usar o acesso de conta pessoal e passar a usar os princípios e as práticas do DevOps que dependem apenas de CI/CD com AzOps e IaC. O AzOps permite que sua equipe traga sua própria arquitetura, use a arquitetura implantada pelo acelerador do Portal da Zona de Aterrissagem do Azure (após a implantação inicial baseada no portal, pois a integração do AzOps não faz parte da experiência do Portal ANZ), integre-se a uma implantação brownfield ou use modelos personalizados (Bicep ou ARM) para criar e operacionalizar sua plataforma.
    • As equipes de plataforma com habilidades e funcionalidades estabelecidas podem adotar uma abordagem codificada, que segue os princípios e as práticas do DevOps. A equipe deve se basear substancialmente nas práticas modernas de desenvolvimento e IaC, deixando de usar o acesso do Azure nas contas pessoais e passando a executar todas as operações por meio do pipeline de CI/CD. Sua equipe deve usar aceleradores baseados em IaC, como ALZ-Bicep ou o módulo Terraform de zonas de aterrissagem do Azure para acelerar essa transição.
  • Os aceleradores baseados em IaC têm um escopo de gerenciamento limitado. As novas versões fornecem mais funcionalidades e maior capacidade de gerenciamento de recursos. Se estiver usando um acelerador, a equipe deverá considerar uma abordagem em camadas que comece com um acelerador e adicione uma camada de automação. A camada de automação fornece os recursos necessários para que a equipe dê suporte total às equipes de carga de trabalho com recursos de plataforma, como a implantação do controlador de domínio para aplicativos herdados.
  • À medida que a equipe de plataforma faz a transição para uma abordagem de DevOps, ela precisa estabelecer um processo para lidar com as correções de emergência. Ela pode usar as permissões qualificadas de PIM (Privileged Identity Management) para solicitar acesso para executar correções e, posteriormente, devolvê-lo ao código para limitar o descompasso de configuração ou pode usar o código para implementar uma correção rápida. A equipe sempre deve registrar as correções rápidas na lista de pendências, para que possa refazer cada correção posteriormente e limitar a dívida técnica. O excesso de dívida técnica leva a uma desaceleração no futuro, uma vez que parte do código de plataforma não é totalmente revisado e não atende às diretrizes e aos princípios de codificação da equipe.
  • Você pode usar as Políticas do Azure para adicionar um pouco de automação à plataforma. Use a IaC para implantar e gerenciar as Políticas do Azure, geralmente conhecidas como PaC (Política como Código). Essas políticas permitem automatizar atividades como a coleção de logs. Muitas estruturas de PaC também implementam um processo de isenção. Portanto, planeje para que as equipes de carga de trabalho solicitem isenções de políticas.
  • Use a "Governança controlada por políticas" para sinalizar às equipes de carga de trabalho, quando estiverem tentando implantar recursos que não atendem a um controle de segurança. Implante políticas com o efeito de deny para essas situações, o que permite que as equipes de carga de trabalho também tratem Tudo como Código e evitem o descompasso de configuração em que o código declara uma coisa e a política alterou uma configuração no momento da implantação. Evite usar os efeitos de modify, como se uma equipe de carga de trabalho implantasse uma conta de armazenamento com o supportOnlyHttpsTraffic = false definida no código, em que uma política de modify muda isso para true, no momento da implantação, para manter a conformidade. Isso gera a descompasso do código em relação ao que foi implantado.

Recomendação de design para automação de plataforma

  • Siga uma abordagem de Tudo como Código para obter total transparência e controle de configuração da plataforma, documentação, implantação e processo de teste do Azure.
  • Use o controle de versão para gerenciar todos os repositórios de código, incluindo:
    • Infraestrutura como código
    • Política como Código
    • Configuração como código
    • Implantação como Código
    • Documentação como Código
  • Implemente o princípio dos quatro olhos e um processo de programação em pares ou revisão em pares, para garantir que todas as alterações de código sejam revisadas pela equipe, antes que sejam implantadas na produção.
  • Adote uma estratégia de ramificação para a equipe e defina políticas de ramificação para as ramificações que você deseja proteger. Com as políticas de ramificação, as equipes devem usar solicitações de pull para fazer alterações de mesclagem.
  • Use a CI/CD (integração contínua e entrega contínua) para automatizar o teste de código e a implantação em ambientes diferentes.
  • Automatize tudo, como provisionamento, configuração e gerenciamento da plataforma e o provisionamento das assinaturas de zona de destino para as equipes de carga de trabalho.
  • Use um dos aceleradores disponíveis correspondentes aos recursos da equipe, para começar a implantar as Zonas de Destino do Azure.
  • Planeje usar uma abordagem de implantação em camadas, para adicionar os recursos que não são contemplados por um acelerador, mas que são necessários para dar suporte total às equipes de carga de trabalho.
  • Estabeleça um processo para usar o código para implementar correções rápidas. Sempre registre as correções rápidas na lista de pendências da equipe, para que cada correção possa ser retrabalhada posteriormente e que você possa limitar a dívida técnica.
  • Use a Infraestrutura como Código para implantar e gerenciar as Políticas do Azure (geralmente conhecidas como Política como Código)
  • Implemente um processo de isenção para políticas. Planeje que as equipes de carga de trabalho solicitem isenções de políticas e estejam prontas para liberar as equipes, quando necessário.
  • Use a "Governança controlada por políticas" para bloquear as equipes de carga de trabalho, quando estiverem tentando implantar recursos que não atendem a um controle de segurança. Isso ajuda a reduzir a descompasso de configuração, em que o código declara um estado diferente do que acaba sendo implantado.

Leia mais