O serviço de gestão de API da Microsoft completou recentemente uma década, atendendo a 35.000 clientes e gerenciando 2 milhões de APIs. Quais foram as lições aprendidas e o que podemos esperar para o futuro?

O controle de APIs era relevante dez anos atrás, mas agora se tornou fundamental. Os modelos de desenvolvimento na nuvem dependem das APIs para conectar microserviços em aplicativos distribuídos, onde alguns serviços são compartilhados por várias aplicações de formas diversas.
Ao implementar uma camada de gestão de API, as equipes de operações têm a capacidade de determinar as condições sob as quais os aplicativos podem utilizar tais APIs, através da implementação de controles visando assegurar um acesso equitativo. Além disso, auxiliam na proteção das APIs por meio da aplicação de controles de acesso baseados em funções, os quais restringem o acesso apenas a usuários e aplicativos autorizados. Essas ferramentas também facilitam a integração com serviços de terceiros, incluindo mecanismos de controle de custos, juntamente com outras funcionalidades de gestão.
Ir além de simplesmente gerenciar o código
Não é somente a administração do nosso código que é necessária. Os agentes de IA modernos utilizam APIs para se conectar aos dados, e é fundamental garantir que o acesso seja rigorosamente controlado para evitar vazamentos de informações críticas e sensíveis da organização. Além disso, é importante gerenciar o acesso aos serviços de IA, minimizando o risco de ataques de injeção rápida e monitorando de perto os custos relacionados a solicitações excessivamente complicadas.
Outra vantagem das ferramentas de gerenciamento de API é que elas funcionam como uma camada unificadora, agregando todas as APIs utilizadas em um único gateway e direcionando chamadas conforme necessário. Isso proporciona uma camada de tradução com uma sintaxe de API comum para todo o seu código, evitando a necessidade de lidar com diferentes protocolos, como gRPC, REST, GraphQL, SOAP, entre outros. Essa abordagem pode acelerar o desenvolvimento de aplicativos e facilitar a troca das APIs subjacentes por novas versões ou por ferramentas de fornecedores alternativos.
Algumas das tecnologias suportadas são consideradas tecnologias antigas, porém muitas aplicações legadas ainda são utilizadas por grandes empresas. O suporte a sistemas legados auxilia na prestação de serviços, facilitando a atualização dos mesmos sem impactar a infraestrutura subjacente. O gerenciamento de API reúne todas essas funcionalidades em um único painel de controle, possibilitando o controle do uso de APIs em ambientes locais, em nuvens diversas, assim como em aplicativos e serviços de terceiros.
Dez anos de administração de interfaces de programação de aplicativos.
O serviço de gerenciamento de APIs da Microsoft no Azure completou 10 anos recentemente. Refletindo sobre suas aplicações passadas e antecipando seu potencial para futuras gerações de aplicações, conversei com Vladimir Vinogradsky, gerente de programa da Microsoft, sobre a evolução da plataforma desde o início até se tornar a ferramenta abrangente de APIs de hoje.
Os números impressionantes incluem mais de 35.000 clientes atendidos, 2 milhões de APIs gerenciadas e 2,2 trilhões de chamadas mensais, com um crescimento anual notável em todas essas áreas. Vinogradsky enfatiza a importância de colocar o cliente em primeiro lugar, destacando o tempo dedicado pela equipe para interagir diretamente com os clientes, trabalhar com equipes de campo para compreender suas preocupações e necessidades. Esta abordagem complexa envolve traduzir feedbacks dos clientes sobre falta de recursos em soluções práticas para atender às suas reais necessidades, compreendendo como eles utilizam as APIs em seus negócios.
Essa estratégia possibilitou que o serviço incorporasse novas funcionalidades à sua estrutura de gateway principal. Segundo Vinogradsky, “Implementamos a capacidade de utilizar expressões para executar operações condicionais, parametrizar e personalizar políticas internas, o que resultou em um aumento significativo no poder e na flexibilidade do gateway. Isso permite que os clientes o utilizem de maneiras que anteriormente não considerávamos possíveis”.
A API do Azure tem uma gestão valorizada de forma competitiva, oferecendo diversos níveis adequados para diferentes situações, desde desenvolvedores que estão testando o serviço até organizações que lidam com um grande volume de transações diárias com segurança. Inclusive, existe um nível de consumo sem servidor que proporciona um milhão de chamadas gratuitas por mês, sendo uma opção interessante para pequenas e médias empresas que desejam monitorar o uso interno da API.
Além de ser integrado à infraestrutura do Azure, o Azure API Management oferece um gateway auto-hospedado que pode ser utilizado em qualquer lugar. Esse gateway fornece um painel centralizado para gerenciar todas as suas APIs, seja no Azure, localmente ou até mesmo em outras plataformas de nuvem como a AWS. O gateway está disponível como um contêiner Docker e pode ser executado em um servidor host usando o Docker ou integrado a um cluster Kubernetes. Os gateways auto-hospedados requerem conectividade com o Azure, pois se comunicam regularmente com o serviço de gerenciamento de APIs para atualizar as configurações em tempo quase real.
Combinando várias APIs no GraphQL.
Uma nova funcionalidade interessante é a inclusão do suporte para APIs GraphQL sintéticas. Essa técnica possibilita a integração de APIs legadas em uma instância moderna de GraphQL, proporcionando um único ponto de acesso para os dados por meio de um esquema GraphQL. Enquanto se trabalha com APIs já existentes, o Azure API Management encara o processo como a criação de uma nova definição de API. É necessário iniciar com um esquema GraphQL para a API em questão, que é então importado para o portal de gerenciamento de APIs do Azure. Outros requisitos essenciais são um endpoint de fallback e um URL base para a API sintética.
Após a criação da sua API, é possível iniciar a definição dos resolvedores, que consiste em mapear um recurso GraphQL para uma API já existente. Em seguida, é necessário especificar os dados que serão retornados, o URL do endpoint utilizado e o tipo de solicitação feita. O Azure API Management oferece a possibilidade de realizar testes de APIs diretamente no portal, o que permite ajustar recursos de segurança para APIs que podem não estar protegidas adequadamente para um aplicativo moderno. Além disso, é possível aumentar a segurança adicionando o Microsoft Defender para APIs.
Os desenvolvedores que criam código para utilizar estas APIs sintéticas agora precisam integrar o esquema GraphQL que foi definido, podendo acessá-lo por meio de um único ponto de acesso. Isso simplifica o processo de desenvolvimento de aplicativos, diminuindo os riscos associados com a utilização de múltiplas APIs e permitindo que os arquitetos estabeleçam padrões de programação adequados e outras medidas de segurança. Além disso, o uso do portal de gerenciamento de API do Azure para testar chamadas antes de iniciar a codificação também auxilia a garantir a escolha correta da API, independentemente da tecnologia subjacente.
Utilizando a integração do Azure API Management com o Dapr.
Com a gestão de APIs sendo essencial para o êxito do desenvolvimento de aplicativos nativos de nuvem, é interessante notar a integração do suporte para Dapr no Azure API Management. Isso envolve a utilização do gateway API auto-hospedado em conjunto com um sidecar Dapr para controlar o acesso às APIs em um aplicativo Kubernetes baseado em Dapr. Estes gateways de API operam em seus próprios contêineres, separados dos contêineres de aplicativos, utilizando o Dapr para encaminhar chamadas de API para e a partir do seu aplicativo. Dessa forma, é possível gerenciar as APIs sem expor qualquer interface pública.
Assim como com todas as instâncias do Azure API Management, esses gateways containers são controlados no mesmo painel hospedado no Azure. Como o Dapr utiliza definições do OpenAPI, mapear suas APIs para APIs gerenciadas pelo Azure é relativamente simples. Depois de mapear a API, é possível aplicar políticas. A capacidade de empurrar configurações de política para o gateway auto-hospedado em seu ambiente Dapr permite atualizar o sistema instantaneamente, como por exemplo, mudar um serviço back-end para uma versão mais recente sem impactar os usuários.
O controle de API vai além das políticas, e a Microsoft tem desenvolvido funcionalidades adicionais que complementam a ferramenta de gestão já conhecida. Uma alternativa facilita a elaboração de políticas, uma vez que o Azure API Management está integrado ao Microsoft Copilot para o Azure. Isso permite que usuários menos experientes automatizem a criação de novas políticas de API. As políticas geradas pela inteligência artificial podem ser utilizadas para auxiliar no aprendizado do serviço, mostrando os comandos do Azure CLI definidos com base na sua intenção.
Outra opção é o Azure API Center, que oferece um local para gerenciar os metadados de todas as suas APIs. É uma ferramenta recente e compatível não apenas com o Azure API Management, mas também com plataformas como o GitHub. Há planos de expansão para incluir outras fontes de informações sobre suas APIs. Essa abordagem permite a avaliação das APIs por meio de ferramentas de revestimento para verificar sua formatação adequada. Essas ferramentas também auxiliam na redução de duplicação de esforços ao usar a API. Vinogradsky destaca a importância de questionar a necessidade de construir uma nova API se já existir algo similar disponível, e sugere investir na melhoria da qualidade, se necessário.
As APIs são criadas por programadores e utilizadas por programadores, por isso é positivo observar a iniciativa da Microsoft em considerar a forma como catalogamos e encontramos APIs, e também em implementar um processo de desenvolvimento e operações em torno delas. A experiência adquirida com o Azure API Management ao longo de uma década é uma base sólida para os próximos anos.