Apresentando o InterSystems API Manager

Lançamos recentemente o InterSystems API Manager (IAM), um novo componente da InterSystems IRIS Data Platform que fornece monitoramento, controle e controle de tráfego de / para a API da Web na infraestrutura de TI.


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


  • Assista à API, entenda quem está usando a API, quais APIs são as mais populares e quais precisam ser aprimoradas
  • Controle quem usa a API e restrinja o uso da API, de simples restrições de acesso a restrições, dependendo da solicitação - você possui controles personalizáveis ​​e pode responder rapidamente a alterações nos padrões de consumo da API.
  • Proteja APIs com mecanismos de segurança centralizados, como OAuth2.0, LDAP ou autenticação de token de chave.
  • Simplifique o trabalho de desenvolvedores de terceiros e ofereça uma excelente experiência com a API, abrindo um portal especial para desenvolvedores.
  • Escale a API e garanta um atraso mínimo na resposta.

O gerenciamento da API é necessário para a transição para a arquitetura SOA ou microsserviço, simplificando a integração entre (micro) serviços individuais, tornando-os acessíveis a todos os consumidores externos e internos. Como resultado, novas APIs estão se tornando mais fáceis de criar, manter e consumir.


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


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


Introdução e instalação


Os clientes do InterSystems IAM podem fazer o download da seção "Software Distribution" no site do WRC e executá-la como um contêiner do Docker. Requisitos mínimos do sistema:



Inicialmente, é necessário fazer o download da imagem do Docker (Importante! O arquivo com o WRC não é uma imagem do Docker, é necessário descompactá-lo, dentro da imagem do Docker):


docker load -i iam_image.tar 

Este comando disponibilizará a imagem do IAM para uso posterior em seu servidor. O IAM funciona como um contêiner separado, para que você possa dimensioná-lo independentemente do InterSystems IRIS. Para executar o IAM, você precisa acessar o InterSystems IRIS para baixar a licença.


Configure o InterSystems IRIS:


  • Ative o aplicativo Web /api/IAM
  • Habilitar usuário do IAM
  • Alterar senha de usuário do IAM

Agora execute o contêiner do IAM. No arquivo, você encontrará scripts iam-setup para Windows e Unix (e Mac). Esses scripts ajudarão a configurar variáveis ​​de ambiente corretamente, permitindo que o contêiner do IAM se conecte ao InterSystems IRIS. Aqui está um exemplo de script 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 do IAM são tudo o que você precisa para começar.


Em vez de executar o script, você pode definir as 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çamento


Agora execute o IAM executando o comando:


 docker-compose up -d 

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


 docker ps 

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



Até agora, está vazio porque é um site completamente novo. Vamos mudar isso. O IAM suporta o conceito de áreas de trabalho para dividir a API em módulos e / ou equipes. Vá para o espaço de trabalho "padrão", que usaremos para nossos experimentos.


Barra de ferramentas da área de trabalho padrão


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


  • Serviço - API, que queremos fornecer acesso aos consumidores. Portanto, a API REST no InterSystems IRIS é um serviço, como, por exemplo, a API do Google, se você quiser usá-lo.
  • A rota decide para qual serviço as solicitações de entrada devem ser redirecionadas. Cada Rota possui um conjunto específico de condições e, se forem atendidas, a solicitação é enviada ao Serviço correspondente. Por exemplo, uma rota pode corresponder a um IP, domínio de um remetente, métodos HTTP, partes de um URI ou uma combinação desses exemplos.

Serviço


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


O campoValorDescrição do produto
nomeírisNome do serviço
hospedeiroIPHost ou IP do servidor IRIS da InterSystems
porta52773Porta da Web do servidor IRIS da InterSystems
caminho/ api / atelierCaminho raiz
protocolohttpProtocolo

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


Rota


Agora vamos criar uma rota:


O campoValorDescrição do produto
caminho/ api / atelierCaminho raiz
protocolohttpProtocolo
service.idguia de 3Serviço (ID da etapa anterior)

Deixe os valores restantes por padrão. Clique no botão Create e anote o ID da rota criada. Por padrão, o IAM escuta solicitações de entrada na porta 8000. Agora, as solicitações enviadas para http://localhost:8000 e iniciando com /api/atelier redirecionadas para o InterSystems IRIS.


Teste


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


Solicitação REST no Postman


Enviaremos uma solicitação GET para http://localhost:8000/api/atelier/ (não esqueça / no final) e obteremos uma resposta do InterSystems IRIS. Cada solicitação passa por um IAM que coleta métricas:


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

Fiz várias outras solicitações (incluindo duas solicitações para terminais inexistentes, como / api / atelier / est /), os resultados são imediatamente visíveis no painel:


Painel com algumas métricas


Trabalhar com plugins


Agora que temos a rota configurada, podemos controlar nossa API. Podemos adicionar recursos que complementam nosso serviço.


A maneira mais comum de alterar o comportamento da API é adicionar um plug-in. Os plug-ins isolam a funcionalidade individual e podem ser conectados ao IAM globalmente e 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 plug-in e a rota, precisamos de um identificador exclusivo (ID) para a rota.


Limite de solicitação


Clique em Plugins no menu na barra lateral esquerda. Você vê todos os plug-ins ativos nessa tela, mas como esse servidor IAM é novo, ainda não há plug-ins ativos. Então, prossiga para a próxima etapa clicando em "Novo plug-in".


O plug-in que precisamos está localizado na categoria "Controle de tráfego" e é chamado de "Limitação de taxa". Escolha. Existem algumas configurações que você pode definir aqui, mas estamos preocupados apenas com dois campos:


O campoValorDescrição do produto
route_idIDID da rota
config.minute5Número de solicitações por minuto

Isso é tudo. O plug-in está configurado e ativo. Observo que podemos escolher diferentes intervalos de tempo, como minutos, horas ou dia. As configurações podem ser combinadas (por exemplo, 1000 solicitações por hora e ao mesmo tempo 100 solicitações por minuto). Eu escolhi os minutos, pois isso facilita a verificação do plug-in.


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


  • XRateLimit-Limit-minute: 5
  • XRateLimit-Resting-minute: 4

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


Limite de velocidade


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


API excedida


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


Esse é um mecanismo conveniente que permite:


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

Você pode definir valores para diferentes intervalos de tempo e, assim, suavizar o tráfego da API por um determinado período de tempo. Suponha que você permita 600 solicitações por hora em uma rota específica. Há uma média de 10 solicitações por minuto. Mas nada impede que o cliente conclua todas as 600 solicitações no primeiro minuto da hora. Talvez seja isso que você precisa. Convém obter uma carga mais uniforme em uma hora. Ao definir o valor do campo config.minute como 20, você garante que seus usuários não façam mais que 20 solicitações por minuto e 600 solicitações por hora. Isso permite pequenos saltos no intervalo de minutos, em comparação com um fluxo totalmente médio 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 consultas. Os clientes receberão cabeçalhos adicionais para cada intervalo de tempo, por exemplo:


Cabeçalho HTTPValor
X-RateLimit-Limit-hour600
Hora restante de X-RateLimit595
X-RateLimit-Limit-minute20
X-RateLimit-Restante-minuto16

Obviamente, existem muitas maneiras diferentes de personalizar os limites de consulta, dependendo do que você deseja alcançar.


Conclusões


Termino com isso, acho que o material é suficiente para o primeiro artigo sobre o InterSystems API Manager. Usamos apenas um dos mais de 40 plugins. Você pode fazer muitas coisas mais interessantes com o IAM:


  • Adicione um mecanismo de autenticação central para todas as suas APIs.
  • Escale a carga usando o balanceador para vários serviços.
  • Adicione novas funcionalidades e correções de erros ao público-teste antes de uma atualização completa.
  • Forneça aos desenvolvedores internos e externos um portal da web dedicado, documentando todas as APIs.
  • Solicitações de cache para reduzir a latência de resposta e reduzir a carga de back-end do sistema.

Referências


Source: https://habr.com/ru/post/pt475670/


All Articles