Ein API Gateway ist der Einstiegspunkt fuer Client-Anfragen in einer Microservices-Architektur. Anstatt dass der Client direkt mit Dutzenden von Diensten kommuniziert, kommuniziert er mit einem einzigen Gateway, das Routing, Authentifizierung, Rate Limiting und Transformation zentral uebernimmt. Dies vereinfacht den Client-Code und schafft eine zentrale Stelle fuer Cross-Cutting Concerns wie Logging, Monitoring und Sicherheit.
Funktionen¶
- Request Routing — leitet Anfragen an die richtigen Backend-Dienste weiter
- Authentifizierung (JWT/OAuth) — validiert Tokens vor der Weiterleitung ans Backend
- Rate Limiting — schuetzt Dienste vor Ueberlastung
- Request/Response-Transformation — Payload-Aenderungen, Header-Enrichment
- Aggregation — Zusammenfuehrung von Antworten aus mehreren Diensten
- Caching — Reduzierung der Backend-Last
- Logging + Monitoring — zentralisierte Telemetrie
Implementierung¶
- Kong — Open Source, reichhaltiges Plugin-Oekosystem, deklarative Konfiguration
- AWS API Gateway — Managed Service, Integration mit Lambda und dem AWS-Oekosystem
- Traefik — Cloud-native, Auto-Discovery aus Docker/K8s-Labels
- Nginx — DIY-Loesung mit OpenResty fuer Lua-Scripting, maximale Leistung
Die Wahl haengt von der Infrastruktur ab. Fuer Kubernetes ist Traefik oder Kong Ingress Controller eine natuerliche Wahl. Fuer AWS Serverless ist API Gateway + Lambda der effizienteste Weg.
Muster¶
BFF — Backend for Frontend¶
Jeder Client (Web, Mobile, IoT) hat sein eigenes Gateway, das fuer seine Beduerfnisse optimiert ist. Ein mobiles BFF aggregiert Daten in einem einzigen Aufruf, waehrend ein Web-BFF detailliertere Antworten sendet. Dies eliminiert Over-Fetching und Under-Fetching auf der Client-Seite.
Gateway-Aggregation¶
Fasst Aufrufe an mehrere Dienste in einer einzigen Antwort zusammen. Der Client sendet eine Anfrage, das Gateway ruft user-service, order-service und product-service parallel auf und gibt eine zusammengesetzte Antwort zurueck. Dies reduziert Roundtrips und die Client-seitige Latenz.
Gateway = Eingangstor¶
Unverzichtbar fuer Microservices. Zentralisiert Cross-Cutting Concerns und vereinfacht die Client-Integration. Ohne Gateway muss jeder Client Authentifizierung, Retry-Logik und Service Discovery selbstaendig handhaben.