Présentation d'InterSystems API Manager

Nous avons récemment publié InterSystems API Manager (IAM), un nouveau composant de la plate-forme de données InterSystems IRIS qui assure la surveillance, le contrÎle et le contrÎle du trafic vers / depuis l'API Web au sein de l'infrastructure informatique.


Dans cet article, je vais vous montrer comment configurer IAM et démontrer certaines des nombreuses fonctionnalités qui sont disponibles avec IAM. InterSystems API Manager vous permet de:


  • Regardez l'API, comprenez qui utilise l'API, quelles API sont les plus populaires et lesquelles doivent ĂȘtre amĂ©liorĂ©es.
  • ContrĂŽlez qui utilise l'API et limitez l'utilisation de l'API des restrictions d'accĂšs simples aux restrictions en fonction de la demande - vous disposez de contrĂŽles personnalisables et vous pouvez rĂ©pondre rapidement aux changements dans les modĂšles de consommation d'API.
  • ProtĂ©gez les API avec des mĂ©canismes de sĂ©curitĂ© centralisĂ©s tels que OAuth2.0, LDAP ou l'authentification par jeton de clĂ©.
  • Simplifiez le travail des dĂ©veloppeurs tiers et offrez-leur une excellente expĂ©rience avec l'API en ouvrant un portail spĂ©cial pour les dĂ©veloppeurs.
  • Faites Ă©voluer l'API et garantissez un dĂ©lai de rĂ©ponse minimal.

La gestion de l'API est nécessaire pour la transition vers l'architecture SOA ou microservice, simplifiant l'intégration entre les (micro) services individuels, les rendant accessibles à tous les consommateurs externes et internes. En conséquence, les nouvelles API deviennent plus faciles à créer, à maintenir et à consommer.


Si vous utilisez déjà InterSystems IRIS, vous pouvez ajouter l'option IAM à votre licence. L'option IAM est gratuite pour les clients InterSystems IRIS, mais pour commencer à utiliser IAM, vous devez demander une nouvelle clé de licence à InterSystems.


Si vous n'utilisez pas déjà InterSystems IRIS et que vous prévoyez uniquement d'essayer le gestionnaire d'API InterSystems, contactez InterSystems.


Prise en main et installation


Les clients InterSystems IAM peuvent télécharger la section "Distribution de logiciels" à partir du site WRC et l'exécuter en tant que conteneur Docker. Configuration minimale requise:



Au départ, vous devez télécharger l'image Docker (Important! L'archive avec le WRC n'est pas une image Docker, vous devez la décompresser, à l'intérieur de l'image Docker):


docker load -i iam_image.tar 

Cette commande rendra l'image IAM disponible pour une utilisation ultérieure sur votre serveur. IAM fonctionne comme un conteneur séparé, vous pouvez donc le faire évoluer indépendamment d'InterSystems IRIS. Le lancement d'IAM nécessite l'accÚs à InterSystems IRIS pour télécharger la licence.


Configurez InterSystems IRIS:


  • Activez l'application web /api/IAM
  • Activer l'utilisateur IAM
  • Modifier le mot de passe utilisateur IAM

Exécutez maintenant le conteneur IAM. Dans l'archive, vous trouverez iam-setup scripts de iam-setup pour Windows et Unix (et Mac). Ces scripts vous aideront à configurer correctement les variables d'environnement, permettant au conteneur IAM de se connecter à InterSystems IRIS. Voici un exemple de script sur 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 

Comme vous pouvez le voir, le nom complet de l'image, l'adresse IP, le port IRIS InterSystems et le mot de passe de l'utilisateur IAM sont tout ce dont vous avez besoin pour commencer.


Au lieu d'exécuter le script, vous pouvez définir les variables d'environnement manuellement:


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

Lancement


Exécutez maintenant IAM en exécutant la commande:


 docker-compose up -d 

Cette commande organise les conteneurs IAM et garantit que tout est démarré correctement. L'état des conteneurs est vérifié à l'aide de la commande:


 docker ps 

Ouvrez l'interface d'administration localhost:8002 dans un navigateur.



Jusqu'à présent, il est vide car il s'agit d'un tout nouveau site. Changeons-le. IAM prend en charge le concept d'espaces de travail pour diviser l'API en modules et / ou équipes. Accédez à l'espace de travail "par défaut" que nous utiliserons pour nos expérimentations.


Barre d'outils de l'espace de travail par défaut


Le nombre de demandes pour cet espace de travail est toujours nul, mais vous aurez une idée des concepts de base d'IAM dans le menu de gauche. Les deux premiers éléments: les services et les itinéraires sont les plus importants:


  • Service - API, que nous voulons donner accĂšs aux consommateurs. Ainsi, l'API REST dans InterSystems IRIS est un service, comme, par exemple, l'API Google, si vous souhaitez l'utiliser.
  • La route dĂ©cide vers quel service les demandes entrantes doivent ĂȘtre redirigĂ©es. Chaque Route a un ensemble spĂ©cifique de conditions, et si elles sont remplies, la demande est envoyĂ©e au Service correspondant. Par exemple, une Route peut correspondre Ă  une IP, un domaine d'expĂ©diteur, des mĂ©thodes HTTP, des parties d'un URI ou une combinaison de ces exemples.

Le service


Créons le service IRIS InterSystems, avec les valeurs suivantes:


Le terrainValeurLa description
nomirisNom du service
hĂŽteIPHĂŽte ou IP du serveur IRIS InterSystems
port52773Port Web du serveur IRIS InterSystems
chemin/ api / atelierChemin racine
protocolehttpProtocole

Laissez les valeurs restantes par défaut. Cliquez sur le bouton Create et notez l'ID du service créé.


Parcours


Créons maintenant un itinéraire:


Le terrainValeurLa description
chemin/ api / atelierChemin racine
protocolehttpProtocole
service.idguid de 3Service (ID de l'étape précédente)

Laissez les valeurs restantes par défaut. Cliquez sur le bouton Create et notez l'ID de l'itinéraire créé. Par défaut, IAM écoute les demandes entrantes sur le port 8000. Les demandes envoyées à http://localhost:8000 et commençant par /api/atelier désormais redirigées vers InterSystems IRIS.


Test


Essayons de crĂ©er une requĂȘte dans un client REST (j'utilise Postman ).


Demande REST dans Postman


Nous enverrons une demande GET à http://localhost:8000/api/atelier/ (n'oubliez pas / à la fin) et nous obtiendrons une réponse d'InterSystems IRIS. Chaque demande passe par un IAM qui collecte des métriques:


  • Code d'Ă©tat HTTP.
  • Retard
  • Surveillance (si configurĂ©e).

J'ai fait quelques demandes supplémentaires (dont deux demandes de points de terminaison inexistants, comme / api / atelier / est /), les résultats sont immédiatement visibles sur le tableau de bord:


Tableau de bord avec quelques métriques


Travailler avec des plugins


Maintenant que nous avons configuré la Route, nous pouvons contrÎler notre API. Nous pouvons ajouter des fonctionnalités qui complÚtent notre service.


La façon la plus courante de modifier le comportement de l'API consiste Ă  ajouter un plugin. Les plugins isolent les fonctionnalitĂ©s individuelles et peuvent ĂȘtre connectĂ©s Ă  l'IAM Ă  la fois globalement et uniquement Ă  des entitĂ©s individuelles, telles que l'utilisateur (groupe d'utilisateurs), le service ou la route. Nous allons commencer par ajouter le plugin "Rate Limiting" Ă  la Route. Pour Ă©tablir une connexion entre le plug-in et l'itinĂ©raire, nous avons besoin d'un identifiant unique (ID) pour l'itinĂ©raire.


Limite de demande


Cliquez sur Plugins dans le menu de la barre latérale gauche. Vous voyez tous les plugins actifs sur cet écran, mais comme ce serveur IAM est nouveau, il n'y a pas encore de plugins actifs. Passez donc à l'étape suivante en cliquant sur "Nouveau plugin".


Le plugin dont nous avons besoin se trouve dans la catégorie "Traffic Control" et s'appelle "Rate Limiting". Choisissez-le. Il existe de nombreux paramÚtres que vous pouvez définir ici, mais nous ne nous intéressons qu'à deux champs:


Le terrainValeurLa description
route_idIdentifiantID de l'itinéraire
config.minute5Nombre de demandes par minute

C’est tout. Le plugin est configurĂ© et actif. Je note que nous pouvons choisir diffĂ©rents intervalles de temps, tels que la minute, l'heure ou le jour. Les paramĂštres peuvent ĂȘtre combinĂ©s (par exemple, 1000 demandes par heure et en mĂȘme temps 100 demandes par minute). J'ai choisi les minutes, car cela facilite la vĂ©rification du plugin.


Si vous envoyez Ă  nouveau la mĂȘme demande Ă  Postman, vous verrez que la rĂ©ponse est retournĂ©e avec 2 en-tĂȘtes supplĂ©mentaires:


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

Cela indique au client qu'il peut faire jusqu'à 5 demandes par minute et dans l'intervalle de temps actuel, il peut faire 4 demandes supplémentaires.


Limite de vitesse


Si vous faites la mĂȘme demande encore et encore, Ă  la fin, vous manquerez de quota disponible et Ă  la place, vous recevrez un code d'Ă©tat HTTP 429 avec le corps de rĂ©ponse suivant:


API Exceed


Attendez une minute et vous pourrez de nouveau envoyer des demandes.


Il s'agit d'un mécanisme pratique qui vous permet de:


  • ProtĂ©gez le backend des surcharges.
  • Dites aux clients combien de demandes ils peuvent faire.
  • MonĂ©tiser l'API.

Vous pouvez dĂ©finir des valeurs pour diffĂ©rents intervalles de temps et ainsi lisser le trafic API pendant une certaine pĂ©riode de temps. Supposons que vous autorisez 600 demandes par heure sur un itinĂ©raire spĂ©cifique. Il y a en moyenne 10 demandes par minute. Mais rien n'empĂȘche le client de rĂ©pondre aux 600 demandes dans la premiĂšre minute de l'heure. C'est peut-ĂȘtre ce dont vous avez besoin. Vous voudrez peut-ĂȘtre obtenir une charge plus uniforme en une heure. En dĂ©finissant la valeur du champ config.minute sur 20, vous garantissez que vos utilisateurs ne font pas plus de 20 requĂȘtes par minute et 600 requĂȘtes par heure. Cela permet de petits sauts dans l'intervalle de minutes par rapport Ă  un flux entiĂšrement moyen de 10 demandes par minute, mais les utilisateurs ne peuvent pas utiliser le quota horaire pendant une minute. Maintenant, ils auront besoin d'au moins 30 minutes pour utiliser toutes leurs requĂȘtes. Les clients recevront des en-tĂȘtes supplĂ©mentaires pour chaque intervalle de temps donnĂ©, par exemple:


En-tĂȘte HTTPValeur
X-RateLimit-Limit-hour600
X-RateLimit-Remaining-hour595
X-RateLimit-Limit-minute20
X-RateLimit-Remaining-minute16

Bien sĂ»r, il existe de nombreuses façons de personnaliser les limites de requĂȘte en fonction de ce que vous souhaitez rĂ©aliser.


Conclusions


Je vais terminer avec cela, je pense que le matériel est assez suffisant pour le premier article sur le gestionnaire d'API InterSystems. Nous n'avons utilisé qu'un seul parmi plus de 40 plugins. Vous pouvez faire beaucoup plus de choses intéressantes avec IAM:


  • Ajoutez un mĂ©canisme d'authentification central pour toutes vos API.
  • Faites Ă©voluer la charge Ă  l'aide de l'Ă©quilibreur sur plusieurs services.
  • Ajoutez de nouvelles fonctionnalitĂ©s et des corrections de bugs pour le public de test avant une mise Ă  niveau complĂšte.
  • Fournir aux dĂ©veloppeurs internes et externes un portail Web dĂ©diĂ© documentant toutes les API.
  • Cachez les demandes pour rĂ©duire la latence des rĂ©ponses et rĂ©duire la charge du systĂšme principal.

Les références


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


All Articles