Editar

Automatize implantações de API com APIOps

Azure API Management
Azure DevOps
Azure Pipelines

APIOps é uma metodologia que aplica os conceitos de GitOps e DevOps à implantação de API. Assim como o DevOps, o APIOps ajuda os membros da equipe a fazer alterações facilmente e implantá-las de forma iterativa e automatizada. Essa arquitetura demonstra como você pode melhorar todo o ciclo de vida e a qualidade da API usando APIOps.

Arquitetura

Diagrama da arquitetura para implantações automatizadas de API usando APIOps no Azure.

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de Trabalho

  1. Os operadores de API executam o pipeline do extrator para sincronizar o repositório Git com a instância de Gerenciamento de API e preencher o repositório Git com objetos de Gerenciamento de API no formato necessário.

  2. Se uma alteração de API for detetada na instância de Gerenciamento de API, uma solicitação pull (PR) será criada para os operadores analisarem. Os operadores mesclam as alterações no repositório Git.

  3. Os desenvolvedores de API clonam o repositório Git, criam uma ramificação e criam definições de API usando a especificação OpenAPI ou ferramentas de sua escolha.

  4. Se um desenvolvedor enviar alterações para o repositório, uma RP será criada para revisão.

  5. O PR pode ser aprovado ou revisto automaticamente, dependendo do nível de controle necessário.

  6. Depois que as alterações são aprovadas e mescladas, o pipeline de publicação implanta as alterações mais recentes na instância de Gerenciamento de API.

  7. Os operadores de API criam e modificam políticas, diagnósticos, produtos e outros objetos relevantes do Gerenciamento de API e, em seguida, confirmam as alterações.

  8. As alterações são revisadas e mescladas após a aprovação.

  9. Depois de mesclar as alterações, o pipeline de publicação implanta as alterações usando o processo de definições de API.

Componentes

  • O Gerenciamento de API do Azure cria gateways de API consistentes e modernos para serviços back-end. Além de rotear chamadas de API para back-ends, essa plataforma também verifica credenciais, impõe cotas de uso e registra metadados.

  • O Azure DevOps é um serviço para gerenciar seu ciclo de vida de desenvolvimento de ponta a ponta, incluindo planejamento e gerenciamento de projetos, gerenciamento de código e continuar a criar e lançar.

  • O Azure Pipelines permite a integração contínua (CI) e a entrega contínua (CD) para testar e criar seu código e enviá-lo para qualquer destino.

  • O Azure Repos é um conjunto de ferramentas de controle de versão, incluindo o Git padrão, que você pode usar para gerenciar seu código.

Alternativas

Esta solução usa o Azure Repos para fornecer a funcionalidade Git e o Azure Pipelines fornece os pipelines. Você pode usar qualquer tecnologia comparável.

Detalhes do cenário

APIOps usa controle de versão para gerenciar APIs e criar uma trilha de auditoria de alterações em APIs, políticas e operações.

Os desenvolvedores de API que usam uma metodologia APIOps revisam e auditam APIs mais cedo e com mais frequência, detetando e resolvendo desvios dos padrões de API mais rapidamente para melhorar as especificações e a qualidade da API. Quanto mais APIs você criar e implantar com uma abordagem APIOps, maior será a consistência entre as APIs.

Essa arquitetura APIOps usa o Gerenciamento de API do Azure como a plataforma de gerenciamento de API. O Azure DevOps organiza o gerenciamento de API. O Azure Repos fornece a funcionalidade Git e o Azure Pipelines cria o pipeline de CI/CD.

Potenciais casos de utilização

  • Qualquer organização que desenvolva e gerencie APIs
  • Indústrias altamente regulamentadas: seguros, banca, finanças, governo

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, um conjunto de princípios orientadores que você pode usar para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

Segurança

A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar de segurança.

Esta solução oferece vários benefícios relacionados à segurança. Desenvolvedores individuais — e até mesmo operadores — não acessam diretamente a instância de Gerenciamento de API para aplicar alterações ou atualizações. Em vez disso, os usuários enviam alterações por push para um repositório Git e os pipelines de extração e publicação os leem e aplicam à instância de Gerenciamento de API. Essa abordagem segue a prática recomendada de segurança de menor privilégio, não dando às equipes permissões de gravação para a instância do serviço de Gerenciamento de API. Em cenários de diagnóstico ou solução de problemas, você pode conceder permissões elevadas por um tempo limitado caso a caso.

Para garantir que as instâncias de Gerenciamento de API estejam usando as práticas recomendadas de segurança, você pode estender essa solução para impor as práticas recomendadas de API usando ferramentas de terceiros e testes de unidade. As equipes podem fornecer feedback antecipado por meio da revisão de RP se as alterações propostas a uma API ou política violarem os padrões.

Além da tarefa de configurar permissões de repositório, considere implementar as seguintes medidas de segurança em repositórios Git que sincronizam com instâncias de gerenciamento de API:

  • Pull Request (PR) Review: use ramificações e proteja as ramificações que representam o estado das instâncias de Gerenciamento de API de terem alterações enviadas diretamente para elas. Exigir que as RP tenham pelo menos um revisor para aplicar o princípio dos quatro olhos.
  • Histórico imutável: permita apenas novas confirmações em cima das alterações existentes. O histórico imutável é especialmente importante para fins de auditoria.
  • Autenticação multifator: exija que os usuários ativem a autenticação de dois fatores.
  • Compromissos assinados: permitem apenas confirmações assinadas que não podem ser alteradas após o fato.

Otimização de custos

A otimização de custos consiste em reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.

  • Utilize a calculadora de preços do Azure para prever os custos.

  • O Gerenciamento de API oferece os seguintes níveis: Consumo, Desenvolvedor, Básico, Standard e Premium.

  • O GitHub oferece um serviço gratuito. No entanto, para usar recursos avançados relacionados à segurança, como proprietários de código ou revisores necessários, você precisa do plano de equipe. Para obter mais informações, consulte Preços do GitHub.

Excelência operacional

A excelência operacional abrange os processos operacionais que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, consulte Visão geral do pilar de excelência operacional.

APIOps pode aumentar a produtividade de DevOps para desenvolvimento e implantações de API. Um dos recursos mais úteis é a capacidade de usar operações Git para reverter rapidamente as alterações que se comportam inesperadamente. O gráfico de confirmação contém todas as confirmações, por isso pode ajudar na análise post-mortem.

Os operadores de API geralmente gerenciam vários ambientes para o mesmo conjunto de APIs. É comum ter vários estágios de uma API implantados em diferentes instâncias de Gerenciamento de API ou em uma instância de Gerenciamento de API compartilhada. O repositório Git, que é a única fonte de verdade, mostra quais versões de aplicativos estão atualmente implantadas em um cluster.

Quando alguém faz um PR no repositório Git, o operador da API sabe que tem um novo código para revisar. Por exemplo, quando um desenvolvedor usa a especificação OpenAPI e cria a implementação da API, ele adiciona esse novo código ao repositório. Os operadores podem analisar a RP e certificar-se de que a API que foi submetida para revisão atende às práticas e padrões recomendados.

Eficiência de desempenho

Eficiência de desempenho é a capacidade da sua carga de trabalho para dimensionar para satisfazer as exigências que os utilizadores lhe colocam de forma eficiente. Para obter mais informações, consulte Visão geral do pilar de eficiência de desempenho.

APIOps tem muitos benefícios, mas à medida que os cenários de Gerenciamento de API crescem, cresce também a complexidade de gerenciá-los. Esta solução ajuda a enfrentar desafios como:

  • Manter uma visão geral de todos os ambientes e instâncias de gerenciamento de API.
  • Acompanhamento de alterações críticas em APIs e políticas.
  • Criação de uma trilha de auditoria para todas as alterações implantadas.

Implementar este cenário

A implantação desta solução envolve estas etapas:

  • Desenvolva a API no portal ou faça alterações na especificação OpenAPI usando uma ferramenta de sua escolha.

    • Se você fizer alterações no portal, poderá executar o extrator para extrair automaticamente todas as APIs e outras políticas, operações e configurações relevantes do Gerenciamento de API. Você pode sincronizar essas informações com o repositório git.

    • Opcionalmente, use a CLI do Azure DevOps para criar uma nova solicitação pull.

  • O fluxo de trabalho do extrator inclui as seguintes etapas que você executa:

  • Em nosso cenário, o pipeline que baixa as alterações no portal para a instância de Gerenciamento de API tem os seguintes estágios: Compilar extrator, Criar artefatos do portal e Criar ramificação de modelo.

    • Extrator de construção

      Esta etapa constrói o código do extrator.

    • Criar artefatos a partir do portal

      Este estágio executa o extrator e cria artefatos que se assemelham a uma estrutura de repositório Git, como a mostrada na captura de tela a seguir:

      Captura de tela de 'APIM-automation' que mostra 'apim-instances' e uma hierarquia de pastas.

      • Criar ramificação de modelo

        Depois de gerar o artefato, esta etapa cria um PR com as alterações extraídas para a equipe da plataforma analisar.

        Na primeira vez que você executa o extrator, ele extrai tudo do repositório Git. O PR criado terá todas as APIs, políticas, artefatos e assim por diante.

        As extrações posteriores só têm alterações feitas antes da extração no PR. Às vezes, as alterações podem ser apenas na especificação de uma API, que é o caso no exemplo a seguir de um PR.

        Captura de ecrã de um exemplo de pedido pull após uma extração que mostra as alterações propostas a um ficheiro denominado 'specification.yml'.

  • Um revisor vai para Pull Requests para visualizar as solicitações pull atualizadas. Você também pode configurar aprovações automáticas para automatizar esta etapa.

    Captura de ecrã de um exemplo de pedido pull que mostra alterações ao conteúdo em 'policy.xml' e alterações apenas ao espaço em branco noutros ficheiros.

  • Depois de aprovar o PR, ele aciona outro pipeline que publica do Gerenciamento de API para o portal. Em nosso exemplo, ele tem os seguintes estágios: criar criador, criar terminador e publicar instâncias APIM.

    Captura de tela dos estágios em APIM-publish-to-portal, um pipeline.

    • O estágio de criador de compilação lida com a criação de novas APIs.
    • O estágio do terminador de compilação lida com quaisquer exclusões.
    • O estágio de publicação de instâncias APIM publica alterações na instância de Gerenciamento de API.

    Captura de tela que mostra os trabalhos em uma execução de exemplo de APIM-publish-to-portal, um pipeline.

    Depois que esse pipeline é executado com êxito, ele publica as alterações na instância de Gerenciamento de API.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.

Próximos passos