SLOs pro Dependency sind ein pragmatischer Ansatz, um Zuverlässigkeit dort messbar zu machen, wo sie in der Praxis kippt: bei Abhängigkeiten wie Datenbank, Cache oder externer API. Viele Teams definieren ein einziges Service Level Objective (Service Level Objective, SLO) für den gesamten Service und wundern sich dann, warum Incidents schwer zuzuordnen sind. Der Grund ist simpel: Der End-to-End-SLO misst zwar den Kundeneindruck, aber er sagt nicht, welche Komponente das Error Budget „verbraucht“. Wenn eine Datenbank langsam wird, ein Cache ineffizient ist oder eine externe API sporadisch ausfällt, sehen Sie im globalen SLO nur „Fehler“ oder „Latenz“. Mit SLOs pro Dependency schaffen Sie eine klare Trennung: Jede zentrale Abhängigkeit bekommt eigene Service Level Indicators (SLIs), ein eigenes SLO und ein eigenes Error Budget. Dadurch wird sichtbar, ob die Datenbank-Latenz den Service destabilisiert, ob Cache-Misses die Datenbank überlasten oder ob eine Drittanbieter-API das System in Retries und Timeouts treibt. Dieser Artikel zeigt, wie Sie SLOs pro Dependency sauber definieren, wie Sie Datenbank-, Cache- und externe-API-SLOs sinnvoll zuschneiden, welche Metriken sich bewährt haben und wie Sie die Ergebnisse in Incident Response und Kapazitätsplanung nutzen.
Warum SLOs pro Dependency oft besser funktionieren als ein einzelner End-to-End-SLO
Ein End-to-End-SLO ist weiterhin wichtig, weil er die Nutzerperspektive abbildet. Er ist aber nur die Spitze des Eisbergs. In modernen Systemen hängen Services typischerweise von mehreren Komponenten ab: relationalen oder NoSQL-Datenbanken, Caches wie Redis/Memcached, Message Queues, Service Mesh, DNS, externe SaaS-APIs oder Zahlungssysteme. Jede dieser Abhängigkeiten hat eigene Failure Modes und eigene Leistungscharakteristika.
- Diagnosegeschwindigkeit: Wenn jede Dependency eigene SLIs hat, erkennen Sie schneller, wo sich eine Störung „aufbaut“.
- Verantwortlichkeiten: Teams können Ownership klarer festlegen (z. B. Plattform verantwortet Datenbank, Feature-Team verantwortet Cache-Nutzung).
- Gezielte Verbesserungen: Statt pauschal „Service ist zu langsam“ können Sie konkret „DB p95 steigt“ oder „Upstream 5xx nimmt zu“ adressieren.
- Bessere Entscheidungen im Incident: Mit Dependency-SLOs lässt sich schneller entscheiden, ob Mitigation über Fallback, Degradation oder Failover sinnvoll ist.
Als konzeptionelle Grundlage zu SLOs, SLIs und Error Budgets ist das SRE-Standardwerk eine gute Referenz: Service Level Objectives (Google SRE Book).
Begriffe sauber ziehen: SLI, SLO und Error Budget pro Dependency
Für SLOs pro Dependency gelten dieselben Grundbegriffe wie für End-to-End-SLOs – nur der Messpunkt ist anders. Der SLI beschreibt, wie gut eine Dependency aus Sicht des aufrufenden Services funktioniert. Das SLO ist das Ziel, das Sie für diesen SLI festlegen. Das Error Budget ist der tolerierbare Anteil „schlechter“ Ereignisse in einem Zeitfenster.
- Dependency-SLI: Messung am Client (Service), nicht nur am Server (Dependency). Beispiel: „DB-Query-Latenz gemessen im Service“ statt „DB-CPU“.
- Dependency-SLO: Zielwert pro Zeitfenster (z. B. 28 Tage) für Verfügbarkeit oder Latenz.
- Error Budget: Tolerierbare „schlechte“ Events (Timeouts, Fehlercodes, zu langsame Antworten).
Error-Budget-Berechnung mit MathML
Ein einfaches Error Budget basiert auf dem Anteil guter Requests. Wenn das SLO 99,9% beträgt, sind 0,1% „schlecht“ erlaubt. Für ein Zeitfenster mit N Requests ergibt sich das Budget als:
B = N ⋅ ( 1 – S )
Dabei ist S das SLO als Dezimalzahl (z. B. 0,999) und B die maximale Anzahl schlechter Events. Bei Dependency-SLOs ist entscheidend, dass N die Requests an die Dependency sind (z. B. DB-Queries), nicht die End-to-End-Requests der Nutzer.
Methodik: So schneiden Sie Abhängigkeiten sinnvoll zu
Damit SLOs pro Dependency nicht in Metrik-Overhead ausarten, brauchen Sie klare Regeln, welche Abhängigkeiten ein eigenes SLO bekommen. Ein praktikabler Zuschnitt orientiert sich an „kritisch und variabel“: Abhängigkeiten, die häufig Incidents verursachen oder deren Verhalten stark schwankt, profitieren am meisten.
- Kritikalität: Ohne diese Dependency kann der Service nicht funktionieren oder nicht sinnvoll degradieren.
- Einfluss auf Nutzer-SLO: Kleine Verschlechterungen wirken sich schnell auf p95/p99 oder Fehlerquote aus.
- Eigenständige Failure Modes: Timeouts, Rate Limits, Throttling, Hot Partitions, Cache Stampede.
- Messbarkeit: Sie können SLIs zuverlässig am Client messen (Instrumentation, Logs, Traces, Metriken).
Ein guter Einstieg ist, pro Service 2–4 Dependencies zu wählen: typischerweise Datenbank, Cache, eine externe API und optional Messaging oder DNS, falls dort regelmäßig Probleme entstehen.
SLOs für die Datenbank: Verfügbarkeit ist nicht genug
Bei der Datenbank ist das häufigste Missverständnis: „DB ist up“ bedeutet nicht „DB ist gut“. In der Praxis sind Latenz, Sättigung und Fehlerraten entscheidend, weil schon moderate Latenzerhöhungen die gesamte Request-Kette verlängern. Deshalb sind Datenbank-SLOs in der Regel Kombinationen aus Fehler- und Latenz-SLIs.
Empfohlene Datenbank-SLIs
- Query-Erfolgsrate: Anteil erfolgreicher DB-Operationen (ohne Timeout, ohne Error Codes).
- Query-Latenz (p95/p99): Gemessen am Client im Service, getrennt nach Read/Write.
- Timeout-Rate: Anteil von Operationen, die das Client-Timeout überschreiten.
- Connection-Fehler: Verbindungsaufbaufehler, Pool-Exhaustion, TLS-Handshake-Fehler (falls relevant).
Wie Sie ein Datenbank-SLO definieren
Ein häufig praktikables Modell ist ein Latenz-SLO plus ein Fehler-SLO. Beispiel (nur als Struktur, nicht als „One size fits all“):
- DB Fehler-SLO: ≥ 99,95% erfolgreiche DB-Operationen im 28-Tage-Fenster.
- DB Latenz-SLO: ≥ 99% der DB-Operationen schneller als X ms (clientseitig gemessen).
Der Schwellenwert X sollte sich an Ihrer Applikation orientieren: Wenn Ihr Service-Endpunkt ein p99 von 250 ms erreichen muss, kann eine DB-p95 von 80 ms bereits problematisch sein – insbesondere wenn mehrere Queries pro Request stattfinden.
Wichtige Stolpersteine bei Datenbank-SLOs
- Nur Servermetriken nutzen: DB-CPU oder Buffer Cache Hit Rate sind Diagnosemetriken, aber keine SLIs aus Service-Sicht.
- Queries nicht klassifizieren: Read/Write, wichtige Tabellen oder Hot Keys sollten getrennt betrachtet werden, sonst verwässert der SLI.
- Pooling ignorieren: Wenn der Connection Pool voll ist, sieht die DB vielleicht „gesund“ aus, der Service aber nicht.
SLOs für den Cache: Hit Rate ist kein SLO
Beim Cache liegt das zweite große Missverständnis: Teams definieren „Cache Hit Rate“ als Ziel, obwohl sie kein direktes Zuverlässigkeitsmaß ist. Eine hohe Hit Rate kann trotzdem schlechte Nutzerlatenz bedeuten (z. B. weil Cache-Latenz hoch ist), und eine niedrigere Hit Rate kann okay sein, wenn das System sauber degradiert. Für SLOs pro Dependency ist beim Cache entscheidend, wie zuverlässig und schnell der Cache Antworten liefert und wie stark Cache-Probleme auf Downstream-Systeme durchschlagen.
Empfohlene Cache-SLIs
- Cache-Operationserfolg: Anteil erfolgreicher GET/SET/DEL-Operationen (ohne Timeout, ohne Errors).
- Cache-Latenz (p95/p99): Clientseitig gemessen; getrennt nach Operationstyp.
- Timeout-Rate: Besonders wichtig, weil Cache-Timeouts oft Retries und DB-Fallback triggern.
- Fallback-Quote: Anteil Requests, die wegen Cache-Problemen auf Datenbank oder andere Quellen ausweichen.
Cache-SLOs sinnvoll zuschneiden
Cache-SLOs sollten den „Schaden“ sichtbar machen, den Cache-Probleme anrichten. Zwei typische Ziele:
- Cache-Verfügbarkeit/Latenz: Cache-Operationen sind schnell genug, um End-to-End-Latenz nicht zu dominieren.
- Stabiler Fallback: Wenn Cache ausfällt, bleibt das System kontrolliert (Degradation statt Stampede).
Für viele Systeme ist deshalb ein zusätzlicher SLI hilfreich: „DB-Queries pro Request“ oder „DB-QPS durch Cache-Misses“. Wenn dieser Wert beim Cache-Ausfall stark steigt, ist das ein klares Korrelationssignal für Cache Stampede und eine wichtige Grundlage für Capacity Guardrails.
Cache Failure Modes, die SLOs sichtbar machen sollen
- Cache Stampede: Viele Misses gleichzeitig, DB wird überlastet, Latenz steigt stark an.
- Evictions und Hot Keys: Schlüssel werden zu früh verdrängt, Misses steigen, Downstream-Last wächst.
- Netzwerk-/Kernel-Limits: Packet Drops oder CPU-Saturation auf Cache-Nodes führen zu Timeouts.
- Throttling/Maxmemory: Requests werden abgelehnt oder verzögert.
SLOs für externe APIs: Verträge, Rate Limits und „Unknown Unknowns“
Externe APIs sind eine spezielle Kategorie: Sie sind häufig außerhalb Ihrer Kontrolle, haben eigene SLOs, Rate Limits, Wartungsfenster und manchmal unklare Fehlersemantik. Genau deshalb lohnt sich ein eigenes Dependency-SLO: Es macht sichtbar, wann ein Drittanbieter Ihre Zuverlässigkeit gefährdet, und es liefert harte Daten für Eskalation, Vertragsgespräche oder Architekturentscheidungen (z. B. Caching, Queueing, Fallback).
Empfohlene externe-API-SLIs
- Erfolgsrate nach Klasse: 2xx/3xx vs. 4xx/5xx, getrennt nach „client fault“ und „upstream fault“.
- Timeout-Rate: Timeouts sind oft wichtiger als 5xx, weil sie Ressourcen binden und Retries triggern.
- Latenz (p95/p99): Gemessen am Client, inklusive DNS/TLS/Connect, wenn möglich.
- Rate-Limit-Indikatoren: 429s, spezifische Header, „quota exhausted“, Retry-After.
- Retry-Volumen: Anzahl Retries pro Request oder pro Zeitfenster, um Retry-Stürme zu erkennen.
Wie Sie ein externes-API-SLO definieren, ohne sich selbst zu sabotieren
Externe APIs haben oft unterschiedliche Endpunkte mit unterschiedlicher Kritikalität. Ein einzelnes SLO pro Provider ist häufig zu grob. Besser: Gruppieren Sie nach „kritische Pfade“ und „optionale Features“.
- Kritischer Pfad: Endpunkte, ohne die Kernfunktionen nicht arbeiten (z. B. Payment Authorization).
- Nicht-kritisch: Endpunkte, die im Notfall degradiert werden können (z. B. Enrichment, Recommendation).
Zusätzlich sollten Sie das SLO so wählen, dass es Ihre Architektur berücksichtigt: Wenn Sie bei Provider-Ausfall sauber degradieren (z. B. asynchron, Queue, späterer Retry), muss das externe-API-SLO nicht identisch mit dem Nutzer-SLO sein. Es sollte aber klar machen, wie oft und wie stark der Provider „stört“.
SLI-Design: Client-Sicht, Server-Sicht und die Rolle von Tracing
Der größte Hebel für hochwertige Dependency-SLOs ist Instrumentation am Client. Servermetriken der Dependency (DB-CPU, Cache-Memory, API-Statuspage) sind hilfreich, aber nicht ausreichend. Entscheidend ist, was der aufrufende Service erlebt: Latenz, Timeout, Fehlercodes und Retries.
- Client-Metriken: Timer und Counter in der Bibliothek (DB-Client, Redis-Client, HTTP-Client).
- Service Mesh / Proxy-Metriken: Falls vorhanden, liefern sie konsistente L7-Kennzahlen (Requests, Errors, Latency) pro Upstream.
- Distributed Tracing: Spans pro Dependency zeigen, ob Latenz im Netzwerk, im TLS-Handshake oder in der Upstream-Verarbeitung entsteht.
Wenn Sie SLOs stärker standardisieren möchten, ist das OpenSLO-Format ein hilfreicher Referenzpunkt: OpenSLO Spezifikation. Für Tracing- und Metrik-Grundlagen bietet OpenTelemetry eine breite, herstellerneutrale Basis: OpenTelemetry Dokumentation.
Aggregation und Gewichtung: Was tun, wenn ein Request mehrere Dependencies nutzt?
Viele Requests rufen nicht nur eine Dependency auf, sondern mehrere: Cache + DB, DB + externe API, oder mehrere DB-Queries pro Request. Das führt zu einer wichtigen Designentscheidung: Definieren Sie SLIs pro Operation (z. B. pro Query) oder pro Request (z. B. „Request gilt als schlecht, wenn irgendeine Dependency schlecht war“)?
- Pro Operation: Gut, um technische Qualität der Dependency zu messen, aber kann den Nutzerimpact unterschätzen.
- Pro Request: Gut, um Impact sichtbar zu machen, aber schwerer zu debuggen, wenn mehrere Calls beteiligt sind.
In der Praxis ist eine Kombination üblich: ein operation-basierter SLI (z. B. DB-Query-Latenz) plus ein request-basierter SLI für kritische Pfade (z. B. „Checkout-Request: DB + Payment API“). Wichtig ist, die Definitionen sauber zu dokumentieren, damit Teams bei Incidents nicht über Messlogik diskutieren.
Error Budget Policy pro Dependency: Was passiert, wenn es brennt?
Dependency-SLOs sind nur dann wirksam, wenn Sie klare Regeln definieren, was bei Budget-Verbrauch passiert. Sonst bleiben sie reine Observability. Eine praxistaugliche Error-Budget-Policy pro Dependency kann so aussehen:
- Budget-Verbrauch steigt: Warnung an Service-Owner und Dependency-Owner, Incident-Risiko steigt.
- Budget fast aufgebraucht: Change Freeze oder strengere Deploy-Gates für Änderungen, die die Dependency belasten (z. B. neue Queries, neue Endpunkte).
- Budget überschritten: Priorität auf Stabilisierung: Performance-Fixes, Kapazität, Fallback-Mechanismen, Rate Limits.
Damit das nicht zur Bürokratie wird, sollten die Regeln einfach sein und sich an Ihrer Incident-Historie orientieren. Ein guter Einstieg in den Error-Budget-Gedanken ist ebenfalls im SRE-Kontext beschrieben: Embracing Risk (Google SRE Book).
Praktische Beispiele: SLOs pro Dependency für Datenbank, Cache und externe API
Damit die Theorie nicht abstrakt bleibt, hier drei typische SLO-Strukturen, die Sie anpassen können. Entscheidend ist nicht der exakte Zahlenwert, sondern die klare Definition von „gut“ und „schlecht“.
Beispiel Datenbank
- SLI: Anteil erfolgreicher DB-Operationen (ohne Timeout, ohne Fehler) im Service gemessen.
- SLO: 99,95% Erfolg in 28 Tagen.
- Zusatz-SLI: 99% der DB-Operationen unter X ms (p99 oder Threshold-basiert).
Beispiel Cache
- SLI: Cache-Operationserfolg (GET/SET) ohne Timeout.
- SLO: 99,9% Erfolg in 28 Tagen.
- Zusatz-SLI: Fallback-Quote unter Y% (z. B. Anteil Requests, die wegen Cache-Problemen DB nutzen).
Beispiel externe API
- SLI: Erfolgsrate für kritische Endpunkte (z. B. 2xx/3xx, ohne 429/5xx/Timeout).
- SLO: 99,5% Erfolg in 28 Tagen (kritische Pfade), getrennt von nicht-kritischen Endpunkten.
- Zusatz-SLI: Timeout-Rate unter Z% und Latenz p95 unter definierter Schwelle.
Reporting und Dashboards: Damit Dependency-SLOs im Alltag genutzt werden
Ein häufiges Problem ist, dass SLOs zwar definiert, aber nicht operationalisiert werden. Für SLOs pro Dependency sollten Dashboards nicht nur SLO-Gauges zeigen, sondern den „Warum“-Kontext: Welche Metrik hat das Budget verbraucht, in welchem Zeitfenster, und gibt es eine Korrelation zu Changes oder Traffic? Ein gutes Dashboard pro Dependency enthält:
- SLO-Status und Error-Budget-Verbrauch über 7/28 Tage
- Fehlerklassifikation (Timeouts vs. 5xx vs. Rate Limits)
- Latenzverteilung (p50/p95/p99) und Threshold-Verstöße
- Traffic und Concurrency (QPS, aktive Connections, Pool-Auslastung)
- Change-Overlay (Deployments, Config-Änderungen, Feature Flags)
Häufige Fehlkonfigurationen bei Dependency-SLOs
- SLIs messen „Health“, nicht Nutzerimpact: DB-CPU ist kein SLI; es ist ein Diagnose-Signal.
- Timeouts nicht als Fehler zählen: Timeouts sind oft der schädlichste Fehler, weil sie Ressourcen binden und Retries auslösen.
- Fehlercodes falsch klassifizieren: Bei externen APIs sind 429s oft „Kapazitäts-/Quota-Problem“, nicht einfach „Fehler“.
- Aggregationslogik unklar: Pro Operation vs. pro Request nicht sauber dokumentiert.
- Zu viele SLOs ohne Ownership: Jedes SLO braucht Verantwortliche, sonst veraltet es.
Outbound-Quellen für vertiefende Informationen
- Service Level Objectives (Google SRE Book)
- Embracing Risk und Error Budgets (Google SRE Book)
- OpenSLO Spezifikation für SLO-Definitionen
- OpenTelemetry: Metriken, Traces und Instrumentation
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.

