Schnittstellen

Rate Limiting ist kein Misstrauens-Instrument, sondern Infrastruktur-Schutz

Eine API ohne Rate Limiting kann durch einen einzigen fehlerhaften Client in die Knie gezwungen werden.

Sei es durch einen Angriff oder schlicht durch einen Bug in einem Client, der unbegrenzt retried, Rate Limiting schuetzt die Infrastruktur und garantiert eine faire Ressourcenverteilung unter allen Clients.

Verschiedene Strategien

Fixed Window erlaubt eine feste Anzahl Requests pro Zeitfenster, einfach zu implementieren, aber mit Burst-Problemen an den Fenstergrenzen. Sliding Window nutzt ein gleitendes Zeitfenster und ist fairer, dafuer etwas aufwendiger. Token Bucket fuellt Tokens ueber Zeit auf und erlaubt kontrolliertes Bursting. Leaky Bucket laesst Requests mit konstanter Rate durch, sehr gleichmaessig, ohne Bursting. Fuer die meisten APIs sind Sliding Window oder Token Bucket die bessere Wahl.

Granularitaet festlegen

Rate Limits lassen sich pro API-Key, pro Nutzer oder pro IP-Adresse setzen. Fuer authentifizierte APIs eignen sich Nutzer- oder Key-basierte Limits, fuer oeffentliche Endpunkte IP-basierte Limits, allerdings mit Vorsicht bei geteilten NAT-Adressen.

Developer Experience beim Rate Limiting

Rate-Limit-Header in der Response geben Auskunft ueber Limit, verbleibende Anfragen und Reset-Zeitpunkt, sodass Clients ihr Verhalten anpassen koennen, bevor das Limit erreicht ist. Bei ueberschrittenem Limit hilft eine 429-Antwort mit Retry-After-Header.

Checkliste: Rate-Limit-Strategie pro Endpoint definiert, Granularitaet der Limits festgelegt, Rate-Limit-Header in Responses gesetzt, 429-Response mit Retry-After, Limits dokumentiert, Alerts bei ungewoehnlich hohem Request-Volumen.

Ein Beispiel aus der Praxis

Eine oeffentliche API ohne Rate Limiting wurde durch einen fehlerhaft konfigurierten Client eines Partners innerhalb weniger Minuten mit tausenden Anfragen pro Sekunde ueberflutet, ohne boese Absicht, schlicht durch eine Endlosschleife im Partnercode. Der eigene Server wurde dadurch fuer alle anderen Nutzer spuerbar langsamer. Nach der Einfuehrung eines Rate Limits pro API-Key blieb ein aehnlicher Vorfall lokal auf den fehlerhaften Client begrenzt, ohne die uebrigen Partner in Mitleidenschaft zu ziehen.

Rate Limiting fuer eure API einrichten? markom.digital implementiert Rate-Limiting-Mechanismen, angepasst an eure API-Nutzungsmuster.

Weitere Beiträge