Compartilhar via


Automatizar implantações de API com APIOps

Gerenciamento de API do Azure
Azure DevOps
Azure Pipelines

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

Arquitetura

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

Baixe um arquivo do Visio dessa 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. Caso uma alteração de API seja detectada na instância de Gerenciamento de API, uma PR (solicitação de pull) será criada para que os operadores revisem. Os operadores mesclam as alterações no repositório Git.

  3. Os desenvolvedores de API clonam o repositório Git, criam um branch e criam definições de API usando a Especificação openAPI ou as ferramentas de sua escolha.

  4. Caso um desenvolvedor envie alterações por push para o repositório, uma PR será criada para revisão.

  5. A PR pode ser aprovada ou revisada 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 confirmam as alterações.

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

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

Componentes

  • O Gerenciamento de API do Azure cria gateways de API modernos e consistentes para serviços de 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 continuando a compilar e liberar.

  • O Azure Pipelines permite que a CI/CD (integração contínua e entrega contínua) teste e compile seu código e o envie 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

Essa solução usa o Azure Repos para fornecer funcionalidade do Git e o Azure Pipelines fornece os pipelines. É possível usar qualquer tecnologia similar.

Detalhes do cenário

A APIOps usa o controle de versão para gerenciar as 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 de APIOps revisam e auditam as APIs mais cedo e com maior frequência, capturando e resolvendo desvios de padrões de API com mais rapidez para melhorar as especificações e a qualidade da API. Quanto mais APIs você criar e implantar com uma abordagem da 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 funcionalidade do Git e o Azure Pipelines cria o pipeline de CI/CD.

Possíveis casos de uso

  • Qualquer organização que desenvolva e gerencie as APIs
  • Setores altamente regulamentados: seguros, bancos, finanças, governo

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é 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 Well-Architected Framework.

Segurança

A segurança fornece garantias contra ataques deliberados e o uso indevido de seus valiosos dados e sistemas. Para obter mais informações, consulte a lista de verificação de revisão de design para Segurança.

Essa 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 leem e as aplicam à instância de Gerenciamento de API. Essa abordagem segue a melhor prática de segurança de privilégios mínimos , não dando permissões de gravação para as equipes na instância do serviço de Gerenciamento de API. Em cenários de diagnóstico ou solução de problemas, conceda permissões elevadas por um tempo limitado e caso a caso.

Para garantir que as instâncias de Gerenciamento de API estejam usando as melhores práticas de segurança, estenda essa solução para impor as melhores práticas de API, usando ferramentas de terceiros e testes de unidade. O Teams pode fornecer comentários antecipados por meio da revisão da PR, se as alterações propostas em uma API ou política violarem 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:

  • Revisão da Solicitação de Pull (PR): use branches e proteja os branches que representam o estado das instâncias de Gerenciamento de API de ter alterações enviadas diretamente para elas. Exige que as PRs tenham pelo menos um revisor para impor o princípio de quatro olhos.
  • Histórico imutável: permita apenas novas confirmações sobre as 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.
  • Confirmações assinadas: permitir somente confirmações assinadas que não podem ser alteradas após o fato.

Otimização de custos

A Otimização de Custos concentra-se em maneiras de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte a lista de verificação de revisão de design para Otimização de Custos.

  • Use a calculadora de preços do Azure para estimar os custos.

  • O Gerenciamento de API oferece as seguintes camadas: 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, precisará do plano do Team. Para obter mais informações, consulte os preços do GitHub.

Excelência operacional

A Excelência operacional abrange os processos de operações que implantam uma aplicação e as mantêm em execução em produção. Para obter mais informações, consulte a lista de verificação de revisão de design para Excelência Operacional.

A APIOps pode aumentar a produtividade do DevOps para desenvolvimento e implantações de API. Um dos recursos mais úteis é a possibilidade de usar operações do Git para reverter com mais rapidez as alterações que se comportam inesperadamente. O grafo de confirmação contém todas as confirmações, portanto, pode ajudar com a análise pós-mortem.

Os operadores de API geralmente gerenciam vários ambientes para o mesmo conjunto de APIs. É comum ter várias fases de uma API implantada em instâncias diferentes 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 as versões de aplicativos implantadas no momento em um cluster.

Quando alguém faz uma PR no repositório Git, o operador de API sabe que tem um novo código para examinar. 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 examinar a PR e garantir que a API que foi enviada para revisão atenda às melhores práticas e padrões.

Eficiência de desempenho

A Eficiência de Desempenho refere-se à capacidade da carga de trabalho de dimensionar para atender às demandas do usuário com eficiência. Para obter mais informações, consulte a lista de verificação de revisão de design para Eficiência de Desempenho.

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

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

Implantar este cenário

A implantação dessa 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.

    • Caso faça 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 de pull.

  • O fluxo de trabalho do extrator inclui as seguintes etapas:

  • 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: extrator de build, criar artefatos do portal e criar branch de modelo.

    • Extrator de build

      Essa fase cria o código do extrator.

    • Criar artefatos do portal

      Essa fase executa o extrator e cria artefatos semelhantes a uma estrutura de repositório Git como a demonstrada na seguinte captura de tela:

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

      • Criar branch de modelo

        Depois de gerar o artefato, essa fase cria uma PR com as alterações extraídas para a equipe de plataforma examinar.

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

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

        Captura de tela de uma solicitação de pull de exemplo após uma extração que mostra alterações propostas em um arquivo chamado 'specification.yml'.

  • Um revisor vai para Solicitações de Pull para exibir as solicitações de pull atualizadas. Poderá também configurar aprovações automáticas para automatizar essa etapa.

    Captura de tela de uma solicitação de pull de exemplo que mostra alterações no conteúdo em 'policy.xml' e muda apenas para o espaço em branco em outros arquivos.

  • Depois de aprovar a PR, ela dispara 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 do APIM.

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

    • O estágio do criador de build manipula a criação de novas APIs.
    • O estágio do terminador de build manipula todas as exclusões.
    • A fase de instâncias do APIM de publicação 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 for executado com êxito, ele publicará as alterações na instância de Gerenciamento de API.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autor principal:

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

Próximas etapas