Pourquoi «l'agrégation» n'est-elle pas prise en charge dans la plupart des solutions API Gateway?

16

Lors de la lecture d'API Gateway, l'une des choses qui revient à chaque fois est que API Gateway est un endroit où vous devez agréger les résultats de plusieurs points de terminaison. Cela semble vraiment sympa. Cependant, de nombreuses solutions API Gateway populaires telles que AWS API Gateway, Kongo et Netflix Zuul ne prennent pas en charge cette fonctionnalité. Vous devez le pirater ou implémenter vous-même un filtre personnalisé.

L'agrégation est-elle considérée comme une mauvaise pratique? Comment les personnes retournent-elles le résultat de plusieurs points de terminaison?

Lune
la source

Réponses:

11

Il existe plusieurs façons de répondre à cette question:

Agrégation de points de terminaison

Les passerelles API regroupent principalement d'autres points de terminaison, pas nécessairement leurs résultats. Autrement dit, il s'agit d'un serveur unique qui pourrait refléter d'autres points de terminaison avec des fonctionnalités supplémentaires, telles que l'authentification ou le routage.

Le but est de centraliser certains services, de cacher les serveurs réels du réseau extérieur, etc.

Agrégation des résultats

Si vous voulez vraiment avoir une logique métier sur la passerelle, rassembler différents documents dans un autre document, ou simplement modifier des demandes ou des réponses, vous cherchez peut-être un bus de service d'entreprise .

Si l'agrégation est bonne

Ceci est bien sûr discutable et dépend des opinions individuelles. On pourrait faire valoir qu'il y a une raison pour laquelle nous nous sommes (principalement) éloignés des solutions de type SOA / ESB. Cette raison pourrait être due au fait que les responsabilités individuelles n'étaient pas claires et auraient tendance à s'accumuler du côté des ESB, laissant les points d'extrémité "muets". Finalement, l'ESB sait tout.

L'approche "REST" est différente. Il s'appuie sur des points de terminaison «intelligents», connaissant leur rôle et s'assurant qu'aucun autre composant n'a besoin de connaître les détails. Cette idée en soi semble être en conflit avec le fait d'en savoir plus sur les réponses .

En effet, il existe certaines idées d'architecture, comme les systèmes autonomes , qui s'appuient sur l'idée que toute fonction dont votre client aurait besoin devrait être entièrement couverte par un point de terminaison donné. Il ne devrait pas avoir besoin d'une communication synchrone avec les autres pour répondre à une demande dans son propre domaine de responsabilité. Cela suggère également que l'agrégation des résultats pourrait être contre-productive.

Comme toujours, tout dépend des exigences exactes.

Robert Bräutigam
la source