Bearbeiten

Freigeben über


Verwenden von API-Gateways in Microservices

Azure Application Gateway
Azure API Management

In einer Microservices-Architektur interagiert ein Client möglicherweise mit mehr als einem Front-End-Dienst. In Anbetracht dieser Tatsache weiß ein Client, welche Endpunkte aufgerufen werden sollen? 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.

Diagramm eines API-Gateways

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 Reverseproxy und leitet Clients Anforderungen 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 die direkte Gefährdung von Anwendungsdiensten für Kunden. 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 Zerlegung einzelner Dienste verstehen, die Wartung von Diensten und die Umgestaltung der Dienste erschweren.

  • 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.

Verwenden 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 offloading. 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 Blockliste
    • Einschränkung der Clientrate (Drosselung)
    • 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.

  • Dienstgittereingangscontroller. Wenn Sie ein Dienstgitter verwenden, bewerten Sie die für dieses Dienstgitter spezifischen Funktionen des Eingangscontrollers. Suchen Sie nach AKS-unterstützten Add-Ons wie Istio und Open Service Mesh. Suchen Sie nach Open-Source-Projekten von Drittanbietern wie Linkerd oder Consul Connect. Der Istio-Eingangscontroller unterstützt beispielsweise Layer 7-Routing, HTTP-Umleitungen, Wiederholungen und andere Features.

  • Azure-Anwendungsgateway. Das Anwendungsgateway ist ein verwalteter Lastenausgleichsdienst. Es bietet Layer-7-Routing, SSL-Beendigung und eine Webanwendungsfirewall (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 Management. 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. Die API-Verwaltung führt keinen Lastenausgleich durch, daher sollten Sie ihn mit einem Lastenausgleich verwenden, z. B. Azure-Anwendungsgateway oder einen Reverseproxy. 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ützen Sie 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 Angebote. 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 Reverseproxys oder Lastenausgleichsgeräte verwenden, stellen Sie sie auf eine Weise bereit, die sich an Ihre Architektur richtet. 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 Infrastruktur-as-Code- und Automatisierungstools, um die VERWALTUNG des API-Gateways 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.