Error Budget für Netzwerk-Dependencies: So berechnest du es

Ein Error Budget für Netzwerk-Dependencies ist eines der wirksamsten Werkzeuge, um Zuverlässigkeit und Veränderungsgeschwindigkeit in Einklang zu bringen. Während SLOs (Service Level Objectives) definieren, wie zuverlässig ein Dienst aus Nutzersicht sein soll, beschreibt das Error Budget, wie viel „Unzuverlässigkeit“ innerhalb eines Zeitfensters akzeptabel ist, ohne das SLO zu verletzen. Genau bei Netzwerk-Dependencies wird das Thema besonders praktisch: DNS-Resolver, Load Balancer, Service-Mesh, CDN, externe APIs, Datenbank-Cluster über WAN oder auch Identity-Provider sind häufige Ursachen für Störungen, Timeouts und Latenz-Spitzen. Wer hier nur auf Bauchgefühl setzt, reagiert meist zu spät oder übersteuert: Entweder werden Deployments unnötig gestoppt, oder Risiken werden ignoriert, bis Kunden es merken. In diesem Artikel lernen Sie Schritt für Schritt, wie Sie ein Error Budget für Netzwerk-Dependencies sauber definieren und berechnen, wie Sie es auf einzelne Abhängigkeiten aufteilen und wie Sie Messdaten so nutzen, dass die Berechnung nicht nur theoretisch stimmt, sondern im Betrieb echte Entscheidungen unterstützt.

Table of Contents

Was bedeutet „Error Budget“ im Kontext von Netzwerk-Abhängigkeiten?

Ein Error Budget ist die rechnerische Differenz zwischen 100 % und Ihrem SLO-Ziel für eine definierte Periode. Es ist also ein „Budget“ an Fehlverhalten, das Sie sich leisten können. Bei Netzwerk-Dependencies wird dieses Budget häufig durch Fehlerbilder verbraucht, die nicht direkt im eigenen Code entstehen, aber Ihre End-to-End-Experience trotzdem ruinieren: Paketverlust, Verbindungsabbrüche, DNS-Timeouts, TLS-Handshake-Probleme, Überlastung an Gateways oder Rate-Limits bei externen APIs.

  • SLO: Zielwert, z. B. „99,9 % erfolgreiche Requests“ pro 30 Tage.
  • Error Budget: erlaubter Anteil an „nicht erfolgreichen“ Events im selben Zeitraum, z. B. 0,1 %.
  • Netzwerk-Dependency: ein externer oder interner Netzwerkpfad/Service, auf den Ihr Dienst angewiesen ist (z. B. DNS, Gateway, Upstream-API, Service-to-Service über Mesh).

Für ein solides Fundament zu SLOs und Error Budgets ist das Kapitel im Google SRE Book über Service Level Objectives eine etablierte Referenz.

Erst definieren, dann rechnen: SLI und „was zählt als Fehler“

Bevor Sie ein Error Budget für Netzwerk-Dependencies berechnen, müssen Sie klar festlegen, welche Ereignisse in den SLI (Service Level Indicator) einfließen. Bei Netzwerkthemen ist das entscheidend, weil „Fehler“ nicht immer nur ein HTTP-5xx ist. Ein Timeout kann als 504 sichtbar werden, kann aber auch als Client-Abbruch erscheinen. Ein DNS-Problem kann als „Name resolution failed“ auftreten, ohne dass Ihr Backend überhaupt erreicht wurde.

Praktische SLI-Definitionen für Netzwerk-Dependencies sind zum Beispiel:

  • Request-Erfolg: Anteil erfolgreicher Requests (z. B. HTTP 2xx/3xx, ggf. definierte 4xx-Ausnahmen).
  • Dependency-Erfolg: Anteil erfolgreicher Calls zu einer bestimmten Abhängigkeit (z. B. Upstream-API, DNS-Resolver).
  • Timeout-Rate: Anteil von Requests/Dependency-Calls, die ein Timeout auslösen.
  • Handshake-Erfolg: Anteil erfolgreicher TLS-Handshakes (relevant bei mTLS, Service Mesh, Edge).

Wichtig ist die Konsistenz: Definieren Sie „Fehler“ so, dass es Ihre Nutzererfahrung abbildet und sich über Zeit stabil messen lässt. Für die Einordnung von HTTP-Statuscodes kann der Überblick zu HTTP-Statuscodes bei MDN hilfreich sein.

Die Grundformel: Error Budget aus SLO und Zeitraum berechnen

Der Einstieg ist simpel: Wenn Ihr SLO für „Erfolg“ bei 99,9 % liegt, beträgt das Error Budget 0,1 % im betrachteten Zeitraum. Entscheidend ist, wie Sie das in „zumutbare Ausfälle“ (Zeit oder Events) übersetzen. Je nach SLI können Sie in zwei Welten rechnen:

  • Event-basiert: Anzahl zulässiger fehlgeschlagener Events (Requests, Dependency-Calls).
  • Zeit-basiert: zulässige „Downtime“ innerhalb des Fensters (nur sinnvoll, wenn „Fehler“ als „nicht verfügbar“ modelliert ist).

Event-basiertes Error Budget

Wenn Ihr SLI auf Events basiert (z. B. „successful requests / total requests“), berechnen Sie das Budget als maximal zulässige Fehleranzahl:

Bevents = N · ( 1 Starget )

Dabei ist N die Gesamtzahl der Events im Zeitraum und Starget das SLO-Ziel (z. B. 0,999).

Zeit-basiertes Error Budget

Wenn Sie Verfügbarkeit als „Up/Down“ modellieren (z. B. pro Minute „verfügbar“), können Sie das Budget als Zeit berechnen:

Btime = T · ( 1 Starget )

Hier ist T die Gesamtdauer des Zeitfensters (z. B. 30 Tage). Diese Sicht passt besonders gut, wenn eine Dependency eindeutig „nicht erreichbar“ ist. Bei degradierten Zuständen (hohe Latenz, partielle Fehler) ist die Event-Sicht oft präziser.

Warum Netzwerk-Dependencies eigene Budgets brauchen

Viele Teams definieren ein Error Budget nur auf Service-Ebene („unser API-SLO“). Das ist ein guter Start, aber es hilft begrenzt, wenn 70 % des Budgetverbrauchs durch ein Gateway, DNS oder eine Upstream-API entstehen. Netzwerk-Dependencies sind oft:

  • geteilte Infrastruktur: Ein Ausfall trifft viele Services gleichzeitig.
  • extern beeinflusst: Peering, Provider, Cloud-Regionen, DDoS-Mitigations oder Rate-Limits.
  • schwerer zu debuggen: Symptome verteilen sich über Clients, Proxies, Mesh, Edge und Backends.

Ein eigenes Error Budget pro Dependency macht Ursachen sichtbar und ermöglicht klare Maßnahmen: Eskalation an Provider, Architekturänderungen, bessere Timeouts, Fallbacks oder Caching.

Schritt-für-Schritt: Error Budget für eine einzelne Netzwerk-Dependency berechnen

Nehmen wir ein typisches Beispiel: Ihr Service ruft eine externe Zahlungs-API (Dependency) pro Checkout auf. Sie möchten ein Budget für diese Dependency, das zum Gesamt-SLO passt.

Schritt 1: Zeitfenster festlegen

Wählen Sie ein SLO-Fenster, das zur Organisation passt (häufig 28 oder 30 Tage). Ein kürzeres Fenster reagiert schneller, ein längeres glättet Ausreißer. Wichtig ist: Das gleiche Fenster sollte für Service-SLO und Dependency-SLO kompatibel sein, sonst werden Budgets schwer vergleichbar.

Schritt 2: SLI für die Dependency definieren

Für die Dependency kann der SLI etwa lauten: „Anteil erfolgreicher Dependency-Calls ohne Timeout“. Entscheiden Sie, ob Sie Timeouts, 5xx und bestimmte 4xx als Fehler zählen. Bei Rate-Limits (429) hängt es davon ab, ob Sie diese durch eigenes Verhalten (Burst, fehlendes Backoff) beeinflussen.

Schritt 3: Datenbasis bestimmen

Sie brauchen Gesamtzahl der Dependency-Calls und Fehleranzahl im Fenster. Achten Sie darauf, dass Retries nicht heimlich das Bild verzerren: Ein einzelner Nutzer-Request kann mehrere Dependency-Calls erzeugen. Für eine betriebliche Steuerung ist es oft sinnvoll, sowohl „erste Versuche“ als auch „inkl. Retries“ getrennt zu messen.

Schritt 4: Budget berechnen

Angenommen, Sie setzen für die Dependency ein Ziel von 99,95 % Erfolg. Im Zeitraum haben Sie 2.000.000 Calls.

Bevents = 2000000 · ( 1 0.9995 ) = 1000

Das bedeutet: In diesem Fenster sind bis zu 1.000 fehlerhafte Dependency-Calls „im Budget“. Alles darüber verbraucht das Budget und signalisiert Handlungsbedarf.

Vom Service-SLO zum Dependency-Budget: Budget-Allokation in der Praxis

Die schwierigere Frage lautet: Wie leiten Sie ein Dependency-Budget ab, das sinnvoll zum Gesamt-SLO Ihres Services passt? Dafür gibt es zwei praxisnahe Wege: Top-down-Allokation und Bottom-up-Kalibrierung. Beide lassen sich kombinieren.

Top-down: Budget-Anteile pro Fehlerquelle definieren

Sie starten mit dem Service-SLO und teilen das Error Budget auf Fehlerklassen auf, etwa „eigener Code“, „Datenbank“, „Upstream-APIs“, „Netzwerk/Edge“. Beispiel: Service-SLO 99,9 % pro 30 Tage. Das Service-Error-Budget beträgt 0,1 %.

Wenn Sie festlegen, dass maximal 40 % des Service-Budgets durch Netzwerk-Dependencies verbraucht werden dürfen, ergibt sich ein „Netzwerk-Budget-Anteil“:

Bnet = Bservice · wnet

Mit wnet als Anteil (hier 0,4). Diese Methode ist gut, wenn Sie klare Verantwortlichkeiten und Prioritäten brauchen.

Bottom-up: Historische Daten als Realitätscheck

Sie analysieren die letzten Wochen/Monate: Wie viele Service-Fehler gehen tatsächlich auf welche Dependency zurück? Daraus leiten Sie ein realistisches Budget ab, das Verbesserungen fordert, aber nicht permanent „rot“ ist. Diese Methode eignet sich besonders, wenn Sie am Anfang stehen oder wenn eine Dependency volatil ist.

Netzwerk-Dependencies korrekt modellieren: Ketten, Parallelität und „fan-out“

In modernen Architekturen ist ein Service selten von genau einer Dependency abhängig. Häufig gibt es Ketten (A ruft B, B ruft C) oder Parallelität (mehrere Calls gleichzeitig). Das beeinflusst die Budgetrechnung.

Serielle Ketten: Gesamterfolg als Produkt der Erfolgswahrscheinlichkeiten

Wenn ein Nutzer-Request seriell mehrere Dependencies benötigt und jeder Schritt erfolgreich sein muss, sinkt die Gesamterfolgsrate. Vereinfacht kann man den Gesamterfolg als Produkt betrachten:

Stotal = S1 · S2 · S3

Das ist ein Modell, kein Naturgesetz. In der Praxis können Fallbacks oder Teilantworten die Abhängigkeit abschwächen. Dennoch hilft es, zu verstehen: Wenn Sie viele serielle Netzwerk-Dependencies haben, brauchen einzelne Dependencies oft höhere Erfolgsziele, damit das Service-SLO insgesamt erreichbar bleibt.

Fan-out: Ein Request erzeugt viele Dependency-Calls

Wenn ein Nutzer-Request zehn parallele Calls auslöst und jeder benötigt wird, steigen Fehlerchancen. Wenn dagegen „best effort“ reicht (z. B. Empfehlungen), können Sie einen Teil der Fehler tolerieren, ohne Nutzer zu verlieren. Definieren Sie deshalb pro Dependency-Call-Pfad, ob er kritisch ist.

Welche Fehlerarten sollten ins Error Budget einfließen?

Ein robustes Error Budget für Netzwerk-Dependencies berücksichtigt nicht nur harte Ausfälle. Entscheidend ist, was Nutzer und System tatsächlich schädigt:

  • Timeouts: häufig die teuerste Fehlerklasse, weil sie Kapazität bindet und Kaskaden auslösen kann.
  • Verbindungsfehler: TCP-Resets, „connection refused“, Routing-Probleme.
  • TLS-Fehler: Handshake-Failures, Zertifikatsprobleme, mTLS-Mismatch.
  • Serverfehler der Dependency: HTTP 5xx oder gRPC-Errors.
  • Überlastsignale: 429/503 mit Retry-After (je nach Vereinbarung und Client-Verhalten).
  • Degradierte Latenz: nicht „Error“, aber geschäftskritisch; häufig als separates Latenz-SLO behandeln.

Gerade bei Timeouts und Retries lohnt sich ein Blick auf bewährte Resilienz-Muster wie Circuit Breaker und Backoff. Eine gut verständliche Einführung bietet die Beschreibung des Circuit-Breaker-Patterns in den Azure Architecture Patterns.

Budget-Verbrauch messen: Burn Rate und operative Schwellen

Ein Error Budget ist erst dann wirklich nützlich, wenn Sie nicht nur „wie viel ist übrig“, sondern auch „wie schnell verbrennen wir es“ sehen. Dafür wird häufig die Burn Rate genutzt: Sie beschreibt, wie schnell das Budget im Vergleich zur zulässigen Rate aufgebraucht wird.

Burn Rate als Verhältnis von Ist-Fehlerrate zu Budget-Fehlerrate

Die Budget-Fehlerrate ist 1Starget. Die Ist-Fehlerrate ergibt sich aus Messdaten (Fehler/Total). Daraus:

BR = eactual 1 Starget

Wenn BR = 1, verbrauchen Sie Budget genau im erwartbaren Maß. Wenn BR = 10, verbrennen Sie zehnmal schneller als erlaubt und werden das SLO sehr wahrscheinlich reißen, wenn der Zustand anhält. Viele Teams kombinieren kurze und lange Fenster (z. B. 1 Stunde und 6 Stunden), um schnelle Ausreißer und schleichende Probleme zu erkennen.

Typische Stolperfallen bei der Berechnung von Error Budgets für Netzwerk-Dependencies

Die häufigsten Probleme entstehen nicht bei der Mathematik, sondern bei Messdefinition, Datenqualität und Interpretation:

  • Unklare Zählbasis: Zählen Sie Nutzer-Requests oder Dependency-Calls? Beides ist legitim, aber führt zu unterschiedlichen Budgets.
  • Retries verfälschen: Ein Problem wird „wegretetried“ und erscheint nicht als Fehler, verursacht aber hohe Latenz und Last.
  • Fehlerklassifikation fehlt: DNS, TCP, TLS und HTTP werden in einem Topf gemessen; Ursachen bleiben unsichtbar.
  • Zu grobe Zeitfenster: Nur Monatswerte ohne Burn-Rate-Sicht verhindern schnelle Reaktion.
  • Fehlende Segmentierung: Region, ISP, Client-Typ, Edge-PoP oder spezifische Upstream-Cluster sind oft der Schlüssel.

Für eine standardisierte Erfassung von Netzwerk- und Dependency-Signalen (Metriken, Logs, Traces) ist OpenTelemetry eine verbreitete Grundlage, weil es konsistente Semantik und Exportpfade bietet.

Praktisches Vorgehen: So kommen Sie zu belastbaren Budgets

  • 1. Kritische Dependencies identifizieren: Welche Netzwerk-Abhängigkeiten können eine Nutzeraktion verhindern oder stark degradieren?
  • 2. SLIs pro Dependency definieren: Erfolg, Timeout-Rate, ggf. Handshake-Erfolg und separate Latenz-SLIs.
  • 3. Zeitfenster wählen: meist 28/30 Tage, ergänzt um Kurzfenster für Burn-Rate-Alerts.
  • 4. Budget berechnen: event- oder zeitbasiert, mit klarer Zählbasis.
  • 5. Budget allokieren: top-down (Anteile) oder bottom-up (historische Verteilung) – idealerweise kombiniert.
  • 6. Verbrauch operationalisieren: Burn Rate, Alarme, Runbooks, Eskalationspfade zu Provider/Plattformteams.
  • 7. Regelmäßig kalibrieren: Budgets sind kein „Set-and-forget“; Architektur, Traffic und Provider-Verhalten ändern sich.

Beispiel: Error Budget für DNS und Upstream-API in einem Service

Angenommen, Ihr Service hat ein SLO von 99,9 % Erfolg pro 30 Tage auf Nutzer-Requests. In 30 Tagen erwarten Sie 10.000.000 Requests. Das Service-Error-Budget beträgt:

Bservice = 10000000 · ( 1 0.999 ) = 10000

Sie entscheiden, dass maximal 20 % des Service-Budgets durch DNS-Probleme und 30 % durch eine Upstream-API verbraucht werden dürfen (der Rest entfällt auf interne Komponenten, Deployments, Datenbanken etc.). Dann ergeben sich:

  • DNS-Budget: 2.000 „fehlerhafte“ Requests (z. B. DNS-Failure/Timeout sichtbar in Client oder Gateway)
  • Upstream-API-Budget: 3.000 „fehlerhafte“ Requests (z. B. Upstream-Timeout/5xx, der die Nutzeraktion scheitern lässt)

Damit das nicht nur ein Rechenexempel bleibt, müssen Sie die Attribution sauber machen: Welcher Anteil der fehlgeschlagenen Nutzer-Requests lässt sich eindeutig auf DNS vs. Upstream zurückführen? Das gelingt häufig über Fehlercodes, Exception-Typen, Trace-Spans oder Gateway-Logs.

Wie Sie das Budget in Entscheidungen übersetzen: Release-Gates, Prioritäten und „Fairness“

Der praktische Nutzen eines Error Budgets für Netzwerk-Dependencies liegt darin, dass es ein neutrales, datenbasiertes Steuerinstrument wird. Typische Regeln in reifen Organisationen:

  • Budget ok: Normaler Release- und Experimentierbetrieb; Performance-Optimierungen nach Priorität.
  • Budget angespannt: erhöhte Aufmerksamkeit, gezielte Stabilitätsmaßnahmen, Fokus auf Ursachen in betroffenen Dependencies.
  • Budget aufgebraucht: Change-Management strenger: risikoreiche Deployments pausieren, Incident- und Problem-Management priorisieren, Provider-Eskalation und Architekturmaßnahmen starten.

Gerade bei geteilten Netzwerkkomponenten ist „Fairness“ wichtig: Wenn mehrere Teams ein Gateway oder einen Resolver teilen, sollten Budgets transparent und gemeinsam verantwortet werden. Sonst wird das Error Budget politisch statt technisch.

Mess- und Reporting-Empfehlungen für E-E-A-T-taugliche Zuverlässigkeit

Damit Ihre Error-Budget-Berechnung glaubwürdig und auditierbar ist, sollten Sie dokumentieren:

  • Definitionen: SLI, SLO, Zählbasis, Zeitfenster, Fehlerklassen.
  • Datenquellen: welche Metriken/Logs/Traces werden genutzt und wie werden sie aggregiert?
  • Grenzfälle: wie werden Retries, Teilantworten, 429/403/404, Client-Abbrüche behandelt?
  • Ownership: wer reagiert bei Budgetverbrauch (On-Call, Plattformteam, Provider-Management)?
  • Review-Rhythmus: wann werden Ziele und Budgets neu kalibriert (z. B. quartalsweise)?

Wenn Sie diese Bausteine sauber aufsetzen, wird das Error Budget für Netzwerk-Dependencies zu einem stabilen Rahmen, der technische Maßnahmen (Timeout-Tuning, Circuit Breaker, Caching, Multi-Region-Failover) und organisatorische Entscheidungen (Release-Gates, Priorisierung, Eskalation) auf eine gemeinsame Basis stellt.

Cisco Netzwerkdesign, CCNA Support & Packet Tracer Projekte

Cisco Networking • CCNA • Packet Tracer • Network Configuration

Ich biete professionelle Unterstützung im Bereich Cisco Computer Networking, einschließlich CCNA-relevanter Konfigurationen, Netzwerkdesign und komplexer Packet-Tracer-Projekte. Die Lösungen werden praxisnah, strukturiert und nach aktuellen Netzwerkstandards umgesetzt.

Diese Dienstleistung eignet sich für Unternehmen, IT-Teams, Studierende sowie angehende CCNA-Kandidaten, die fundierte Netzwerkstrukturen planen oder bestehende Infrastrukturen optimieren möchten. Finden Sie mich auf Fiverr.

Leistungsumfang:

  • Netzwerkdesign & Topologie-Planung

  • Router- & Switch-Konfiguration (Cisco IOS)

  • VLAN, Inter-VLAN Routing

  • OSPF, RIP, EIGRP (Grundlagen & Implementierung)

  • NAT, ACL, DHCP, DNS-Konfiguration

  • Troubleshooting & Netzwerkoptimierung

  • Packet Tracer Projektentwicklung & Dokumentation

  • CCNA Lern- & Praxisunterstützung

Lieferumfang:

  • Konfigurationsdateien

  • Packet-Tracer-Dateien (.pkt)

  • Netzwerkdokumentation

  • Schritt-für-Schritt-Erklärungen (auf Wunsch)

Arbeitsweise:Strukturiert • Praxisorientiert • Zuverlässig • Technisch fundiert

CTA:
Benötigen Sie professionelle Unterstützung im Cisco Networking oder für ein CCNA-Projekt?
Kontaktieren Sie mich gerne für eine Projektanfrage oder ein unverbindliches Gespräch. Finden Sie mich auf Fiverr.

 

Related Articles