Article
· Juin 18, 2022 5m de lecture

Utilisation d'InterSystems API Management pour équilibrer la charge d'une API

InterSystems API Management (IAM) - c'est une nouvelle fonctionnalité de la plate-forme de données InterSystems IRIS, qui vous permet de surveiller, de contrôler et de gérer le trafic vers et à partir des API basées sur le Web au sein de votre infrastructure informatique. Au cas où vous l'auriez manqué, voici le lien vers l'annonce. Et voici un article expliquant comment commencer à travailler avec IAM.

Dans cet article, nous allons utiliser InterSystems API Management pour assurer l'équilibrage de charge d'une API.

Dans notre cas, nous avons 2 instances InterSystems IRIS avec /api/atelier REST API que nous voulons publier pour nos clients.

Il y a de nombreuses raisons différentes pour lesquelles nous pourrions vouloir faire cela, par exemple :

  • Équilibrage de la charge pour répartir la charge de travail entre les serveurs.
  • Déploiement bleu-vert : nous avons deux serveurs, l'un "prod", l'autre "dev" et nous pouvons vouloir passer de l'un à l'autre.
  • Déploiement canary: nous pourrions publier la nouvelle version sur un seul serveur et y transférer 1% des clients.
  • Configuration de haute disponibilité
  • etc.

Pourtant, les mesures que nous devons prendre sont assez similaires.

Conditions préalables

  • 2 instances InterSystems IRIS
  • L'instance InterSystems API Managemen
     

Allons-y

Voici ce que nous devons faire :

1. Créer un flux ascendant.

Un flux ascendant représente un nom d'hôte virtuel et peut être utilisé pour équilibrer la charge des demandes entrantes sur plusieurs services (cibles). Par exemple, un flux ascendant nommé service.v1.xyz recevrait des demandes pour un service dont l'hôte est service.v1.xyz. Les requêtes pour ce service seront envoyées par procuration aux cibles définies dans l'amont.

Un flux ascendant comprend également un vérificateur de santé, qui peut activer et désactiver les cibles en fonction de leur capacité ou de leur incapacité à répondre aux demandes.

Pour commencer :

  • Ouvrir le portail d'administration IAM
  • Allez dans Workspaces
  • Choisissez votre espace de travail
  • Ouvrez les flux ascendants (Upstreams)
  • Cliquez sur le bouton "New Upstream"

Après avoir cliqué sur le bouton "New Upstream", vous verrez apparaître un formulaire où vous pourrez saisir quelques informations de base sur le flux ascendant (il y a beaucoup d'autres propriétés) :

Saisissez nom - il s'agit d'un nom d'hôte virtuel que nos services utiliseraient. Il n'est pas lié aux enregistrements DNS. Je recommande de lui attribuer une valeur inexistante pour éviter toute confusion. Si vous voulez en savoir plus sur les autres propriétés, consultez la documentation. Sur la capture d'écran, vous pouvez voir que j'ai nommé de manière imaginative le nouveau flux ascendant comme myupstream.
 

2. Créer des cibles.

Les cibles sont des serveurs backend qui exécutent les requêtes et renvoient les résultats au client. Allez dans Upstreams et cliquez sur le nom du flux ascendant que vous venez de créer (et NON sur le bouton de mise à jour) :

Vous verrez toutes les cibles existantes (aucune jusqu'à présent) et le bouton "Nouvelle cible". Cliquez dessus :

Ensuite, définissez une cible dans le nouveau formulaire. Seuls deux paramètres sont disponibles :

  • cible - hôte et port du serveur backend
  • Pondération - priorité relative donnée à ce serveur (plus de pondération - plus de demandes sont envoyées à cette cible)

J'ai ajouté deux cibles :


 

3. Créer un service

A présent que nous avons notre flux ascendant, nous devons lui envoyer des requêtes.  Pour cela, nous utilisons Service.
Les entités Service, comme leur nom l'indique, sont des abstractions de chacun de vos services en amont. Des exemples de services seraient un microservice de transformation des données,
une API de facturation, etc.
Nous allons créer un service ciblant notre instance IRIS, allez dans Services et cliquez sur le bouton "Nouveau service" :

Définissez les valeurs suivantes :

champ valeur description
nom myservice nom logique de ce service
hôte myupstream nom en amont
chemin /api/atelier chemin d'accès associé à une racine que nous voulons servir
protocole http les protocoles que nous voulons supporter

 

Conservez les valeurs par défaut pour tout le reste (y compris le port : 80).

Après avoir créé le service, vous le verrez dans une liste de services. Copiez l'ID du service quelque part, nous en aurons besoin plus tard.


 

4. Créer un itinéraire

Les Itinéraires définissent les règles permettant de répondre aux demandes des clients. Chaque Itinéraire est associé à un Service, et un Service peut avoir plusieurs Itinéraires associés. Chaque demande correspondant à un Itinéraire donné sera transmise par proxy au Service qui lui est associé.

La combinaison des Itinéraires et des Services (et la séparation des préoccupations entre eux) offre un mécanisme de routage puissant avec lequel il est possible de définir des points d'entrée très fins dans l'IAM menant à différents services en amont de votre infrastructure.

Maintenant, créons un itinéraire. Allez dans le menu Routes et appuyez sur le bouton "New Route".

Définissez les valeurs dans le formulaire de création de l'Itinéraire :

champ valeur description
lien /api/atelier lien racine que nous voulons servir
protocole http les protocoles que nous voulons supporter
service.id guid de 3 valeur de l'identifiant du service (guide de l'étape précédente)

 

Et c'est fini !

Envoyez une requête à http://localhost:8000/api/atelier/ (notez la barre oblique à la fin) et elle sera servie par l'un de nos deux backends.
 

Conclusion

IAM offre une infrastructure de gestion des API hautement personnalisable, permettant aux développeurs et aux administrateurs de prendre le contrôle de leurs API.
 

Liens

 

Question

Quelle fonctionnalité souhaitez-vous voir configurée avec IAM ?

Discussion (0)3
Connectez-vous ou inscrivez-vous pour continuer