API Manager Evaluation Series – 3Scale API Management Platform

Análise das principais funcionalidades, casos de uso e limitações do 3Scale API Management Platform.

Sumário

Muitas empresas têm implementado APIs como meio de garantir interoperabilidade entre seus sistemas internos e principalmente para expandir negócios e integrações com seu ecossistemas de parceiros. Um ponto fundamental para a adoção e evolução de uma plataforma de APIs é utilizar as ferramentas mais adequadas para cada necessidade de negócio, principalmente quando o assunto é uma plataforma de gestão de APIs.

Este é o terceiro artigo da série API Manager Evaluation, onde iremos apresentar uma análise do 3Scale API Management Platform trazendo um pouco da nossa experiência com a implementação desse produto em um dos principais bancos brasileiros. Se você ainda não leu o primeiro artigo desta série, acesse o link (https://blog.gft.com/br/2021/06/22/api-manager-evaluation-series-kong/

Introdução

O 3Scale API Management Platform é a solução da Red Hat para gerenciamento e monetização de APIs. A solução é suportada por uma comunidade no GitHub (https://github.com/3scale) que pode ser utilizada como uma ótima fonte de informação adicionalmente à documentação oficial do produto.

Dentre suas principais características, podemos destacar que a solução implementa o conceito de API as a Product – abordaremos esse tema um pouco mais adiante. Além disso, ele pode ser utilizado no modelo Software as a Service (SaaS) acessível em https://www.3scale.net/ e também no modelo de subscrição de licenças, permitindo que a solução seja implantada dentro de sua infraestrutura, seja em ambiente on-premise, híbrido ou cloud. 

Ao longo deste artigo, iremos nos referir ao produto somente como 3Scale por motivos de simplicidade.

Arquitetura

O 3Scale possui uma arquitetura bem robusta com diversos componentes. Dentre os principais componentes podemos citar:

  1. O APICast é uma solução baseada em NginX e que realiza a função de gateway de API, ou seja, é o componente responsável por realizar a aplicação das políticas de roteamento e segurança em tempo de execução. Na solução SaaS você possui dois ambientes do APIcast, um sandbox e outro production. No modelo de subscrição é possível adicionar outras instâncias do APICast para adequá-lo de acordo com sua necessidade.
  2. 3Scale API Manager Portal é a console administrativa onde é possível realizar todo o controle de acesso de usuários, configurar recursos do Developer Portal e gerenciar o ciclo de vida das APIs.
  3. Developer Portal é o canal de comunicação destinado aos consumidores da API. Ele oferece todas as funcionalidades para que os usuários possam administrar sua organização, usuários e aplicações, além de possibilitar login social com GitHub.

É importante ressaltar que o APICast (runtime) é sincronizado periodicamente ao API Manager, fazendo com que ele continue operante mesmo se o API Manager ficar indisponível por um curto período de tempo.

API as a Product:

Antes de seguir com a leitura deste artigo, é importante apresentar o conceito de API as a Product visto que ele é implementado pelo 3Scale desde a versão 2.7.

O princípio básico da monetização de APIs é cobrar uma taxa pela utilização dos serviços, seja por quantidade de chamadas, custo fixo mensal/anual ou outros modelos de assinatura. 

Uma vez que se possui uma quantidade diversificada de consumidores e serviços, é necessário apresentar modelos mais eficientes e adequados para necessidades distintas. É nesse ponto onde comercializar APIs como “produtos” entra em cena. 

Um produto pode ser visto como um agrupamento de APIs com o propósito de atender a um determinado nicho de negócio ou um público alvo, onde você pode definir um modelo de precificação específico e independente. 

No exemplo abaixo, podemos ver um produto chamado “Credit Score” e outro “Investment Hub”. Neste cenário hipotético, o produto Credit Score tem como objetivo oferecer para outras empresas uma avaliação de risco de um determinado cliente. Já o produto Investment Hub poderia ser destinado exclusivamente para parceiros comerciais que fazem uso da estrutura de serviços existente para investimentos de renda fixa ou previdência. Note que ambos os produtos podem compartilhar das mesmas APIs através dos Backends, o Backend representa o mapeando no API Manager do end-point da sua API e suas respectivas rotas de seu ambiente interno.

3Scale API Manager Portal

Todas as funções administrativas são realizadas através do 3Scale API Manager Portal, incluindo a gestão das APIs, configurações e customizações do Developer Portal e a publicação das especificações de seus serviços.

Todas as políticas de segurança* (policies), protocolos de autenticação e autorização, rate limiting*, throttling*, métricas e regras de roteamento, chamados de mapping rules na ferramenta, são feitas através da definição dos Produtos de api e planos de consumo (application plan), vamos falar um pouco mais a respeito do application plan na sessão de monetização. O passo a passo para realizar todas as etapas necessárias pode ser acessado na página First steps with 3scale.

A publicação dos contratos das APIs também é realizada através da API Manager Portal. A plataforma suporta as especificações no padrão Swagger 2.0 ou Open API Specification 3.0, mas a versão OAS 3.1 ainda não é suportada. Além disso, as especificações também precisam estar no formato JSON.

Developer Portal

O 3Scale Developer Portal oferece alguns recursos bem interessantes como login social que possibilita utilizar sua conta do GitHub acessar a plataforma, esta configuração já vem habilitada por padrão. Ele também facilita a comunicação entre o usuário consumidor e provedor, pois ele possui recursos para o envio de mensagens através de área logada do usuário e o provedor pode visualizá-las na sessão de “messages” do API Manager. Outro recurso interessante é o Fórum da comunidade onde é possível criar tópicos de discussões ou de interesses para os usuários.

Apesar dos recursos citados, o Developer Portal não vem totalmente “pronto para uso”, obrigatoriamente é necessário customizá-lo para que os contratos de APIs sejam visualizados no Developer Portal, caso contrário, somente um único contrato fica disponível.

Além disso, toda a customização precisa ser feita através do API Manager Portal, pois ele possui um CMS embarcado onde o código fonte do Developer Portal é mantido. Vale ressaltar que ele é desenvolvido utilizando javascript, HTML, e Liquid Template, sendo possível criar páginas em Markdown ou Textile.

Controle de acesso de usuários

O 3Scale API Management Platform oferece recursos para administrar os usuários de sua plataforma, é importante distinguir dois tipos de usuários, os provedores e os consumidores.

Usuários provedores: 

Os usuários provedores são os administradores da ferramenta e é possível controlar o nível de acesso de cada membro à partir do painel administrativo (API Manager). Vale ressaltar que o 3Scale possui somente dois perfis de usuários, o “admin” que dá privilégio total para administrar a plataforma  e o perfil “member”. Os usuários que possuem o perfil “member” inicialmente podem visualizar a lista de produtos e backends, porém não podem realizar nenhuma ação efetiva, portanto é necessário definir quais privilégios cada membro deve possuir, como administrar contas dos usuários, criar novos produtos, etc.

O 3Scale permite que os usuários sejam integrados à partir de outros Identity Providers* que implementem o protocolo OpenID Connect*. Adicionalmente ele oferece integração com Red Hat SSO sendo necessário poucos passos para configurá-lo. 

Uma limitação do produto é que ele não oferece recurso nativo para se integrar à soluções de mercado como Active Directory. Caso o controle de acesso de usuários corporativos seja realizado pelo AD, é necessário utilizar um IDP para realizar a intermediação e habilitar Single Sign-On. Ainda assim, essa integração é limitada, pois todos os usuários que se autenticam via SSO são importados com o perfil “membro” sendo necessário alterar o privilégio de cada usuário manualmente no portal administrativo, ou através das APIs administrativas do produto.

Usuários consumidores:

Os usuários consumidores fazem uso do Developer Portal. É possível permitir que qualquer pessoa crie um cadastro para ter acesso à plataforma, também é possível habilitar login social com GitHub, Auth0, ou integrá-lo à um IDP externo, mas semelhante ao o que ocorre no portal administrativo, todos os usuários são importados como membros. Todos os consumidores podem ser administrados pelo API Manager e também é possível enviar convites para novos usuários contendo as credenciais de acesso do portal.

Vale ressaltar que o 3Scale faz uso do conceito de “Organização”. Logo que uma pessoa realiza o cadastro para criar uma conta, seu perfil recebe os privilégios de administrador da organização. O administrador da organização possui total acesso aos dados de pagamento, estatísticas de consumo, gerenciamento de aplicações e usuários. O administrador da organização também pode convidar outras pessoas para se juntar à sua organização.

Monetização

Aprofundando um pouco mais no tema monetização, podemos citar os planos de consumo, referenciado na ferramenta como “application plan”. Um produto pode possuir um ou vários planos de consumo, por exemplo um plano “standard” que oferece somente um conjunto de funcionalidades com limitação de quantidade de requisições por dia/mês e um plano “premium” que oferece requisições ilimitadas.

De forma resumida, um plano de consumo define um conjunto de regras e restrições para o uso das APIs, ou de um subconjunto delas, dentro do escopo de um produto. É através dele que um custo por  requisições pode ser definido, também é possível restringir unitariamente, quais rotas estariam disponíveis para consumo dentro de um determinado plano.

Para acompanhamento e monitoração, a plataforma possui Dashboards com o a quantidade de requisições e métricas de consumo de cada aplicação, visíveis tanto no portal administrativo quanto no Developer Portal.

 Para a realização da cobrança é necessário integrar a ferramenta com outras soluções de pagamento. As soluções suportadas são a Braintree e Stripe, caso seja necessário utilizar outra solução de cobrança, é possível utilizar as APIs administrativas para extrair as informações de consumo, permitindo integrá-las ao sistema de cobrança existente.

Segurança de APIs e Policies

O padrão de segurança utilizado pelo 3Scale é baseada em ApiKey*, gerado e controlado pela própria ferramenta. É possível utilizar o protocolo OpenID Connect, mas é necessário integrá-lo com um IDP aderente ao padrão OAuth2.0*

Os protocolos de segurança são definidos no nível dos Produtos de API, dessa forma é possível configurar diferentes padrões de segurança de acordo com a necessidade de cada produto. Não obstante, muitos outros controles podem ser aplicados através de políticas de segurança (policy)*, como configuração de CORS, token introspection para os casos de OAuth2.0, validação de certificados (TLS e MTLS), entre outros.

De modo geral, o 3Scale possui políticas de segurança nativos que cobrem as necessidades gerais para se ter uma gestão de APIs efetiva e segura, porém configurar corretamente as policies pode ser um desafio, a documentação oficial nem sempre apresenta exemplos de como configurá-las pela interface administrativa, dificultando o entendimento de alguns parâmetros. Além disso, não é possível criar policies se você estiver utilizando a plataforma SaaS. É possível customizá-las ou criar suas próprias policies se você estiver utilizando o modelo de subscrição. 

Outro ponto importante é que as policies são escritas na linguagem Lua e fazem uso de Liquid Template, portanto pode ser difícil encontrar pessoas com experiência nessas linguagens para customizá-las sem correr o risco de gerar problemas de performance. A ordem em que as policies são executadas afeta diretamente no resultado da execução, depurar a execução das mesmas também é um desafio à parte.

Provisionamento e Automação

A instalação do 3Scale no ambiente on-premise precisa ser feita no Openshift. Toda a instalação pode ser feita através de Templates disponível no GitHub da comunidade ou através de Operator disponível no registry da Red Hat. 

Para realizar a instalação através de template é necessário estar bem atento aos pré-requisitos de provisionamento dos volumes persistentes, pois eles exigem nomes específicos para que sejam corretamente vinculados. Se seu ambiente do Openshift não possui acesso direto ao registry da Red Hat, também é necessário ajustar os parâmetros do template para que ele aponte para seu registry interno. 

Para a administração do ambiente e automações com esteiras DevOps é possível utilizar o 3Scale Toolbox, uma aplicação cliente que possibilita a administração do 3Scale via CLI.

Outra opção é utilizar as APIs administrativas que a plataforma possui, permitindo realizar toda a administração dos recursos de maneira programática, possibilitando a integração da ferramenta no seu ecossistema de DevOps.

Considerações finais

O Developer Portal certamente pode ser melhorado, ele apresenta uma interface simples e funcional, porém o fato de todo seu código fonte ser controlado pelo portal administrativo pode ser um fator contra produtivo caso venha a ser necessário realizar muitas customizações. Uma alternativa é gerar sua própria imagem Docker, mas isso somente seria possível para instalações nos ambientes híbridos, ou on-premise.

Outro ponto a ser melhorado é a padronização na formatação das requisições das APIs administrativas, alguns serviços esperam conteúdo em formato xml enquanto outros estão em formato json. Também existem inconsistências quanto à nomenclatura das entidades apresentadas no console administrativo e o nome dos atributos utilizados nas APIs, como por exemplo “Product” e “Service”, onde Product é o termo utilizado na interface de usuário, enquanto que “Service” é utilizado nas APIs administrativas.

No API Manager Portal, algumas funcionalidades poderiam ser agregadas para tornar a governança de APIs mais eficiente, como por exemplo:

  1. Importar as configurações de um Backend à partir de um Open API Specification; 
  2. Agrupar as especificações com base nos produtos de APIs, ou automatizar a criação dessa documentação com base nas especificações dos backends.

Essas duas funcionalidades reduziram muito a quantidade de configurações que precisam ser feitas manualmente.

Com relação aos produtos de APIs há uma limitação importante na plataforma que deve ser levada em conta. Uma aplicação somente pode ser vinculada a um plano de consumo, e por sua vez, está vinculada somente a um único produto. Se um produto for removido, a aplicação também é excluída, logo, podemos notar um acoplamento entre aplicação e produto que agrega uma complexidade maior na administração do ecossistema como um todo. Dito isto, desenhar os produtos de APIs exige um cuidado especial para que a experiência do usuário não seja prejudicada. Em minha humilde opinião, se esse acoplamento entre aplicação e produto fosse retirado, seria possível que uma aplicação fizesse uso de vários produtos de APIs tornando a usabilidade mais fluida.

De modo geral, a solução não se adequa muito bem se o caso de uso for voltado para controle e exposição de APIs como proxy, ou numa arquitetura onde ele será utilizado como um gateway interno. Isso porque toda a exposição das APIs é feita através dos produtos de APIs e isso agrega uma complexidade desnecessária nas configurações de roteamento nesse cenário.

O 3Scale é certamente uma solução robusta e oferece diversos recursos nativos muito interessantes para administrar, expor e monetizar APIs. A utilização da solução SaaS é uma forma de se experimentar e avaliar o conceito de APIS as a Product de forma rápida e simples. A plataforma como um todo se enquadra muito bem para cenários onde é necessário expor as APIs para parceiros ou consumidores externos visando a monetização, permitindo um cadastro simples e direto, sendo uma boa opção como gateway de API na camada de borda exposto na DMZ. Além disso, as APIs administrativas possuem grande amplitude de recursos e funcionalidades, sendo um grande diferencial da ferramenta.

Glossário

ApiKey: É uma sequência de caracteres alfanuméricos (token) que identifica a aplicação.

OAuth2.0: Protocolo de autenticação e autorização

OpenID Connect:  Evolução do protocolo de autenticação e autorização baseado no OAuth2.0 

Identity Provider (IDP): Ferramentas de gestão de identidade.

CORS: Cross Origin Resource Sharing

Políticas de segurança (policy): são regras que são executadas para cada requisição a uma API exposta no api gateway.

Rate limiting: Limitação de quantidade de requisições concorrentes dentro de um determinado período de tempo.

Throttling: Limitação global de requisições de maneira cumulativa, como limite de 100.000 requisições por mês.

 

Referências

https://access.redhat.com/documentation/en-us/red_hat_3scale_api_management/2.10/html/operating_3scale/index

https://access.redhat.com/documentation/en-us/red_hat_3scale_api_management/2.10/html/admin_portal_guide/index

https://access.redhat.com/documentation/en-us/red_hat_3scale_api_management/2.10/html/administering_the_api_gateway/index