# Ressourcengrenzen & Quotas

> Quotas, API-Limits und Kapazitätsanforderungen mit Vorlauf steuern.

Track: [Cloud Infrastructure & Platform Engineering](https://physar.tech/learn/cloud-infra)  
Kanonische Fassung: https://physar.tech/learn/cloud-infra/resource-quota-limits  
Stand: 2026-09-13  
Interaktiver Teil: 8 Checks (nur im Browser)

## Grenzen als Kapazitätsvertrag sichtbar und beherrschbar machen

### Drei Arten von Grenzen, drei Verhaltensweisen

„Elastisch“ heißt nicht grenzenlos. Jede Cloud kennt Grenzen, und sie verhalten sich unterschiedlich — wer sie in einen Topf wirft, plant falsch.

|  |  |
| --- | --- |
| Kontingent (Quota) | Obergrenze pro Konto und Region, meist auf Antrag erhöhbar. Wirkt beim Anlegen: Die Ressource entsteht nicht. |
| API-Rate-Limit | Aufrufe pro Zeiteinheit gegen die Control Plane. Wirkt sofort und wird typischerweise mit einem Drosselungsfehler beantwortet. |
| Physische Kapazität | Nicht erhöhbar durch einen Antrag: Ein bestimmter Instanztyp kann in einer Zone schlicht nicht verfügbar sein. |

Die dritte Kategorie ist die unangenehmste, weil sie sich wie die erste anfühlt: Der Fehler kommt bei der Anforderung, aber kein Ticket löst ihn. Die Antwort darauf ist Entwurf — Flexibilität bei Instanztypen und Zonen — nicht Eskalation.

> **Merksatz:** Ein Kontingent ist eine Zahl, die im Normalbetrieb niemanden interessiert und im Ausnahmefall alles entscheidet. Genau deshalb gehört sie überwacht wie eine Auslastung.

### Warum Limits im schlechtesten Moment zuschlagen

Kontingente sind bei normaler Last unsichtbar. Sichtbar werden sie genau dann, wenn mehr gebraucht wird als üblich — beim Hochskalieren unter Last, beim Umschwenken in eine andere Zone nach einem Ausfall, beim Wiederaufbau nach einem Vorfall. Das heißt: Das Limit trifft dich in dem Zustand, in dem am wenigsten Zeit für einen Antrag mit Bearbeitungsfrist bleibt.

_[Abbildung: Verbrauch gegen Kontingent messen, Schwelle auslösen, Erhöhung beantragen — bevor die Grenze operativ wird.]_

- Das relevante Maß ist nicht der heutige Verbrauch, sondern der Verbrauch im **Failover-Fall**: Reicht das Kontingent der Ausweichzone für die volle Last?
- Kontingente gelten meist pro Konto **und** pro Region — eine Multi-Region-Strategie verdoppelt nicht automatisch die Grenze, sie vervielfacht die zu überwachenden Zahlen.
- Alarmiere auf einem Anteil des Kontingents, nicht auf dem Fehler. Der Fehler ist bereits der Ausfall.
- Die Bearbeitungszeit von Erhöhungen ist keine Konstante und in Knappheitssituationen am längsten — sie gehört als Vorlaufzeit in die Planung.

### Drosselung ist ein Designthema, kein Fehlerfall

Automatisierung, die die Control Plane in Schleifen abfragt oder viele Ressourcen gleichzeitig anlegt, läuft regelmäßig in Rate-Limits. Der naive Umgang ist sofortiges Wiederholen — und das ist genau die Reaktion, die das Problem verstärkt: Alle Aufrufer wiederholen gleichzeitig, die Last steigt, die Drosselung hält an. Dieses Muster kann einen Vorfall verlängern, lange nachdem die Ursache behoben ist.

Der belastbare Umgang ist exponentiell wachsendes Warten mit einer **zufälligen Streuung** (Jitter), damit die Wiederholungsversuche nicht synchron laufen — plus eine Obergrenze für Versuche, damit ein dauerhaftes Problem als Fehler sichtbar wird statt endlos zu kreisen.

> **Antipattern:** „Wir erhöhen einfach das Limit“ als Standardantwort auf Drosselung. Manchmal richtig — aber wenn eine Schleife die Control Plane hundertfach pro Minute befragt, verschiebt die Erhöhung nur den Punkt, an dem es weh tut.

### Kapazität mit Vorlauf statt mit Hoffnung

Für planbare Spitzen — Aktionstage, Jahresabschluss, Migrationswellen — gibt es drei Mechanismen mit unterschiedlichen Zusagen: schlichte **Kontingenterhöhung** (erlaubt mehr, garantiert nichts), **Kapazitätsreservierung** (reserviert konkrete Ressourcen in einer Zone, kostet auch ungenutzt) und **langfristige Abnahmezusagen** (senken Kosten, sind aber ein Preis- und kein Kapazitätsinstrument).

|  |  |
| --- | --- |
| Kontingenterhöhung | Hebt die Obergrenze. Sagt **nicht** zu, dass Kapazität vorhanden ist. |
| Kapazitätsreservierung | Sichert konkrete Kapazität in einer Zone zu. Kostet, ob genutzt oder nicht. |
| Abnahmezusage | Senkt den Preis für zugesagten Verbrauch. Keine Kapazitätsgarantie, keine Kontingenterhöhung. |

Diese Unterscheidung ist der häufigste Denkfehler in Kapazitätsgesprächen: Ein erhöhtes Kontingent wird als Kapazitätszusage gelesen. Es ist eine **Erlaubnis**, nicht eine **Zusage** — und beim regionalen Ausweichen nach einem Zonenausfall wollen viele Kunden gleichzeitig dieselbe Erlaubnis einlösen.

> **Gleich im Check:** In den folgenden Entscheidungen planst du Kontingente für den Failover-Fall, reagierst auf Drosselung und wählst das passende Kapazitätsinstrument für eine terminierte Spitze.

### Der Betriebsvertrag braucht messbare Invarianten

**Betriebsinvariante:** Eine Aussage über eine zählbare Ressourcen-, Durchsatz- oder API-Grenze im wirksamen Account-, Regions- oder Dienstscope, die vor und nach einem erlaubten Übergang nachweisbar wahr sein muss.

Ein technisches Feature wird erst dann zu einem Betriebsvertrag, wenn Sollzustand, Verantwortlicher, Messpunkt und Reaktion zusammenpassen. Für eine zählbare Ressourcen-, Durchsatz- oder API-Grenze im wirksamen Account-, Regions- oder Dienstscope besteht der prüfbare Kern aus **Limitinventar, Verbrauchsmessung, Headroom-Ziel, Alarm und genehmigter Kapazitätsweg**. Der Vertrag nennt außerdem den gültigen Scope und die Bedingungen, unter denen ein Übergang abgebrochen wird. Das verhindert, dass Teams dieselben Wörter verwenden, aber unterschiedliche Garantien erwarten. der Workload-Owner für Bedarf und Verhalten sowie die Plattform für Inventar und Erhöhungsworkflow bestätigt nicht nur eine Konfiguration, sondern die Fähigkeit, ihre Wirkung zu beobachten und bei Abweichung zu handeln.

Invarianten müssen von außen prüfbar sein. Eine Aussage wie **ist sicher** hilft nicht; eine Aussage wie **jede schreibende Operation trägt retry-after, stammt aus einer freigegebenen Identität und erzeugt innerhalb des Messfensters einen Auditnachweis** kann getestet werden. Neben dem positiven Pfad gehören negative Fälle in die Abnahme: unzulässiger Scope, fehlende Freigabe, veraltetes Artefakt und nicht erreichbare Kontrollabhängigkeit. Erst diese Gegenproben zeigen, ob die Grenze technisch durchgesetzt oder nur dokumentiert ist.

**Kurzcheck:** Welche Beschreibung ist für eine zählbare Ressourcen-, Durchsatz- oder API-Grenze im wirksamen Account-, Regions- oder Dienstscope als Invariante geeignet?

- [x] Jeder erlaubte Übergang ist über retry-after, Owner, Scope und Ergebnis korrelierbar
- [ ] Das Team arbeitet vorsichtig und hält sich normalerweise an die gemeinsame Dokumentation
- [ ] Die eingesetzte Cloudfunktion gilt allgemein als zuverlässig

> Die Aussage benennt prüfbare Merkmale und lässt sich automatisiert oder im Review widerlegen.

### Grenzen und Eigentum entscheiden über den Blast Radius

Die wirksame Grenze liegt bei **Quota-Scope, Fehlerdomäne, Client-Retry-Budget und gemeinsame Abhängigkeit**. Sie bestimmt, welche Ressourcen, Daten und Teams von einer fehlerhaften Entscheidung gemeinsam betroffen sein können. Organigramme und Repository-Grenzen sind dafür nur Hinweise. Maßgeblich ist, wo Identitäten, Zustand, Kapazität oder Kontrollpfade tatsächlich geteilt werden. viel Headroom verbessert Robustheit, bindet bei reservierter Kapazität aber Geld; das Ziel folgt Wiederanlauf- und Lastannahmen Diese Abwägung wird explizit dokumentiert, damit eine spätere Konsolidierung nicht unbemerkt mehrere unabhängige Fehlerbereiche wieder koppelt.

Eigentum bedeutet Entscheidungs- und Reaktionspflicht. der Workload-Owner für Bedarf und Verhalten sowie die Plattform für Inventar und Erhöhungsworkflow legt fest, wer den Sollzustand ändern, wer eine Ausnahme genehmigen und wer im Vorfall handeln darf. Ein RACI ohne technische Rechteprüfung reicht nicht. Regelmäßig wird verglichen, ob Gruppen, Pipeline-Identitäten und Notfallrollen noch zum dokumentierten Modell passen. Gemeinsame Komponenten erhalten einen eigenen Service-Owner, SLO und Eskalationsweg, weil sonst jedes konsumierende Team nur seine lokale Sicht optimiert.

> **Grenztest:** Frage für jede gemeinsame Abhängigkeit: Welcher maximale Teil des Dienstes fällt aus, wenn genau diese Abhängigkeit falsche Daten liefert, nicht erreichbar ist oder kompromittiert wird?

### Der Normalablauf wird als kontrollierte Zustandsmaschine beschrieben

Grenzen inventarisieren → Spitzen- und Failoverbedarf rechnen → **Headroom messen** → Vorlauf bestimmen → Erhöhung oder Architekturmaßnahme auslösen und unter Last prüfen

Der Ablauf ist eine Zustandsmaschine und keine lose Checkliste. Jeder Schritt besitzt Eingangsdaten, einen ausführenden Prinzipal, ein Ergebnis und eine Abbruchbedingung. Ein nachfolgender Schritt darf nur starten, wenn das vorherige Ergebnis unverändert referenziert wird. Dadurch kann ein Review nicht versehentlich ein anderes Artefakt prüfen als die Automatisierung später verwendet. Wiederholungen müssen entweder idempotent sein oder eine eindeutige Vorgangskennung erkennen, damit ein Timeout nicht zu einer zweiten konkurrierenden Änderung führt.

Für Beim regionalen Failover verdoppelt sich der Schreibverkehr, doch die Zielregion besitzt nur die normale API-Quota wird der Ablauf zuerst in einem kleinen, repräsentativen Scope ausgeführt. Die Plattform protokolliert Eingaben und Ergebnis, aber keine Secrets oder unnötigen Nutzdaten. Menschliche Freigaben beziehen sich auf Digest, Plan oder Version, nicht auf einen veränderlichen Namen. So bleibt die Kette auch dann prüfbar, wenn zwischen Review und Ausführung Zeit vergeht oder ein anderer Runner übernimmt.

### Vorbedingungen und Gates stoppen unsichere Übergänge

Ein Gate ist nur sinnvoll, wenn sein Ergebnis die Ausführung tatsächlich stoppt. Mindestgates prüfen Identität und Scope, Vollständigkeit des Artefakts, bekannte Richtlinien, verfügbare Kapazität sowie einen beobachtbaren Rückweg. Das Gate liefert **bestanden**, **abgelehnt** oder **befristete Ausnahme** mit maschinenlesbarem Grund. Warnungen, die bei jedem Lauf ignoriert werden, sind keine Kontrolle; sie werden entweder in eine harte Bedingung, einen befristeten Behebungsauftrag oder eine bewusst entfernte Regel überführt.

Die Vorbedingungen müssen zum Risiko passen. viel Headroom verbessert Robustheit, bindet bei reservierter Kapazität aber Geld; das Ziel folgt Wiederanlauf- und Lastannahmen Deshalb wird nicht jede Änderung durch denselben schweren Prozess geschickt. Kleine, reversible Schritte mit engem Scope können automatisiert freigegeben werden. Irreversible Datenänderungen, neue Vertrauensbeziehungen oder eine Vergrößerung der Fehlerdomäne verlangen zusätzliche Evidenz und unabhängiges Review. Die Risikoklasse stammt aus der beobachtbaren Wirkung, nicht aus der Zahl geänderter Codezeilen.

- Ist das Ziel eindeutig und der Scope kleiner als die maximal erlaubte Fehlerdomäne?
- Sind Eingaben und Abhängigkeiten unveränderlich referenziert?
- Existieren Abbruchsignal und benannter Owner?
- Ist der Rückweg technisch möglich und mit aktuellen Daten geprobt?
- Wird die Wirkung nach dem Übergang gegen eine Baseline geprüft?

### Fehlerbilder werden vor dem Ernstfall operationalisiert

Die wichtigsten Fehlerbilder sind **Autoscaling gegen harte Limits, synchronisierte Retries, ungleiche Sekundärregionen und Erhöhungsanträge erst während einer Störung**. Für jedes Bild wird festgehalten, wie es erkannt wird, welche automatischen Schutzmechanismen greifen und welche manuelle Entscheidung übrig bleibt. Ein Runbook, das erst mit der Ursachenanalyse beginnt, kommt zu spät. Zuerst werden Nutzerwirkung und Ausbreitung begrenzt; danach wird die Hypothese mit möglichst kleinen, reversiblen Tests geprüft. Änderungen an mehreren Grenzen gleichzeitig sind zu vermeiden, weil ihr Ergebnis keine Ursache mehr isoliert.

Übungen testen nicht nur den glücklichen Failover. Ein sinnvoller Versuch nimmt zusätzlich eine Kontrollabhängigkeit weg, verzögert Telemetrie oder lässt einen Schritt nach erfolgreicher Außenwirkung mit Timeout enden. Das Team muss dann erkennen, ob die Operation wiederholt, fortgesetzt oder gestoppt werden darf. Beobachtet werden sowohl technische Metriken als auch die Qualität der Entscheidung: Zeit bis zur klaren Führung, Anzahl konkurrierender Änderungen und Vollständigkeit der Evidenz.

### Fehlerprobe mit begrenztem Scope

Beim regionalen Failover verdoppelt sich der Schreibverkehr, doch die Zielregion besitzt nur die normale API-Quota

**Anforderungen**

- Explizite Hypothese und erwartetes Signal
- Begrenzter Zielscope mit Abbruchschwelle
- Aktueller Rückweg und erreichbarer Owner
- Zeitlich korrelierbare technische und fachliche Messung

**Schritte**

- Baseline sichern
- Eine Fehlerannahme auslösen
- Schutzreaktion beobachten
- Kontrolliert wiederherstellen
- Abweichungen als Arbeit erfassen

**Merksatz:** Eine bestandene Übung beweist den geprobten Fall unter den beobachteten Bedingungen, nicht die Abwesenheit aller Risiken.

### Telemetrie verbindet technische Signale mit Nutzerwirkung

Für den Betrieb werden **Nutzung gegen Limit, Ablehnungsrate, Retry-Volumen, Warteschlangentiefe, Genehmigungsdauer und Failoverreserve** gemeinsam betrachtet. Einzelne Messwerte ohne Scope und Zeitbezug sind gefährlich: Ein globaler Durchschnitt kann einen vollständigen Ausfall einer Zone verdecken, eine erfolgreiche API-Antwort kann eine verzögerte Wirkung verschleiern. Jede Metrik nennt Quelle, Dimensionen, erwartete Aktualität und Verhalten bei Messlücken. Fehlende Telemetrie gilt bei kritischen Übergängen als eigener Fehlerzustand und kann die Fortsetzung blockieren.

Alarme werden an einer konkreten Handlung ausgerichtet. Ein Alarm nennt betroffenen Scope, beobachtete Invariante, wahrscheinlichen Owner und den ersten sicheren Prüfschritt. Tickets eignen sich für langsamen Kapazitäts- oder Complianceabbau; Paging bleibt akuter Nutzerwirkung oder unmittelbar drohendem Kontrollverlust vorbehalten. Dashboards und Auditabfragen verwenden dieselben IDs wie retry-after, damit Einsatzleitung, Plattform und Workload-Team nicht drei widersprüchliche Zeitlinien rekonstruieren.

> **Messlücke:** Wenn ein Übergang erfolgreich gemeldet wird, seine erwartete Wirkung aber nicht innerhalb des Messfensters beobachtbar ist, bleibt der Zustand unbekannt. Unbekannt ist kein Erfolg.

### Recovery beginnt mit einem sicheren Kontrollpunkt

Der Recovery-Vertrag lautet: **Last priorisieren, nichtkritische Arbeit abwerfen, Retries begrenzen, vorhandene Reserve aktivieren und danach Limit oder Architektur dauerhaft anpassen**. Er nennt den letzten sicheren Kontrollpunkt, die Reihenfolge der Schritte und die Daten, die nach einer Umschaltung fachlich geprüft werden müssen. Rollback ist nur dann ein Rückweg, wenn alte Software, Konfiguration und Datenzustand noch kompatibel sind. Andernfalls ist ein kontrollierter Roll-forward oft sicherer. Diese Entscheidung wird vor dem Vorfall für die wichtigsten Änderungsklassen getroffen.

Backups und Exportdateien zählen erst nach einem Restore-Test als Recovery-Fähigkeit. Ebenso zählt eine sekundäre Umgebung erst, wenn Identität, Quotas, Netzpfade, Schlüssel und Telemetrie dort unter realistischer Last funktionieren. Die Übung protokolliert erreichten Wiederherstellungspunkt, Dauer, Datenabweichung und manuelle Abhängigkeiten. Ein verfehltes Ziel führt zu einer priorisierten Architektur- oder Prozessänderung; das bloße Herabsetzen des Zielwerts benötigt eine fachliche Risikoentscheidung.

Schreibende Änderungen stoppen → **Sicheren Kontrollpunkt bestimmen** → Abhängigkeiten und Zielkapazität prüfen → Kleinste wirksame Recovery-Maßnahme ausführen → Technische und fachliche Konsistenz messen → Schrittweise in den Normalbetrieb zurückkehren

### Änderungsevidenz macht Entscheidungen später prüfbar

Evidenz ist ein Produkt des Ablaufs. Limitinventar, Verbrauchsmessung, Headroom-Ziel, Alarm und genehmigter Kapazitätsweg werden über retry-after verbunden und in einem Speicher abgelegt, den der ausführende Prinzipal nicht nachträglich unbemerkt verändern kann. Die Aufbewahrung richtet sich nach Betriebs-, Sicherheits- und Nachweisanforderungen. Sensible Werte werden minimiert oder maskiert; ein Audit-Log darf nicht selbst zum Secret- oder Personendatenarchiv werden.

Ein Abschlussnachweis beantwortet sechs Fragen: Wer löste den Übergang aus, was wurde freigegeben, welcher Scope war betroffen, welche automatischen und menschlichen Gates griffen, welche Wirkung wurde gemessen und welcher Restfehler blieb? Diese Struktur beschleunigt sowohl Incident-Diagnose als auch regelmäßige Reviews. Sie erlaubt außerdem, wiederkehrende manuelle Ausnahmen, lange Wartezeiten und häufige Abbrüche als Signale für eine schlechte Plattform-Schnittstelle zu erkennen.

Für die technische Abnahme wird eine kleine Nachweismatrix gepflegt. Ihre Zeilen sind Normalbetrieb, Grenzfall, abgelehnter Fall, Kontrollausfall und Recovery; ihre Spalten sind Eingabe, erwarteter Zustand, Messpunkt, Frist und Owner. Dabei werden **erhöhbare Quota, harte Dienstgrenze und Client-Drosselung** getrennt betrachtet, weil eine erfolgreiche Probe der einen Klasse keine Aussage über die anderen liefert. Als gemeinsame Referenzen dienen `Quota-Name, Scope und aktuelle Nutzung`. Die IDs müssen bereits bei der Ausführung entstehen und durch Telemetrie, Ticket und Auditstrom weitergereicht werden. Nachträgliches Zusammenführen anhand ungefähr gleicher Uhrzeiten ist nur eine schwache Ersatzlösung. Die Matrix wird bei einer neuen Abhängigkeit, einem geänderten Scope oder einer geänderten Wiederherstellungsannahme aktualisiert und als Teil des Changes geprüft.

Der wichtigste Abnahmesatz lautet, dass **Failoverlast plus Sicherheitsreserve unter dem wirksamen Limit bleibt**. Um ihn zu widerlegen, braucht der Test mindestens einen erlaubten und einen bewusst unerlaubten Fall. Zusätzlich wird geprüft, was bei einem Timeout nach bereits eingetretener Wirkung geschieht. Die Automatisierung darf einen solchen Schritt nicht blind wiederholen. Sie liest zuerst den beobachtbaren Zustand und entscheidet dann zwischen Fortsetzen, kompensierender Aktion und Eskalation. Für schreibende Übergänge existiert ein Idempotenzschlüssel oder ein fachlich gleichwertiger Schutz. Dadurch wird aus einem Transportfehler kein doppelter Infrastruktur-, Daten- oder Berechtigungseingriff.

Die regelmäßige Betriebsprüfung nimmt anschließend reale Veränderungen in den Blick. Sie vergleicht dokumentierte Owner mit aktiven Berechtigungen, erwartete mit beobachteten Abhängigkeiten, vereinbarte mit gemessenen Wiederherstellungszeiten und geplante mit tatsächlich genutzten Ausnahmen. Abweichungen werden nach möglicher Nutzerwirkung und verbleibendem Zeitfenster priorisiert. Ein Befund gilt erst als geschlossen, wenn die technische Ursache behoben, die Kontrolle erneut ausgeführt und die Evidenz am selben Objekt verknüpft wurde. Wiederholte manuelle Eingriffe sind ein Signal für eine fehlende Plattformfähigkeit und werden in einen standardisierten Self-Service-Pfad oder eine bewusst akzeptierte Sonderverantwortung überführt.

## Quellen

- AWS Well-Architected Framework, Reliability Pillar — Manage service quotas and constraints — https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/manage-service-quotas-and-constraints.html
- AWS Architecture Blog: Exponential Backoff And Jitter — https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
- Google Cloud: Working with quotas — https://cloud.google.com/docs/quotas/overview
- Microsoft Azure Well-Architected Framework: Reliability — https://learn.microsoft.com/azure/well-architected/reliability/
- Google SRE Book: Handling Overload — https://sre.google/sre-book/handling-overload/
- Google SRE Book: Addressing Cascading Failures — https://sre.google/sre-book/addressing-cascading-failures/
- Google Cloud: Reservations of Compute Engine zonal resources — https://cloud.google.com/compute/docs/instances/reservations-overview
- Microsoft Azure Well-Architected Framework: Cost Optimization — https://learn.microsoft.com/azure/well-architected/cost-optimization/
