Apresentando o InterSystems API Manager (+ webinar)

Recentemente, lançamos o InterSystems API Manager (IAM), um novo componente da plataforma de dados InterSystems IRIS que fornece visibilidade, controle e gerenciamento do tráfego de APIs web em toda a infraestrutura de TI.

Neste artigo, mostrarei como configurar o IAM e demonstrarei alguns dos muitos recursos disponíveis com o IAM. O InterSystems API Manager permite:

  • Monitore a API, entenda quem a utiliza, quais APIs são mais populares e quais precisam de melhorias.
  • Controle quem usa a API e limite o uso da API, desde simples restrições de acesso até restrições baseadas em solicitações - você tem controle personalizado e pode responder rapidamente às mudanças nos padrões de consumo da API.
  • APIs seguras usando mecanismos de segurança centralizados, como OAuth2.0, LDAP ou Key Token Authentication.
  • Torne mais fácil para desenvolvedores terceirizados e forneça-lhes uma experiência de API superior abrindo um portal de desenvolvedor dedicado.
  • Dimensione a API e garanta latência mínima de resposta.

A gestão de APIs é essencial para a transição para SOA ou arquitetura de microsserviços, simplificando a integração entre (micro)serviços individuais, disponibilizando-os a todos os consumidores externos e internos. Como resultado, novas APIs tornam-se mais fáceis de criar, manter e consumir.

Se já estiver usando o InterSystems IRIS, você poderá adicionar a opção IAM à sua licença. A opção IAM é gratuita para clientes InterSystems IRIS, mas você deve solicitar uma nova chave de licença da InterSystems para começar a usar o IAM.

Se você ainda não usa o InterSystems IRIS e planeja experimentar o InterSystems API Manager, entre em contato com a InterSystems.

Introdução e instalação

Os clientes da InterSystems podem baixar a distribuição do IAM no site WRC seção “Distribuição de software” e execute como um contêiner Docker. Requisitos Mínimos do Sistema:

Inicialmente você precisa baixar a imagem Docker (Importante! O arquivo com WRC não é uma imagem Docker, você precisa descompactá-lo, há uma imagem Docker dentro):

docker load -i iam_image.tar

Este comando disponibilizará a imagem IAM para uso posterior em seu servidor. O IAM é executado como um contêiner separado, portanto você pode escalá-lo independentemente do InterSystems IRIS. A execução do IAM requer acesso ao InterSystems IRIS para baixar uma licença.

Configure o InterSystems IRIS:

  • Habilite o aplicativo da web /api/IAM
  • Habilitar usuário IAM
  • Alterar senha do usuário IAM

Agora vamos iniciar o contêiner IAM. No arquivo você encontrará scripts iam-setup para Windows e Unix (e Mac). Esses scripts ajudarão você a definir as variáveis ​​de ambiente corretamente, permitindo que o contêiner IAM estabeleça uma conexão com o InterSystems IRIS. Aqui está um exemplo do script em execução no Mac:

source ./iam-setup.sh 
Welcome to the InterSystems IRIS and InterSystems API Manager (IAM) setup script.
This script sets the ISC_IRIS_URL environment variable that is used by the IAM container to get the IAM license key from InterSystems IRIS.
Enter the full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
Enter the IP address for your InterSystems IRIS instance. The IP address has to be accessible from within the IAM container, therefore, do not use "localhost" or "127.0.0.1" if IRIS is running on your local machine. Instead use the public IP address of your local machine. If IRIS is running in a container, use the public IP address of the host environment, not the IP address of the IRIS container. xxx.xxx.xxx.xxx               
Enter the web server port for your InterSystems IRIS instance: 52773
Enter the password for the IAM user for your InterSystems IRIS instance: 
Re-enter your password: 
Your inputs are:
Full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
IP address for your InterSystems IRIS instance: xxx.xxx.xxx.xxx
Web server port for your InterSystems IRIS instance: 52773
Would you like to continue with these inputs (y/n)? y
Getting IAM license using your inputs...
Successfully got IAM license!
The ISC_IRIS_URL environment variable was set to: http://IAM:****************@xxx.xxx.xxx.xxx:52773/api/iam/license
WARNING: The environment variable is set for this shell only!
To start the services, run the following command in the top level directory: docker-compose up -d
To stop the services, run the following command in the top level directory: docker-compose down
URL for the IAM Manager portal: http://localhost:8002

Como você pode ver, o nome completo da imagem, o endereço IP, a porta InterSystems IRIS e a senha do usuário IAM são tudo que você precisa para começar.

Em vez de executar um script, você pode definir variáveis ​​de ambiente manualmente:

ISC_IAM_IMAGE=intersystems/iam:0.34-1-1
ISC_IRIS_URL=http://IAM:<PASS>@<IP>:<PORT>/api/iam/license

Lançar

Agora vamos iniciar o IAM executando o comando:

docker-compose up -d

Este comando organiza os contêineres IAM e garante que tudo esteja funcionando corretamente. O status dos contêineres é verificado usando o comando:

docker ps

Abra a interface de administração em seu navegador localhost:8002.

Apresentando o InterSystems API Manager (+ webinar)

Está vazio por enquanto porque é um nó completamente novo. Vamos mudar isso. O IAM suporta o conceito de espaços de trabalho para dividir APIs em módulos e/ou comandos. Vá para o espaço de trabalho "padrão" que usaremos para nossos experimentos.

Apresentando o InterSystems API Manager (+ webinar)

O número de solicitações para este workspace ainda é zero, mas você terá uma ideia dos conceitos básicos do IAM no menu à esquerda. Os dois primeiros elementos: Serviços e Rotas são os mais importantes:

  • Serviço é a API à qual queremos fornecer acesso aos consumidores. Assim, a API REST no InterSystems IRIS é um serviço, assim como, por exemplo, a API do Google se você quiser utilizá-la.
  • A Rota decide para qual Serviço as solicitações recebidas devem ser encaminhadas. Cada Rota possui um conjunto específico de condições e, caso sejam atendidas, a solicitação é enviada ao Serviço apropriado. Por exemplo, uma rota pode corresponder ao IP, ao domínio do remetente, aos métodos HTTP, às partes de um URI ou a uma combinação desses exemplos.

Serviço

Vamos criar um Serviço InterSystems IRIS, com os seguintes valores:

Campo
Valor
descrição

nome
íris
Nome do Serviço

hospedeiro
IP
Host ou IP do servidor InterSystems IRIS

porta
52773
Porta web do servidor InterSystems IRIS

caminho
/api/atelier
Caminho raiz

protocolo
http
Protocolo

Deixe os valores restantes como padrão. Clique no botão Create e anote o ID do serviço criado.

Rota

Agora vamos criar uma rota:

Campo
Valor
descrição

caminho
/api/atelier
Caminho raiz

protocolo
http
Protocolo

serviço.id
guia de 3
Serviço (ID da etapa anterior)

Deixe os valores restantes como padrão. Clique no botão Create e anote o ID da Rota criada. Por padrão, o IAM escuta solicitações recebidas na porta 8000. Agora as solicitações enviadas para http://localhost:8000 e começando com /api/atelier são redirecionados para o InterSystems IRIS.

Teste

Vamos tentar criar uma solicitação em um cliente REST (estou usando Postman).

Apresentando o InterSystems API Manager (+ webinar)

Vamos enviar uma solicitação GET para http://localhost:8000/api/atelier/ (não esqueça / no final) e receba uma resposta da InterSystems IRIS. Cada solicitação passa pelo IAM, que coleta métricas:

  • Código de status HTTP.
  • Atraso
  • Monitoramento (se configurado).

Fiz mais algumas solicitações (incluindo duas solicitações para endpoints inexistentes como /api/atelier/est/), os resultados são imediatamente visíveis no dashboard:

Apresentando o InterSystems API Manager (+ webinar)

Trabalhando com plug-ins

Agora que temos uma rota configurada, podemos gerenciar nossa API. Podemos adicionar recursos que complementarão nosso serviço.

A maneira mais comum de alterar o comportamento de uma API é adicionar um plugin. Os plug-ins isolam funcionalidades individuais e podem ser conectados ao IAM globalmente ou apenas a entidades individuais, como Usuário (grupo de usuários), Serviço ou Rota. Começaremos adicionando o plugin Rate Limiting à Rota. Para estabelecer uma conexão entre o plugin e a rota, precisamos de um identificador único (ID) da rota.

Limitando o número de solicitações

Clique em Plug-ins no menu da barra lateral esquerda. Você pode ver todos os plugins ativos nesta tela, mas como este servidor IAM é novo, ainda não há plugins ativos. Então prossiga para a próxima etapa clicando em “Novo Plugin”.

O plugin que precisamos está na categoria “Controle de tráfego” e se chama “Rate Limiting”. Selecione-o. Existem algumas configurações que você pode definir aqui, mas nos preocupamos apenas com dois campos:

Campo
Valor
descrição

ID_da_rota
ID
ID da rota

config.minuto
5
Número de solicitações por minuto

Isso é tudo. O plugin está configurado e ativo. Observe que podemos escolher diferentes intervalos de tempo, como um minuto, uma hora ou um dia. As configurações podem ser combinadas (por exemplo, 1000 solicitações por hora e ao mesmo tempo 100 solicitações por minuto). Escolhi minutos porque facilita a verificação da funcionalidade do plugin.

Se você enviar a mesma solicitação novamente no Postman, verá que a resposta é retornada com 2 cabeçalhos adicionais:

  • XRateLimit-Limit-minuto: 5
  • XRateLimit-minuto restante: 4

Isso informa ao cliente que ele pode fazer até 5 solicitações por minuto e pode fazer mais 4 solicitações no intervalo de tempo atual.

Apresentando o InterSystems API Manager (+ webinar)

Se você fizer a mesma solicitação repetidamente, acabará ficando sem cota disponível e, em vez disso, receberá um código de status HTTP 429 com o seguinte corpo de resposta:

Apresentando o InterSystems API Manager (+ webinar)

Aguarde um minuto e você poderá enviar solicitações novamente.

Este é um mecanismo conveniente que permite:

  • Proteja o back-end contra picos de carga.
  • Diga aos clientes quantas solicitações eles podem fazer.
  • Monetize a API.

Você pode definir valores para diferentes intervalos de tempo e, assim, suavizar o tráfego da API durante um determinado período de tempo. Digamos que você permita 600 solicitações por hora em uma rota específica. Em média, são 10 solicitações por minuto. Mas nada impede que o cliente conclua todas as 600 solicitações no primeiro minuto da hora. Talvez seja disso que você precisa. Você pode querer obter uma carga mais uniforme ao longo de uma hora. Ao definir o valor do campo config.minute Um valor 20 garante que seus usuários não façam mais de 20 solicitações por minuto e 600 solicitações por hora. Isso permite pequenos picos em um intervalo de um minuto em comparação com um fluxo médio total de 10 solicitações por minuto, mas os usuários não podem usar a cota horária por um minuto. Agora eles precisarão de pelo menos 30 minutos para usar todas as suas solicitações. Os clientes receberão cabeçalhos adicionais para cada intervalo de tempo especificado, por exemplo:

Cabeçalho HTTP
Valor

X-RateLimit-Limit-hora
600

X-RateLimit-Hora restante
595

X-RateLimit-Limite-minuto
20

X-RateLimit-minuto restante
16

Claro, existem muitas maneiras diferentes de configurar limites de consulta, dependendo do que você deseja alcançar.

Descobertas

Finalizo aqui, acho que já tem material suficiente para o primeiro artigo sobre o InterSystems API Manager. Usamos apenas um dos mais de 40 plug-ins. Há muitas outras coisas interessantes que você pode fazer com o IAM:

  • Adicione um mecanismo de autenticação central para todas as suas APIs.
  • Dimensione a carga usando um balanceador de carga em vários serviços.
  • Adicione novas funcionalidades e correções de bugs a um público de teste antes de uma atualização completa.
  • Forneça aos desenvolvedores internos e externos um portal da web dedicado que documente todas as APIs.
  • Solicitações de cache para reduzir o tempo de resposta e a carga no back-end do sistema.

referências

Webinar

Convidamos você para o webinar “API Management with InterSystems API Management”, que acontecerá no dia 21 de novembro às 10h, horário de Moscou (GMT+00).
O InterSystems API Manager (IAM) é um novo componente da InterSystems IRIS Data Platform que fornece monitoramento, controle e gerenciamento de tráfego de/para APIs web dentro da infraestrutura de TI. No webinar demonstraremos os principais recursos do InterSystems API Management:

  • Ferramentas de monitoramento de tráfego de API.
  • Controles de tráfego de API, incluindo controle de largura de banda, limitação do número de chamadas de API, manutenção de listas de endereços IP permitidos e negados, etc.
  • Ferramentas de configuração de segurança de API.
  • Portal do desenvolvedor para publicação de documentação interativa da API.
  • Ponto único de acesso à API.

O webinar é destinado a arquitetos, desenvolvedores e administradores de sistemas.

O registro é obrigatório!

Fonte: habr.com

Adicionar um comentário