API Gateway Grundlagen mit Kong und Nginx
Ein API Gateway ist die zentrale Schicht vor Deinen APIs, die Routing, Sicherheit, Lastverteilung und Monitoring vereint.
Kompakte Beschreibung
Ein API Gateway ist eine Serverkomponente, die alle Client-Anfragen an eine API entgegennimmt und an die richtigen Backend-Services weiterleitet. Neben dem Routing übernimmt es Aufgaben wie Authentifizierung, Autorisierung, Rate Limiting, SSL-Terminierung, Caching, Load Balancing, Protokollumwandlung und Monitoring. Bekannte Implementierungen sind Kong, Nginx, Envoy, Traefik, AWS API Gateway und Azure API Management. Kong baut auf Nginx auf und ergänzt es durch ein Plugin-System und eine zentrale Verwaltung. Nginx selbst kann als leistungsfähiges Reverse Proxy und API Gateway genutzt werden. Ein API Gateway entkoppelt Clients von Backend-Services, vereinfacht Sicherheit und Zentralisierung und ist ein wichtiger Bestandteil moderner Microservices-Architekturen.
Wichtige Komponenten
Routing
Routing ist die Kernaufgabe eines API Gateways. Es leitet Anfragen anhand von Pfad, Methode, Header oder Host an den passenden Backend-Service weiter. Beispielsweise werden Anfragen an /orders an den Order-Service und Anfragen an /payments an den Payment-Service weitergeleitet.
Reverse Proxy
Ein API Gateway agiert als Reverse Proxy. Für die Clients ist das Gateway der einzige sichtbare Endpunkt, während die Backend-Services dahinter verborgen bleiben. Das schützt interne Services und ermöglicht deren Austausch ohne Auswirkungen auf die Clients.
Load Balancing
Load Balancing verteilt eingehende Anfragen auf mehrere Instanzen eines Backend-Services. Das verbessert Verfügbarkeit und Skalierbarkeit. Gängige Verfahren sind Round Robin, Least Connections und IP Hash. Health Checks erkennen ausgefallene Instanzen und nehmen sie aus der Verteilung.
Authentifizierung und Autorisierung
Das Gateway kann Authentifizierungsmechanismen wie OAuth2, JWT, API Keys oder mTLS zentral durchsetzen. Es prüft Tokens, bevor Anfragen die Backend-Services erreichen, und fügt gegebenenfalls bereinigte Nutzerinformationen hinzu.
Rate Limiting und Throttling
Rate Limiting begrenzt die Anzahl der Anfragen pro Client in einem Zeitraum. Throttling drosselt die Anfragenrate bei hoher Last. Beide Maßnahmen schützen Backend-Services vor Überlastung und Missbrauch. Sie können global, pro API oder pro Client konfiguriert werden.
SSL-Terminierung
Das Gateway übernimmt die SSL-TLS-Entschlüsselung und verschlüsselte Kommunikation mit den Clients. Die interne Kommunikation zu den Backend-Services kann unverschlüsselt oder mit internen Zertifikaten erfolgen, was die Verwaltung vereinfacht.
Caching
Ein API Gateway kann häufig angefragte Antworten cachen, um Backend-Last zu reduzieren und Latenz zu verringern. Caching ist besonders sinnvoll für statische oder selten wechselnde Daten. Cache-Schlüssel müssen sorgfältig gewählt werden, um falsche Antworten zu vermeiden.
Protokollumwandlung
Das Gateway kann zwischen Protokollen übersetzen, beispielsweise zwischen HTTP/1.1 und HTTP/2, REST und gRPC oder WebSockets und TCP. Das ermöglicht es, unterschiedliche Clients mit verschiedenen Backend-Services zu verbinden.
Logging und Monitoring
Das Gateway ist ein zentraler Punkt für Logging und Monitoring. Es protokolliert Anfragen, Antworten, Statuscodes, Latenzen und Fehler. Tools wie Prometheus, Grafana, ELK oder Datadog können diese Daten auswerten und visualisieren.
Kong
Kong ist ein beliebtes Open-Source API Gateway, das auf Nginx und OpenResty basiert. Es bietet ein umfangreiches Plugin-System für Authentifizierung, Rate Limiting, Logging, Transformation und mehr. Kong kann selbst gehostet oder als Cloud-Dienst genutzt werden.
Nginx als Gateway
Nginx ist ein leistungsfähiger Webserver und Reverse Proxy. Mit der richtigen Konfiguration kann er die grundlegenden Aufgaben eines API Gateways erfüllen, wie Routing, Load Balancing, SSL-Terminierung und Caching. Für erweiterte Plugin-Funktionen wird oft Kong oder Nginx Plus verwendet.
Praxisbeispiel
Ein Unternehmen betreibt mehrere Microservices und setzt Kong als API Gateway ein.
Kong Konfiguration für zwei Services:
services:
- name: order-service
url: http://orders.internal:8080
routes:
- name: orders-route
paths:
- /api/v1/orders
- name: payment-service
url: http://payments.internal:8080
routes:
- name: payments-route
paths:
- /api/v1/payments
plugins:
- name: rate-limiting
config:
minute: 100
- name: jwt
config:
uri_param_names: []
cookie_names: []
In diesem Beispiel leitet Kong Anfragen an /api/v1/orders an den Order-Service und Anfragen an /api/v1/payments an den Payment-Service weiter. Das Rate-Limiting Plugin begrenzt die Anfragen auf 100 pro Minute. Das JWT Plugin stellt sicher, dass nur validierte Token auf die APIs zugreifen.
FAQ: API Gateway mit Kong und Nginx
1. Was ist ein API Gateway?
2. Was ist der Unterschied zwischen API Gateway und Reverse Proxy?
3. Was ist Kong?
4. Was ist Nginx?
5. Was ist Rate Limiting?
6. Was ist Load Balancing?
7. Was ist SSL-Terminierung?
8. Was sind Plugins bei Kong?
9. Was ist ein Service Mesh?
10. Was ist Caching im API Gateway?
11. Sollte Authentifizierung im Gateway oder im Service erfolgen?
12. Was ist ein Backends für Frontends Gateway?
13. Was ist ein Health Check?
14. Was ist ein Nginx Upstream?
15. Was ist der Vorteil eines zentralen API Gateways?
Quellen
- https://docs.konghq.com/
- https://nginx.org/en/docs/
- https://microservices.io/patterns/apigateway.html
Buchempfehlungen zur API-Entwicklung
Wenn Du Dich weiter mit API Gateways, Microservices und API-Architektur beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:
Keine Bücher für Kategorie "api-development" gefunden.