Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In einer Microservices-Architektur interagiert ein Client möglicherweise mit mehr als einem Front-End-Dienst. Angesichts dieser Tatsache, wie weiß ein Client, welche Endpunkte er aufrufen soll? Was geschieht, wenn neue Dienste eingeführt werden oder vorhandene Dienste umgestaltet werden? Wie behandeln Dienste SSL-Beendigung, gegenseitiges TLS, Authentifizierung und andere Bedenken? Ein API-Gateway kann dabei helfen, diese Herausforderungen zu bewältigen.
Laden Sie eine Visio-Datei dieser Architektur herunter.
Was ist ein API-Gateway?
Ein API-Gateway bietet einen zentralen Einstiegspunkt für die Verwaltung von Interaktionen zwischen Clients und Anwendungsdiensten. Sie fungiert als Reverse-Proxy und leitet die Anfragen der Clients an die entsprechenden Dienste weiter. Sie kann auch verschiedene querschnittsübergreifende Aufgaben wie Authentifizierung, SSL-Beendigung, gegenseitiges TLS und Ratelimitierung durchführen.
Warum ein API-Gateway verwenden?
Ein API-Gateway vereinfacht die Kommunikation, verbessert die Clientinteraktionen und zentralisiert die Verwaltung allgemeiner Verantwortlichkeiten auf Dienstebene. Sie fungiert als Vermittler und verhindert, dass Anwendungsdienste Clients direkt zugänglich gemacht werden. Ohne ein API-Gateway müssen Clients direkt mit einzelnen Anwendungsdiensten kommunizieren, wodurch die folgenden Herausforderungen auftreten können:
komplexen Clientcode: Dies kann zu komplexem Clientcode führen. Clients müssen mehrere Endpunkte nachverfolgen und Fehler robust behandeln.
Enge Kopplung: Es erzeugt eine Kopplung zwischen dem Client und dem Back-End. Kunden müssen die Aufteilung einzelner Dienste verstehen, was die Wartung und das Refactoring der Dienste erschwert.
erhöhte Latenz: Ein einzelner Vorgang erfordert möglicherweise Aufrufe an mehrere Dienste. Das Ergebnis kann mehrere Netzwerk-Roundtrips zwischen dem Client und dem Server sein, wodurch eine erhebliche Latenz hinzugefügt wird.
redundante Behandlung von Bedenken: Jeder öffentlich zugängliche Dienst muss Bedenken wie Authentifizierung, SSL und Clientratenbegrenzung behandeln.
Protokollbeschränkungen: Dienste müssen ein clientfreundliches Protokoll wie HTTP oder WebSocket verfügbar machen. Diese Exposition beschränkt Kommunikationsprotokolle Optionen.
Erweiterte Angriffsfläche: Öffentliche Endpunkte erhöhen die potenzielle Angriffsfläche und erfordern eine Härtung.
Verwendung eines API-Gateways
Ein API-Gateway kann mithilfe bestimmter Entwurfsmuster auf die Anforderungen Ihrer Anwendung zugeschnitten werden. Diese Entwurfsmuster adressieren wichtige Funktionen wie Routing, Anforderungsaggregation und grenzüberschreitende Bedenken:
Gatewayrouting. Sie können ein API-Gateway als Reverseproxy verwenden, um Clientanforderungen an verschiedene Anwendungsdienste weiterzuleiten. Das API-Gateway verwendet Layer-7-Routing und stellt einen einzelnen Endpunkt für Clients zur Verfügung. Verwenden Sie API-Gatewayrouting, wenn Sie Clients von Anwendungsdiensten entkoppeln möchten.
Gatewayaggregation. Sie können das API-Gateway verwenden, um mehrere Clientanforderungen in einer einzigen Anforderung zu aggregieren. Verwenden Sie dieses Muster, wenn für einen einzelnen Vorgang Aufrufe an mehrere Anwendungsdienste erforderlich sind. Bei der API-Aggregation sendet der Client eine Anforderung an das API-Gateway. Anschließend leitet das API-Gateway Anforderungen an die verschiedenen Dienste weiter, die für die Vorgänge erforderlich sind. Schließlich aggregiert das API-Gateway die Ergebnisse und sendet sie an den Client zurück. Die Aggregation trägt dazu bei, die Chattigkeit zwischen dem Client und den Anwendungsdiensten zu verringern.
Gateway-Auslagerung. Sie können ein API-Gateway verwenden, um querschnittsübergreifende Funktionen bereitzustellen, sodass einzelne Dienste sie nicht bereitstellen müssen. Es kann nützlich sein, die cross-cutting-Funktionalität an einem Ort zu konsolidieren, anstatt jeden Dienst verantwortlich zu machen. Hier sind Beispiele für Funktionen, die Sie in ein API-Gateway entladen können:
- SSL-Beendigung
- Gegenseitiges TLS
- Authentifizierung
- IP-Zulassungsliste oder Sperrliste
- Einschränkung der Clientrate (Drosselung)
- IP-Zulassungsliste oder Sperrliste
- Clientdrosselung
- Protokollierung und Überwachung
- Zwischenspeicherung von Antworten
- Webanwendungsfirewall
- GZIP-Komprimierung
- Wartung statischer Inhalte
API-Gatewayoptionen
Hier sind einige Optionen für die Implementierung eines API-Gateways in Ihrer Anwendung.
Reverseproxyserver. Nginx und HAProxy sind Open-Source-Reverseproxyangebote. Sie unterstützen Features wie Lastenausgleich, SSL-Beendigung und Layer-7-Routing. Sie verfügen über kostenlose Versionen und kostenpflichtige Editionen, die zusätzliche Features und Supportoptionen bieten. Diese Produkte sind mit umfangreichen Funktionssätzen, hoher Leistung und erweiterbarer Funktionalität reif.
Dienstgitterausgangsgateway. Wenn Sie bereits ein Service Mesh betreiben, ist dessen eigenes Ingress-Gateway eine mögliche Wahl für Ihr API-Gateway. Seine Verwendung bedeutet, dass der Nord-Süd-Datenverkehr unmittelbar in die Mesh-Datenebene gelangt und derselben mTLS, derselben Workload-Identität, derselben Autorisierungsrichtlinie und derselben Telemetrie wie der Ost-West-Datenverkehr unterliegt. Für AKS ist das Istio-basierte Dienstgitter-Add-On die unterstützte verwaltete Option und enthält ein verwaltetes Istio-Eingangsgateway. Linkerd und Konsul sind nicht verwaltete Alternativen.
Mesh-Eingangsgateways verfügen in der Regel über schwächere Funktionen als dedizierte API-Gateways für die Webanwendungsfirewall (WAF), API-Produktisierung, Anforderungstransformation und globales Routing. Koppeln Sie sie also mit oder ersetzen Sie sie durch Anwendungsgateway, Front Door oder API-Verwaltung, wenn diese Funktionen erforderlich sind.
Azure-Anwendungsgateway. Das Anwendungsgateway ist ein verwalteter Lastenausgleichsdienst. Es bietet Layer-7-Routing, SSL-Terminierung und eine Webanwendungs-Firewall (WAF).
Azure Front Door. Azure Front Door ist ein Content Delivery Network (CDN). Es verwendet globale und lokale Anwesenheitspunkte (PoPs), um schnellen, zuverlässigen und sicheren Zugriff auf die statischen und dynamischen Webinhalte Ihrer Anwendungen global zu ermöglichen.
Azure API-Verwaltung. DIE API-Verwaltung ist eine verwaltete Lösung zum Veröffentlichen von APIs für externe und interne Kunden. Es bietet Features zum Verwalten öffentlich zugänglicher APIs, einschließlich Ratelimiting, IP-Einschränkungen und Authentifizierung mithilfe von Microsoft Entra ID oder anderen Identitätsanbietern. API Management bietet keinen Lastenausgleich, daher sollten Sie es zusammen mit einem Load Balancer wie Azure Application Gateway oder einem Reverseproxy verwenden. Weitere Informationen finden Sie unter API-Verwaltung mit Azure Application Gateway.
Auswählen einer API-Gatewaytechnologie
Berücksichtigen Sie beim Auswählen eines API-Gateways die folgenden Faktoren:
Unterstützt alle Anforderungen. Wählen Sie ein API-Gateway aus, das Ihre erforderlichen Features unterstützt. Alle vorherigen API-Gatewayoptionen das Layer-7-Routing unterstützen. Ihre Unterstützung für andere Features wie Authentifizierung, Ratelimitierung und SSL-Beendigung kann jedoch variieren. Bewerten Sie, ob ein einzelnes Gateway Ihre Anforderungen erfüllt oder ob mehrere Gateways erforderlich sind.
Bevorzugen Sie integrierte Lösungen. Verwenden Sie integrierte API-Gateway- und Eingangslösungen, die von Ihrer Plattform bereitgestellt werden, z. B. Azure Container-Apps und AKS, wann immer sie Ihre Sicherheits- und Kontrollanforderungen erfüllen. Verwenden Sie nur ein benutzerdefiniertes Gateway, wenn die integrierten Optionen nicht unbedingt flexibel sind. Benutzerdefinierte Lösungen erfordern ein Governancemodell, z. B. GitOps, um den Lebenszyklus effektiv zu verwalten.
Wählen Sie das richtige Bereitstellungsmodell aus. Verwenden Sie verwaltete Dienste wie Azure Application Gateway und Azure API Management für einen reduzierten Betriebsaufwand. Wenn Sie allgemeine Reverse-Proxys oder Lastenausgleichssysteme verwenden, setzen Sie sie so ein, dass sie mit Ihrer Architektur übereinstimmen. Sie können allgemeine API-Gateways für dedizierte virtuelle Computer oder in einem AKS-Cluster in ihren Ingress Controller-Angeboten bereitstellen. Um das API-Gateway von der Workload zu isolieren, können Sie sie außerhalb des Clusters bereitstellen, aber diese Bereitstellung erhöht die Verwaltungskomplexität.
Änderungen verwalten. Wenn Sie Dienste aktualisieren oder neue hinzufügen, müssen Sie möglicherweise die Gatewayroutingregeln aktualisieren. Implementieren Sie Prozesse oder Workflows zum Verwalten von Routingregeln beim Hinzufügen oder Ändern von Diensten, SSL-Zertifikaten, IP-Zulassungslisten und Sicherheitskonfigurationen. Verwenden Sie Infrastructure-as-Code- und Automatisierungstools, um das API-Gateway-Management zu optimieren.
Nächste Schritte
In früheren Artikeln wurden die Schnittstellen zwischen Microservices und zwischen Microservices und Clientanwendungen untersucht. Diese Schnittstellen behandeln jeden Dienst als eigenständige, undurchsichtige Einheit. Ein kritisches Prinzip der Microservices-Architektur besteht darin, dass Dienste niemals interne Details zur Verwaltung von Daten verfügbar machen sollten. Dieser Ansatz hat erhebliche Auswirkungen auf die Aufrechterhaltung der Datenintegrität und Konsistenz, die gegenstand des nächsten Artikels ist.