API-Gateway: Backend für Frontend
Lassen Sie uns erörtern, was ein API-Gateway ist, warum es wichtig ist, eines zu haben, und wie es APIs besser verwalten kann. Wir werden auch einige der besten Open-Source- und verwalteten API-Gateways auf dem Markt untersuchen und auflisten.
Was ist ein API-Gateway?
Eine API-Gateway ist ein wichtiges Konzept in einer Microservices-Architektur. Es bildet einen Einstiegspunkt für externe Clients (alles, was nicht Teil des Microservice-Systems ist). Es ist eine Komponente, die als Einstiegspunkt für eine Anwendung dient.
Mit anderen Worten: Ein API-Gateway ist ein API-Verwaltungsserver, der über Informationen zu Endpunkten verfügt. Er kann auch Authentifizierung, Ratenbegrenzung, Lastausgleich und mehr durchführen.
Um ein besseres Bild von einem API-Gateway zu bekommen, müssen wir wissen, warum ein API-Gateway unerlässlich ist.
Warum brauchen wir ein API-Gateway?
Um die Notwendigkeit eines API-Gateways zu verstehen, lassen Sie uns einen Anwendungsfall einer e-commerce Anwendung.
Fallstudie
Betrachten wir eine Fallstudie einer komplexen Seite (z. B. einer Produktseite) einer E-Commerce-Anwendung. Wenn wir uns die unten stehende Seite des Amazon-Produktangebots ansehen, können wir sehen, dass eine Menge Informationen von dieser speziellen Seite wiedergegeben werden müssen.

Zur Veranschaulichung listen wir alle Microservices auf, die wir zum Rendern der oben genannten Seite benötigen.
Erwägen Sie Produktsuche, Inventar, Versand, Bewertung und Rezensionen, Empfehlungsmaschine, Händler sowie Finanzen und Versicherung sind die verschiedenen sieben (7) Microservices, die für das Rendering der obigen Seite verwendet werden.
P.S: Die oben genannten sieben (7) Microservices sind nur eine Annahme, um das Konzept des API-Gateways zu erklären. In Wirklichkeit könnte Amazon eine andere Anzahl von Microservices haben.
Das Problem
Da diese Mikrodienste separat auf einem anderen Server bereitgestellt wurden, müssen mindestens sieben (7) Aufrufe für eine einzige Seite erfolgen, wenn ein Client auf diese Dienste zugreifen möchte.

Aber ist das wirklich ein guter Ansatz?
Ich glaube nicht, dass dies ein empfehlenswerter Ansatz ist, da wir sieben verschiedene Aufrufe machen müssen, was sich definitiv auf die Leistung, den Ressourcenverbrauch, die Ladezeit usw. auswirken würde. Der Client ist außerdem eng mit allen Diensten gekoppelt, und wenn wir die Rezensionen und Bewertungen Microservices in zwei verschiedenen Diensten zu verwenden, müssen wir den Client-Code aktualisieren. Der Client muss einen Aufruf tätigen, um Bewertungen zu erhalten, und einen Aufruf, um Bewertungen zu erhalten, was wirklich nicht der beste Weg ist, damit umzugehen.
Die Lösung
Welche Vorgehensweise wird also empfohlen?
Es ist ein API-Gateway.
Bei diesem Ansatz gibt es eine Schicht zwischen dem Client und den Microservices, die als API-Gateway bezeichnet wird. Es ist ein Front-Facing-Service für alle Microservices. Wenn nun ein Client auf die Microservices zugreifen möchte, muss er das API-Gateway aufrufen. Das API-Gateway wiederum ruft alle Microservices an und erhält die Antwort, die wir eventuell benötigen. Dieser Prozess wird als API-Komposition bezeichnet.
Kurz gesagt: Ein API-Gateway befindet sich zwischen dem Client und den Microservices und fungiert als Gateway für alle Microservices.
Die Verwendung eines API-Gateways bringt uns in vielerlei Hinsicht Vorteile.
Vorteile eines API-Gateways
API-Gateways helfen uns bei der Implementierung von A/B-Tests, Caching, der Verwaltung von Zugriffskontingenten, der Überwachung des API-Status und der API-Versionierung, Chaos-Affentests, Monetarisierung und vieles mehr. Lassen Sie uns auf einige der folgenden Vorteile eingehen.
Sicherheit 🛡️
Bei jedem API-Aufruf muss der Zugriff auf die Dienste über öffentliche IP-Adressen erfolgen. Dies birgt Risiken.

Durch die Einschaltung von API-Gateways kann auf diese Microservices nur über private IP-Adressen zugegriffen werden. Dies führt zu einer sichereren Art der Datentransaktion. Darüber hinaus schützt die Verwendung von API-Gateways die Daten auch vor bösartigen und DDoS-Angriffen.
Um die Sicherheit zu gewährleisten, muss ein TLS-Zertifikat notwendig ist, kümmert sich API Gateway um alle, indem es alle unsere APIs hinter einer einzigen statischen IP oder Domäne hält und sie mit Schlüsseln, Token und IP-Filterung schützt.
Authentifizierung, Autorisierung und Fehlertoleranz 🔐

Es ist wichtig, die Authentifizierung und Autorisierung des Benutzers, der sich bei Anwendungen anmeldet, sicherzustellen. Das API-Gateway erleichtert dies, indem es einen einzigen Einstiegspunkt darstellt und alle Anforderungen problemlos erfüllt. So erlaubt es nur autorisierten Benutzern, sich anzumelden, und authentifizierten Benutzern, Änderungen vorzunehmen, wodurch Fehlertoleranz erreicht wird.
Lastverteilung und Routing 🚏.
Wenn mehrere Anfragen eingehen und der Datenverkehr zunimmt, hilft das API-Gateway bei der Bewältigung dieser Aufgabe. Dies geschieht durch die Erstellung einer Vielzahl von Diensten und deren Aufruf auf wie Ringelrübe. Es kann die Client-Anfragen auf der Grundlage der Benutzersegmentierung verwalten und weiterleiten. Auf diese Weise wird für verschiedene Nutzer eine unterschiedliche Qualität oder Geschwindigkeit der Inhalte bereitgestellt.

Betrachten wir einen Anwendungsfall, in dem zwei Microservices für die Rückgabe von Bildern/Videos in niedriger Qualität und von Bildern/Videos in hoher Qualität für einen Desktop bzw. ein Mobiltelefon definiert sind.
In diesem Fall können wir ein API-Gateway so konfigurieren, dass es als Router fungiert und bei einer Anfrage von einem Mobiltelefon die Anfrage an den Bilder-/Videodienst mit niedriger Qualität weiterleitet, während es bei einer Anfrage von einem Desktop-PC den Bilder-/Videodienst mit hoher Qualität weiterleiten kann. Diese Weiterleitung kann auf der Grundlage von Kopfzeilen, Pfaden, Parametern usw. erfolgen.
Isolierung
Wenn ein oder mehrere Microservices zur Anwendung hinzugefügt oder entfernt wurden, wird der Client-Code nicht aktualisiert. In diesem Fall müssen wir einige Änderungen am API-Gateway selbst vornehmen, um einen Aufruf entsprechend den aktualisierten Microservices zu tätigen.
Umgekehrter Proxy und Caching
Die Bereitstellung einer statischen Datei (HTML, JS, CSS, Schriftarten) durch einen Microservice ist nicht die beste Lösung. In diesem Fall können wir diese Dateien zum API-Gateway verschieben.
Ein API-Gateway kann alle statischen Inhalte aufbewahren und den Kunden direkt bedienen. Ähnlich verhält es sich mit einem Dienst, der die Trends von Produkten auswertet, und diese Trends werden stündlich oder täglich berechnet. Sobald der Trend also für den Rest der Zeit berechnet ist, wird der Dienst wiederholt dieselbe Antwort zurückgeben. In diesem Fall verfügt ein API-Gateway über eine Funktion namens Antwort-Cache, wo wir eine URL und eine Schwellenzeit angeben können, für die die Antworten zwischengespeichert werden sollen.
Protokoll-Adapter
Wenn wir die Vorteile eines Protokolls wie Web-Socket oder einer neueren Version von HTTP nutzen wollen, d.h., HTTP/2Und selbst wenn unsere Backend-Dienste nicht bereit oder nicht kompatibel mit HTTP/2 oder Web-Socket sind, kann ein API-Gateway die Verantwortung für die Konvertierung eines neueren in ein älteres Protokoll übernehmen. Es kann als Protokolladapter fungieren.

Schauen wir uns das API-Gateway an.
Erste, Open-Source ❤️ und selbst gehostete Lösungen.
Kong Gateway
Kong Gateway ist das beliebteste Open-Source-Cloud-native API-Gateway, das auf einem leichtgewichtigen Proxy basiert. Es ist geschrieben in Lua die mit Hilfe von Nginx. Es handelt sich um eine Template-Engine, die dazu beiträgt, die Ereigniszeit zu beschleunigen. Sie garantiert eine unvergleichliche Latenzleistung und Skalierbarkeit für alle unsere Microservice-Anwendungen, unabhängig davon, wo sie ausgeführt werden.

Unternehmen wie Nasdaq, Honeywell, Cisco, FAB, Expedia, Samsung, Siemens, und Yahoo Japan das Kong-API-Gateway ausgiebig nutzen.
Kong bietet unter anderem folgende Funktionen:
- Authentifizierung
- Verkehrskontrolle
- Analytik
- Verwandlungen
- Protokollierung
- Serverlos
- Erweiterbar durch Plugin-Architektur
Kong wurde sehr gut Dokumentation und Integration.
Sie können Kong auf Ihrem bevorzugten Cloud-Plattform.
Apache APISIX
Apache APISIX wurde ursprünglich von der chinesischen Firma ZhiLiu Technology entwickelt und später in den Apache-Inkubator aufgenommen und als Open-Source-Projekt veröffentlicht. Der Vizepräsident des Projekts, Ming Wenerklärt, dass dieses API-Gateway verschiedene Herausforderungen löst, die durch Cloud-Native und Microservices entstehen.
Apache ApiSix wird verwendet von Unternehmen wie 360, HelloTalk, NetEase, TravelSkyund viele mehr.

Der Apache APISIX basiert auf Nginx und etcd, und verfügt über dynamisches Routing und Plug-in-Hotloading, was sich besonders für die API-Verwaltung im Rahmen des Microservice-Systems eignet.
Tyk
Tyk ist ein unternehmenstaugliches Open-Source-API-Gateway. Sie haben die Möglichkeit, entweder selbst gehostet oder verwaltet zu werden.

Im Folgenden finden Sie einige der von TYK angebotenen Standardfunktionen.
- Authentifizierung
- Kontingente und Ratenbegrenzung
- Versionskontrolle
- Benachrichtigungen und Ereignisse
- Mock-out APIs
- Detaillierte Überwachung und Analyse
- Abwärtskompatibilität wird angestrebt
- GraphQL sofort einsatzbereit
TYK ist auch im Internet verfügbar AWS-Marktplatz. Eine gute Wahl, wenn Ihr Anwendungsstack auf AWS läuft.
Ozelot
Ozelot ist ein .NET-API-Gateway.
Dieses Projekt zielt darauf ab, .NET zu verwenden, Microservices oder serviceorientierte Architekturen auszuführen, die einen einheitlichen Einstiegspunkt in ihr System benötigen. Es wird jedoch mit allem funktionieren, was HTTP spricht und auf jeder Plattform laufen, die ASP.NET Core unterstützt.

Ocelot agiert als Middleware in einer bestimmten Reihenfolge. Es versetzt das HttpRequest-Objekt in einen durch seine Konfiguration festgelegten Zustand, bis es eine Request-Builder-Middleware erreicht. Sie erstellt ein HttpRequestMessage-Objekt, das zur Anforderung eines nachgelagerten Dienstes verwendet wird. Die Middleware, die die Anfrage stellt, ist das letzte Element in der Ocelot-Pipeline. Sie ruft nicht die nächste Middleware auf. Ein Middleware-Teil bildet die HttpResponseMessage auf das HttpResponse-Objekt ab und wird an den Client zurückgegeben.
Ocelot bietet Standardfunktionen wie Routing, Authentifizierung, Ratenbegrenzung, Caching, Lastausgleich und mehr. Es bietet keine Unterstützung für Chunked Encoding, Forwarding a host header und Swagger.
Goku
Goku API-Gateway ist ein Dachprojekt von EOLINK Inc. Es handelt sich um ein Golang-basiertes Microservice-Gateway, das dynamisches Hochleistungs-Routing, Service-Orchestrierung, Multi-Tenancy-Management, API-Zugriffskontrolle usw. ermöglicht.

Goku bietet eine grafische Oberfläche und ein Plug-in-System, um die Konfiguration zu vereinfachen und bequemer zu erweitern. Neben den Standardfunktionen bietet Goku Clustering, Hot Updates, Alarmierung, Protokollierung usw.
Express-Gateway
Express-Gateway ist aufgebaut auf Express.js. Express Gateway ist ein Bündel von Komponenten, die deklarativ um Express herum aufgebaut sind, um den Anwendungsfall API Gateway zu erfüllen. Die Leistung von Express Gateway wird durch das reichhaltige Ökosystem um die Express-Middleware genutzt.

Unternehmen wie Joyent, The Linux Foundation, VIRICITI, Switch Media, Coozy, und Musement das Express-Gateway ausgiebig nutzen.
Es ist einfach, schnell und bietet alle grundlegenden Funktionen.
Gloo
Gloo ist ein voll funktionsfähiges API-Gateway und Ingress Controller der nächsten Generation für Cloud-native Umgebungen. Es basiert auf Envoy Proxy, um den Datenverkehr über Ihre Anwendungsdienste hinweg zu verbinden, zu sichern und zu kontrollieren.

Gloo unterstützt die Verbindung zu einer breiten Palette von Arbeitslasten, um diese zu sichern und zu verwalten, und es ist außergewöhnlich in seiner funktionalen Ebene Routing. Es ist sowohl als Open-Source- als auch als Enterprise-Version verfügbar. Die Enterprise-Version bietet Folgendes.
- Portal für Entwickler
- WAF
- Vermeidung von Datenverlusten
- Mehr Möglichkeiten zur Authentifizierung
- Erweiterte Ratenbegrenzung und Multicluster-Management
KrakenD
KrakenD ist ein hochleistungsfähiges Open-Source-API-Gateway. Seine Kernfunktionalität besteht darin, eine API zu erstellen, die als Aggregator für viele Microservices in einzelnen Endpunkten fungiert und die Schwerstarbeit automatisch für Sie erledigt: Aggregieren, Transformieren, Filtern, Dekodieren, Drosseln, Autorisieren und mehr.

Es bietet eine deklarative Methode zur Erstellung der Endpunkte. Sie ist gut strukturiert und geschichtet und offen für die Erweiterung ihrer Funktionalität durch Plug-and-Play-Middleware, die von der Community oder intern entwickelt wird.
KrakenD behauptet, schneller als Kong und Tyk zu sein. Überprüfen Sie die Benchmarking-Ergebnisse.
Fusio
Fusio ist ein API-Verwaltungssystem, denn es hilft bei der Entwicklung tatsächlicher API-Endpunkte (d. h. bei der Anforderung und Umwandlung von Daten aus einer Datenbank). Es ist nicht auf Proxy-Anfragen an eine andere API beschränkt. Es bietet ein einfaches und intuitives Backend zur Steuerung und Verwaltung Ihrer API.
Fusio bietet unter anderem folgende Funktionen:
- Monetarisierung
- Unterstützung von Abonnements
- OAI- und RAML-Schema-Spezifikation generieren
- Dokumentation
und andere Standard-API-Gateway-Funktionen.
WSO2
WSO2 ist eine API-Management-Lösung für den gesamten Lebenszyklus, die überall eingesetzt werden kann. Sie kann vor Ort, in der Cloud oder in einer hybriden Form bereitgestellt werden, bei der die Komponenten über mehrere Cloud- und vor-Ort-Infrastrukturen verteilt und implementiert werden können.
Es umfasst ein Cloud-natives API-Gateway und bietet einen Kubernetes-Operator, der rohe Microservices einfach in verwaltete APIs umwandelt. API Manager ist integriert mit Servicemaschen und bietet eine vollwertige Verwaltungs- und Steuerungsebene für die Verwaltung, Überwachung und Monetarisierung von APIs und API-Produkten.
Es unterstützt die Veröffentlichung von APIs, das Lebenszyklusmanagement, die Anwendungsentwicklung, die Zugriffskontrolle, die Ratenbegrenzung und die Analyse in einem einzigen, sauber integrierten System.
Weiterlassen Sie uns die kommerziellen Plattformen erkunden.
Apigee
Apigee ist eine Cloud-übergreifende API-Verwaltungsplattform von Google Cloud.

Es gibt sie in den folgenden Geschmacksrichtungen:
- Apigee: eine gehostete SaaS-Lösung, bei der Sie für das bezahlen, was Sie nutzen. Sie konzentrieren sich auf den Aufbau Ihres Geschäfts und verlagern die Verwaltung der Apigee-Umgebung auf GCP.
- Apigee-Hybrid: können Sie APIs vor Ort, auf der Google Cloud Platform (GCP) oder in einer Mischung aus beidem verwalten.
Apigee bietet ein End-to-End-API-Management mit Monetarisierung und integrierter Überwachung.
Cloud-Endpunkte
Eine weitere von Google Cloud.
Endpunkte ist eine abgespeckte Version von Apigee von Google Cloud. Sie eignet sich am besten für Entwickler zur Entwicklung, Bereitstellung und Verwaltung von APIs auf jedem Google Cloud-Backend. Es bietet Tools und Bibliotheken für seine Kunden aus der App Engine-Anwendung. Es hilft bei der Erstellung und Konfiguration mit Google Codelab. Codelab hilft bei der Ausführung von API-Beispielen mit App Engine in Java 8 und Maven 3.6.0.
Google Cloud Endpoints sind eng mit anderen Produkten wie Trace und Logging für die Überwachung, Auth0 und Firebase für die Authentifizierung, GKE und App Engine für die automatische Bereitstellung usw. integriert.
Amazon API-Gateway
AWS kann alles bieten, was Sie für den Betrieb Ihrer Anwendungen benötigen.
Das gilt auch für API.
Amazon API-Gateway ist ein vollständig verwalteter Dienst, der Entwicklern die Erstellung, Veröffentlichung, Wartung und Sicherung von APIs in beliebigem Umfang ermöglicht. Er unterstützt sowohl RESTful- als auch WebSocket-APIs und ermöglicht uns eine 2-Wege-Kommunikation in Echtzeit.
Nachfolgend finden Sie eine bildliche Darstellung von Amazon, die veranschaulicht, wie das Amazon API-Gateway funktioniert.

Wenn Ihre Microservices oder API bereits auf AWS gehostet werden, ist es sinnvoll, sie mit Amazon API Gateway zu integrieren. Sie bieten 1 Million API-Aufrufe unter dem FREE-Tier an, was für Sie gut ist, um zu sehen, wie es funktioniert.
Azurblau
Warum Azure zurücklassen?
Microsoft Azure bietet eine End-to-End-API-Verwaltung in der Cloud, vor Ort oder als Hybrid. Sie können die API-Verwaltung programmatisch über REST API und SDK verwalten.
Gute Nachrichten, wenn Sie SOAP verwenden. Sie können die WSDL (Web Services Description Language) ihres SOAP-Dienstes importieren, und Azure erstellt ein SOAP-Frontend. Sie bieten alle Standardfunktionen, einschließlich Monetarisierung. Probieren Sie es einfach aus, um die Plattform kennenzulernen.
Schlussfolgerung
Sobald Ihre API fertig ist, vergessen Sie nicht überwachen und sicher sie. Wenn Sie sich noch in der Entwicklungsphase befinden, sehen Sie sich diese Werkzeuge um die API-Tests und -Entwicklung zu beschleunigen.
Die obigen Ausführungen sollten Ihnen einen Eindruck von den verfügbaren API-Gateway- und Verwaltungslösungen vermitteln. Wenn Sie ein knappes Budget haben, können Sie Open-Source-Lösungen ausprobieren. Am besten installieren Sie einige von ihnen auf Ihrem Cloud-VM um zu sehen, was für Sie funktioniert.
Viel Glück!