Warum wird die Aggregation in den meisten API-Gateway-Lösungen nicht unterstützt?

15

Wenn Sie sich mit API Gateway befassen, ist eines der Dinge, die jedes Mal auftauchen, dass API Gateway ein Ort ist, an dem Sie Ergebnisse von mehreren Endpunkten zusammenfassen sollten. Das hört sich sehr schön an. Viele gängige API-Gateway-Lösungen wie AWS API Gateway, Kongo und Netflix Zuul unterstützen diese Funktion jedoch nicht. Sie müssen es hacken oder selbst einen benutzerdefinierten Filter implementieren.

Wird die Aggregation als schlechte Praxis angesehen? Wie können Personen Ergebnisse von mehreren Endpunkten zurückgeben?

Mond
quelle

Antworten:

10

Diese Frage kann auf verschiedene Arten beantwortet werden:

Aggregation von Endpunkten

API-Gateways aggregieren meist andere Endpunkte, nicht unbedingt deren Ergebnisse. Das heißt, es handelt sich um einen einzelnen Server, der möglicherweise andere Endpunkte mit zusätzlichen Funktionen wie Authentifizierung oder Routing spiegelt.

Es geht darum, einige Dienste zu zentralisieren, die eigentlichen Server vor dem externen Netzwerk zu verstecken usw.

Zusammenfassung der Ergebnisse

Wenn Sie wirklich Geschäftslogik auf dem Gateway haben möchten, verschiedene Dokumente zu einem anderen Dokument zusammenführen oder einfach nur Anforderungen oder Antworten ändern möchten, sollten Sie sich einen Enterprise Service Bus ansehen .

Ob die Aggregation gut ist

Dies ist natürlich umstritten und hängt von den individuellen Meinungen ab. Man könnte argumentieren, dass es einen Grund gibt, warum wir uns (größtenteils) von SOA / ESB-Lösungen verabschiedet haben. Dies könnte daran liegen, dass die individuellen Verantwortlichkeiten unklar waren und sich tendenziell auf der ESB-Seite ansammelten und die Endpunkte "dumm" blieben. Letztendlich weiß der ESB alles.

Der "REST" -Ansatz ist anders. Es baut auf "intelligenten" Endpunkten auf, kennt deren Teil und stellt sicher, dass keine anderen Komponenten die Details kennen müssen. Diese Idee an sich scheint im Widerspruch dazu zu stehen, dass das Gateway mehr über die Antworten weiß .

In der Tat gibt es einige Architekturideen wie in sich geschlossene Systeme , die auf der Idee aufbauen, dass jede Funktion, die Ihr Client benötigen würde , vollständig von einem bestimmten Endpunkt abgedeckt werden sollte . Sie sollte keine synchrone Kommunikation mit anderen benötigen, um eine Anforderung in ihrem eigenen Verantwortungsbereich zu erfüllen. Dies lässt auch darauf schließen, dass die Aggregation von Ergebnissen kontraproduktiv sein könnte.

Wie immer kommt es auf die genauen Anforderungen an.

Robert Bräutigam
quelle