Read in English · Leer en español · Lire en français
Abschnitt 9.8 von 9.8 · Mittelstufe · 25 Min. Lesezeit
Chaos Engineering, Incidents und schuldfreies Lernen
Videolektion
4 Min. · auf Englisch gesprochen, mit UntertitelnNur anhören (Audio)
Transkript lesen
Willkommen zu Abschnitt neun Punkt acht, dem letzten Abschnitt dieses Kapitels. Alles bisher ist ein Versprechen: Timeouts werden auslösen, Breaker werden öffnen, Alerts werden jemanden erreichen. In dieser Lektion geht es darum, diese Versprechen in Belege zu verwandeln.
Die Feuerwehr wartet nicht auf einen echten Brand, um herauszufinden, ob die Schläuche funktionieren. Sie hält Übungen ab. Sie legt kleine, kontrollierte Feuer, um zu üben. Bei einem echten Brand folgt sie einem klaren Plan mit benannten Rollen. Und nach jedem Brand setzt sie sich zusammen, um herauszuarbeiten, was passiert ist, ohne nach einem Schuldigen zu suchen, damit der nächste Einsatz besser läuft. Softwareteams machen es genauso.
Chaos Engineering entstand aus dem Umzug von Netflix in die Cloud, wo Instanzen jederzeit verschwinden konnten. Sein Werkzeug Chaos Monkey beendete während der Geschäftszeiten zufällig Produktionsinstanzen, wenn die Engineers an ihren Schreibtischen saßen, um es zu bemerken. Das entscheidende Wort in der Definition ist Experimentieren. Es geht nicht darum, willkürlich Dinge kaputt zu machen, um zu sehen, was passiert. Es ist die wissenschaftliche Methode, angewandt auf Resilienz.
Beginnen Sie mit einem Steady State: einem messbaren Zeichen für normales Verhalten, etwa aufgegebenen Bestellungen pro Minute, statt CPU. Stellen Sie dann eine Hypothese auf: dass dieses Maß innerhalb der Grenzen bleibt, während der Fehler injiziert wird. Injizieren Sie ein reales Ereignis, etwa eine langsame Abhängigkeit oder eine sterbende Instanz, mit kleinem Blast Radius. Beobachten Sie das Experiment im Vergleich zu einer Kontrollgruppe und lernen Sie daraus: Beheben Sie, was kaputtging, oder erweitern Sie den Radius. Automatisieren Sie es dann, denn Systeme ändern sich täglich. Wird eine Leitplanke verletzt, bricht das Experiment ab und wird automatisch zurückgerollt. Auch das lehrt etwas.
Hier ist ein Experiment. Der Bestellservice ruft den Speisekartenservice mit einem Timeout von dreihundert Millisekunden auf und fällt auf zwischengespeicherte Preise zurück. Die Hypothese: Wenn diese Aufrufe zwei Sekunden langsamer werden, fangen Timeout und Fallback das ab. Der Blast Radius ist eine von zwanzig Instanzen, etwa fünf Prozent des Bestell-Traffics, für fünfzehn Minuten an einem Werktagnachmittag. Es bricht automatisch ab, wenn die Erfolgsquote dieser Instanz unter neunundneunzig Prozent fällt. Bei vierzig Bestellungen pro Sekunde, die jeweils einen Thread null Komma zwei Sekunden plus das Timeout belegen, sagt Littles Gesetz zwanzig belegte Threads von fünfzig voraus. Doch die Erfolgsquote fiel innerhalb von drei Minuten auf siebenundneunzig Prozent, und der Abbruch griff. Traces zeigten, dass das echte Timeout drei Sekunden betrug: Ein Bibliotheks-Standardwert hatte die beabsichtigte Einstellung überschrieben. Die Aufrufe warteten zwei Sekunden, also wurden achtundachtzig Threads gebraucht, und es gibt nur fünfzig. Der Entwurf war richtig. Die Konfiguration nicht. Experimente testen, was deployt ist, nicht, was dokumentiert ist. Das Team hat die Einstellung korrigiert, eine Build-Prüfung ergänzt und wird das Experiment auf eine ganze Zone erweitern.
Game Days proben größere Ausfälle mit dem ganzen Team. Bei einem echten Incident ist der zentrale Gedanke die Trennung der Rollen. Der Incident Commander koordiniert und entscheidet und debuggt bewusst nicht. Die Betriebsleitung und die Responder diagnostizieren und dämmen ein. Die Kommunikationsleitung ist die einzige Stimme nach außen: die Statusseite für Kunden sowie Führungskräfte und Support. Und ein Protokollführer hält Zeitablauf und Entscheidungen fest, die anschließend in das Review einfließen. Rufen Sie Incidents früh aus, definieren Sie den Schweregrad nach den Auswirkungen auf Benutzer und dämmen Sie ein, bevor Sie diagnostizieren: zuerst zurückrollen, umschalten oder Last abwerfen, und das Warum später klären.
Dann kommt der wertvollste Teil: das Lernen. Wenn Engineers mit Bestrafung rechnen, hören sie auf, vollständig zu berichten, und die Organisation verliert genau die Informationen, die sie braucht. Deshalb suchen Reviews nach der zweiten Geschichte: warum der falsche Befehl so leicht auszuführen war. Bei schweren Ausfällen in komplexen Systemen müssen mehrere Mängel zusammenkommen. Eine Kette von Warum-Fragen, die bei menschlichem Versagen endet, hat zu früh aufgehört. Die Mean Time to Recovery, kurz MTTR, ist über viele Incidents hinweg ein schwaches Maß, weil einige sehr lange sie dominieren. Die Auswirkungen auf SLOs und abgeschlossene Systemänderungen sind bessere Anhaltspunkte. Und die stärksten Maßnahmen beseitigen die Gefahr oder schaffen eine Leitplanke. „Sorgfältiger sein“ ist keine Maßnahme.
Damit ist Kapitel 9 abgeschlossen. Wenn Sie so weit sind, machen Sie den optionalen Kapiteltest: zwanzig Multiple-Choice-Fragen und zwei schriftliche Antworten, mit einer Bestehensgrenze von achtzig Prozent. Gehen Sie dann weiter zu Kapitel 10 über cloud-native Architektur und Infrastrukturarchitektur. Bis gleich.
Was Sie wissen müssen
- Chaos Engineering, das aus Chaos Monkey von Netflix hervorging (2011 beschrieben), experimentiert mit einem System, um Vertrauen aufzubauen, dass es turbulenten Bedingungen standhält; es ist ein kontrollierter Test einer Hypothese, kein willkürliches Kaputtmachen.
- Die Principles of Chaos Engineering sind: eine Hypothese über das Verhalten im Steady State, reale Ereignisse, Experimente in der Produktion, kontinuierliche Automatisierung und ein minimaler Blast Radius mit Abbruchbedingungen.
- Game Days proben erhebliche Ausfälle mit dem ganzen Team und testen neben der Software auch Menschen, Zugänge, Runbooks, Backups und Kommunikation.
- Das Incident-Management trennt Rollen: einen Incident Commander, der koordiniert statt zu debuggen, Responder aus dem Betrieb, eine Kommunikationsleitung, die für die Statusseite zuständig ist, und einen Protokollführer; Schweregrade werden nach den Auswirkungen auf Benutzer definiert, und Eindämmung kommt vor Diagnose.
- Schuldfreie Post-Incident-Reviews (Google-SRE-Buch; John Allspaw, 2012) suchen nach zweiten Geschichten und mehreren beitragenden Faktoren statt nach einer einzigen Grundursache oder menschlichem Versagen.
- MTTR über viele Incidents hinweg ist eine irreführende Kennzahl, weil die Dauern stark schief verteilt sind; SLO-Auswirkungen, wiederkehrende Themen und abgeschlossene Systemänderungen sind bessere Anhaltspunkte.
- Starke Maßnahmen beseitigen Gefahren oder schaffen Leitplanken, haben Verantwortliche und Fälligkeitstermine und werden über die Error-Budget-Policy priorisiert; Ermahnungen zur Vorsicht ändern nichts.
Ausfälle absichtlich üben
Alles in diesem Kapitel war bisher ein Versprechen, wie sich das System verhält, wenn etwas schiefgeht: Timeouts werden auslösen, Circuit Breaker werden öffnen, Last wird abgeworfen, Replikate werden übernehmen, Alerts werden jemanden erreichen, der weiß, was zu tun ist. Kapitel 2 hat gewarnt, dass ein Failover, das nie geübt wurde, oft genau dann versagt, wenn es endlich gebraucht wird (Abschnitt 2.5). In diesem Abschnitt geht es darum, diese Versprechen in Belege zu verwandeln, und darum, wie Organisationen auf die Ausfälle reagieren, die trotzdem passieren, und aus ihnen lernen.
Zwei Praktiken gehören zusammen. Vor Ausfällen verursachen Chaos Engineering und Game Days absichtlich kleine, kontrollierte Ausfälle, um Schwachstellen zu finden und Menschen zu trainieren. Nach Ausfällen begrenzt das Incident-Management den Schaden, und schuldfreie Post-Incident-Reviews machen aus jedem Incident eine dauerhafte Verbesserung. Beide beruhen auf derselben Überzeugung: Komplexe Systeme sind immer teilweise kaputt, und Resilienz entsteht dadurch, früh und gefahrlos herauszufinden, wie.
Chaos Engineering
Chaos Engineering entstand aus der Migration von Netflix aus eigenen Rechenzentren zu Amazon Web Services, die nach einer schweren Datenbankbeschädigung im Jahr 2008 begann. Einzelne Cloud-Instanzen konnten jederzeit verschwinden, also baute Netflix Chaos Monkey, ein Werkzeug, das während der Geschäftszeiten zufällig Produktionsinstanzen beendete, wenn die Engineers an ihren Schreibtischen saßen, um daraus entstehende Probleme zu bemerken und zu beheben. Netflix beschrieb es zusammen mit einer Familie verwandter Werkzeuge namens Simian Army in einem Blogbeitrag im Juli 2011. Spätere Werkzeuge gingen weiter: Chaos Kong simulierte den Verlust einer ganzen AWS-Region, indem der Traffic daraus abgezogen wurde.
Engineers von Netflix und andere hielten die Disziplin später als Principles of Chaos Engineering fest (principlesofchaos.org, zuletzt 2019 überarbeitet), die sie definieren als das Experimentieren mit einem System, um Vertrauen in seine Fähigkeit aufzubauen, turbulenten Bedingungen in der Produktion standzuhalten. Das entscheidende Wort ist Experimentieren: Chaos Engineering heißt nicht, Dinge willkürlich kaputt zu machen, um zu sehen, was passiert, sondern die wissenschaftliche Methode auf Resilienz anzuwenden. Die Prinzipien nennen fünf Praktiken:
Eine Hypothese über das Verhalten im Steady State aufstellen. Wählen Sie eine messbare Ausgabe, die normalen Betrieb anzeigt, etwa aufgegebene Bestellungen pro Minute oder den Checkout-SLI, statt interner Metriken wie CPU. Die Steady-State-Hypothese sagt voraus, dass diese Ausgabe innerhalb ihrer Grenzen bleibt, während der Fehler injiziert wird. Reale Ereignisse variieren. Injizieren Sie die Fehler, die tatsächlich vorkommen: sterbende Instanzen, eine langsamer werdende Abhängigkeit, Paketverlust, eine volle Festplatte, ein abgelaufenes Zertifikat, Uhrenabweichung, eine Traffic-Spitze. Experimente in der Produktion durchführen. Nur die Produktion hat den echten Traffic, die echten Daten und die echte Konfiguration. Experimente automatisieren, damit sie kontinuierlich laufen. Ein einmaliges Experiment beweist Resilienz einmal; Systeme ändern sich täglich. Den Blast Radius minimieren. Beginnen Sie mit dem kleinsten Experiment, aus dem sich etwas lernen lässt (eine Instanz, ein kleiner Prozentsatz des Traffics), und halten Sie einen Abbruchschalter bereit.
Der Kreislauf eines Chaos-Experiments
Experimente in der Produktion durchzuführen ist das umstrittenste Prinzip. Seine Befürworter argumentieren, dass sich Staging-Umgebungen in Traffic, Daten, Größe und Konfiguration unterscheiden, sodass nur Experimente in der Produktion echte Schwachstellen aufdecken, und dass ein kleines, kontrolliertes Experiment um 15:00 für Benutzer weit schonender ist als derselbe Ausfall, der unkontrolliert um 03:00 eintritt. Kritiker weisen darauf hin, dass vielen Organisationen die Observability, die Automatisierung und das organisatorische Vertrauen fehlen, um das sicher zu tun. Der praktische Konsens ist ein schrittweises Vorgehen: in einer Staging-Umgebung beginnen, dann in der Produktion mit winzigem Blast Radius und automatischen, an SLOs geknüpften Abbruchbedingungen laufen lassen und nur mit wachsendem Vertrauen erweitern. Beginnen Sie nie mit einem System, von dem Sie bereits wissen, dass es fragil ist; beheben Sie zuerst die bekannten Schwachstellen, denn ein Experiment, dessen Ergebnis Sie vorhersagen können, lehrt nichts.
Werkzeuge sind inzwischen breit verfügbar: Cloud-Anbieter bieten verwaltete Fault Injection an (AWS Fault Injection Service, Azure Chaos Studio), Chaos Mesh und LitmusChaos sind Open-Source-Projekte der CNCF für Kubernetes, und kommerzielle Plattformen wie Gremlin bieten Bibliotheken von Angriffen mit Sicherheitskontrollen. Service Meshes und Proxys können Latenz und Fehler in einen Prozentsatz der Aufrufe injizieren, ohne den Anwendungscode anzufassen. Die Werkzeuge sind der leichte Teil; der schwere Teil ist, aussagekräftige Hypothesen zu wählen und auf die Ergebnisse zu reagieren.
Ausgearbeitetes Beispiel
Ausgearbeitetes Beispiel: ein Latenzexperiment am Bestellservice
Der Bestellservice der Essenslieferplattform ruft den Speisekartenservice auf, um Artikelpreise zu bestätigen. Laut Entwurf (nach Abschnitt 9.4) hat der Aufruf ein Timeout von 300 ms und fällt auf zwischengespeicherte Preise zurück. Jede Instanz des Bestellservice hat 50 Worker-Threads und erhält etwa 40 Bestellungen pro Sekunde, von denen jede normalerweise einen Thread 0,2 s lang belegt.
| Steady State | Erfolgsquote der Bestellungen mindestens 99,9 %; Checkout-p99 unter 800 ms; Bestellungen pro Minute innerhalb von 5 % derselben Minute der Vorwoche |
|---|---|
| Hypothese | Wenn Aufrufe des Speisekartenservice von einer Instanz des Bestellservice zusätzlich 2000 ms dauern, bleiben die Steady-State-Metriken dieser Instanz innerhalb der Grenzen, weil Timeout und Fallback die Verzögerung abfangen |
| Blast Radius | 1 von 20 Instanzen (5 % des Bestell-Traffics) in einer Region, 15:00 an einem Werktag, 15 Minuten, die anderen 19 Instanzen als Kontrollgruppe |
| Abbruchbedingungen | Erfolgsquote der Experimentinstanz 2 Minuten lang unter 99 % oder Burn Rate des regionalen Checkout-SLO über 14,4: automatisch stoppen |
| Erwartete Thread-Nutzung | Mit dem Timeout von 300 ms: 40/s × (0,2 + 0,3) s = 20 belegte Threads von 50 |
| Was geschah | Die Erfolgsquote fiel innerhalb von 3 Minuten auf 97 %, und der Abbruch griff. Traces zeigten Aufrufe, die 2,0 s warteten: Das Timeout betrug in Wirklichkeit 3000 ms, ein Bibliotheks-Standardwert, der die beabsichtigte Einstellung überschrieb |
| Warum es scheiterte | 40/s × (0,2 + 2,0) s = 88 benötigte Threads, aber es gibt nur 50: Anfragen stauten sich und liefen am Gateway in ein Timeout |
| Maßnahmen | Das Timeout in der gemeinsamen Client-Konfiguration setzen, einen automatisierten Test ergänzen, der den Build scheitern lässt, wenn einem ausgehenden Aufruf ein explizites Timeout fehlt, das Experiment wiederholen und dann auf eine ganze Zone erweitern |
Das Experiment fand bei 5 % des Traffics einer Region und in 3 Minuten eine Schwachstelle, die eine echte Verlangsamung des Speisekartenservice zur Mittagszeit zu einem regionalen Ausfall gemacht hätte.
Der Entwurf war richtig; die Konfiguration nicht. Experimente testen, was deployt ist, nicht, was dokumentiert ist.
Game Days
Ein Game Day ist eine geplante Übung, bei der ein Team absichtlich einen erheblichen Ausfall verursacht oder simuliert und die Reaktion darauf übt. Jesse Robbins machte die Praxis bei Amazon bekannt, wo seine Berufsbezeichnung Berichten zufolge Master of Disaster lautete. Google führt große Übungen namens Disaster Recovery Testing (DiRT) durch, und sein SRE-Buch beschreibt das Wheel of Misfortune, ein Rollenspiel, in dem Engineers in Rufbereitschaft einen vergangenen Incident durchspielen, während ein Spielleiter enthüllt, was das Monitoring gezeigt hätte.
Game Days testen mehr als Software. Sie testen, ob Alerts die richtigen Personen erreichen, ob die Menschen um 03:00 die nötigen Zugänge haben, ob Runbooks aktuell sind, ob das Failover-Verfahren tatsächlich funktioniert, ob sich Backups wiederherstellen lassen und ob der Kommunikationsplan die Kunden erreicht. Ein typischer Game Day bei der Essenslieferplattform könnte an einem ruhigen Nachmittag die Bestelldatenbank auf ihren Standby umschalten, während die gesamte Rufbereitschaftsrotation zusieht, ein Moderator Überraschungen einstreut (die Person, die das Runbook kennt, ist im Urlaub
) und ein Beobachter jede Verzögerung und Verwirrung für das anschließende Review notiert. Vor einem großen Ticket-Vorverkaufsstart könnte dasselbe Team proben, wie der Zahlungsanbieter ausfällt und mitten im Verkauf auf den Ersatzanbieter umgeschaltet wird.
Incident-Management
Ein Incident ist ein ungeplantes Ereignis, das einen Dienst stört oder zu stören droht und eine koordinierte Reaktion erfordert. Incident-Management ist die Praxis, diese Reaktion so zu führen, dass sie schnell, ruhig und gut kommuniziert ist. Die meiste moderne Praxis lehnt sich an das Incident Command System an, das in den 1970er-Jahren in Kalifornien für die Bekämpfung von Waldbränden entwickelt und im Kapitel des Google-SRE-Buchs über das Management von Incidents für Software angepasst wurde.
Der zentrale Gedanke ist die Trennung der Rollen. Der Incident Commander ist für den Incident verantwortlich: Er setzt Prioritäten, vergibt Rollen, trifft Entscheidungen und behält den Überblick, und er debuggt bewusst nicht, denn ein Commander, der in einer Logdatei versunken ist, führt nicht. Die Betriebsleitung und die Responder diagnostizieren und dämmen ein. Die Kommunikationsleitung ist die einzige Stimme gegenüber allen außerhalb der Reaktion: Support-Teams, Führungskräften und Kunden über die Statusseite, mit Updates im zugesagten Rhythmus, auch wenn es nichts Neues gibt. Ein Protokollführer hält Zeitablauf, Entscheidungen und Hypothesen fest. In einem kleinen Unternehmen kann eine Person mehrere Rollen innehaben, aber die Rollen sollten trotzdem benannt werden. Bei Schichtwechseln werden Rollen ausdrücklich übergeben.
Rollen im Incident
Einige Gewohnheiten machen den Unterschied. Rufen Sie Incidents früh und ohne großen Aufwand aus: Es ist besser, einen Fehlalarm abzublasen, als nach einer Stunde festzustellen, dass drei Teams getrennt voneinander dasselbe Problem debuggt haben. Ordnen Sie jedem Incident einen Schweregrad zu, der nach den Auswirkungen auf Benutzer definiert ist, nicht nach der Ursache, damit alle wissen, wen sie rufen und wie breit sie kommunizieren müssen. Dämmen Sie ein, bevor Sie diagnostizieren: Rollen Sie zuerst das letzte Deployment zurück, schalten Sie per Failover um, schalten Sie das Feature-Flag ab oder werfen Sie Last ab, und finden Sie das Warum später heraus. Nutzen Sie einen einzigen Incident-Kanal. Und denken Sie an externe Pflichten: Eine Verletzung des Schutzes personenbezogener Daten muss nach der DSGVO unter Umständen binnen 72 Stunden der Aufsichtsbehörde gemeldet werden, weshalb Sicherheitsvorfälle dem zugehörigen Prozess in Abschnitt 8.8 folgen.
Beispielhafte Schweregrade für die Essenslieferplattform
| Niveau | Beispielhafte Auswirkung | Reaktion | Kommunikation |
|---|---|---|---|
| SEV1 (kritisch) | Bestellen oder Bezahlen für die meisten Benutzer einer Region nicht verfügbar; Verdacht auf Datenschutzverletzung | Sofort alarmieren; Incident Commander und Kommunikationsleitung umgehend benannt | Statusseite innerhalb von 15 Minuten; Updates alle 30 Minuten; Führungskräfte informiert |
| SEV2 (schwer) | Eine zentrale Journey für viele Benutzer stark beeinträchtigt, etwa Checkout-p99 über 4 s in einer Stadt; schnelles Verbrennen des SLO-Budgets | Die Bereitschaft alarmieren; Commander benannt | Statusseite, falls Kunden es bemerken können; interne Updates stündlich |
| SEV3 (gering) | Teilweise Beeinträchtigung mit Workaround; ein internes Werkzeug ausgefallen | Während der Arbeitszeit vom zuständigen Team bearbeitet | Team-Kanal; Ticket |
| SEV4 (niedrig) | Kosmetisches Problem oder Beinahe-Vorfall ohne Auswirkungen auf Benutzer | Backlog-Eintrag | Optionales Review, wenn es etwas lehrt |
Schuldfreie Post-Incident-Reviews
Nach dem Incident kommt der wertvollste Teil: das Lernen. Ein Post-Incident-Review (oft Postmortem genannt) rekonstruiert, was passiert ist, warum es den Beteiligten damals sinnvoll erschien und was sich ändern wird. Das Kapitel des Google-SRE-Buchs über Postmortem-Kultur legt die Erwartungen fest: eine schriftliche Aufzeichnung für jeden erheblichen Incident, die Auswirkungen, Zeitablauf, beitragende Ursachen und Folgemaßnahmen abdeckt, geprüft und geteilt wird und ohne Schuldzuweisung verfasst ist.
John Allspaws Beitrag Blameless PostMortems and a Just Culture
aus dem Jahr 2012, geschrieben, als er bei Etsy den technischen Betrieb leitete, erklärt, warum Blameless Culture (Schuldfreiheit) praktisch und nicht nur freundlich ist. Engineers, die mit Bestrafung rechnen, hören auf, vollständig zu berichten, was sie gesehen und getan haben, sodass die Organisation genau die Informationen verliert, die sie braucht, um den nächsten Incident zu verhindern. Allspaw stützt sich auf die Sicherheitswissenschaft, darunter Sidney Dekkers Arbeiten zur Just Culture, und auf die Idee der zweiten Geschichten: Die erste Geschichte sagt ein Engineer hat den falschen Befehl ausgeführt
; die zweite fragt, warum der Befehl so leicht auszuführen war, warum das Werkzeug nicht gewarnt hat, warum das Vorgehen unter Zeitdruck vernünftig erschien, und findet Bedingungen, die auch die nächste Person in die Falle locken werden. Schuldfrei heißt nicht folgenlos: Von den Menschen wird weiterhin erwartet, vollständig Rechenschaft abzulegen, und die Organisation ist dafür verantwortlich, die Bedingungen zu beheben.
Gute Reviews vermeiden den Rückschaufehler (das Ergebnis war damals nicht offensichtlich), kontrafaktische Aussagen (hätte sollen
, hat es versäumt
) und die Suche nach einer einzigen Grundursache. Richard Cooks kurzer Aufsatz How Complex Systems Fail
(1998) argumentiert, dass bei schweren Ausfällen in komplexen Systemen mehrere Mängel zusammenkommen müssen, sodass es keine einzelne Grundursache gibt, nur beitragende Faktoren. Eine Five-Whys-Kette, die bei menschlichem Versagen
endet, hat zu früh aufgehört. Halten Sie auch fest, was gut lief: Die Expertise und Improvisation, die den Schaden begrenzt haben, gehören dazu, wie das System wirklich in Betrieb bleibt, und sie bleiben unsichtbar, wenn niemand sie festhält.
Aus Incidents lernen, und die Grenzen von MTTR
Organisationen wollen natürlich eine Zahl, die zeigt, ob sich die Incident Response verbessert, und die Mean Time to Recovery (MTTR) ist der übliche Kandidat. Kapitel 2 verwendete MTTR in A = MTBF / (MTBF + MTTR), wo sie für eine einzelne Komponente mit wiederholbaren Ausfällen aussagekräftig ist. Als organisatorische Kennzahl über viele verschiedene Incidents hinweg ist sie viel schwächer. Die Dauern von Incidents sind stark schief verteilt: Die meisten sind kurz und einige wenige sehr lang, sodass der Mittelwert von einer Handvoll Ausreißern dominiert wird. Courtney Nashs Analysen Tausender öffentlicher Incident-Berichte in der Verica Open Incident Database (VOID-Berichte ab 2021) fanden genau diese Schiefe, und ein Google-Bericht von Štěpán Davidovič aus dem Jahr 2021, Incident Metrics in SRE, zeigte mit Simulationen, dass Veränderungen der MTTR bei realistischen Incident-Zahlen überwiegend Rauschen sind und nicht verlässlich zeigen können, ob eine Verbesserung gewirkt hat.
Bessere Signale sind die Auswirkungen auf SLOs und Error Budgets (die Incidents danach gewichten, was Benutzer gespürt haben), wiederkehrende Themen über Reviews hinweg (dieselbe Art von Konfigurationsänderung, die dreimal Ärger macht), Beinahe-Vorfälle, wie schnell Incidents erkannt werden, wie oft Reviews zu abgeschlossenen Systemänderungen führen, und qualitative Belege, etwa ob Engineers Reviews nützlich finden. Viele Organisationen veröffentlichen Reviews intern in einer durchsuchbaren Bibliothek und halten regelmäßige Incident-Review-Meetings ab, damit die Lehre eines Teams auch andere erreicht.
Maßnahmen, die das System tatsächlich ändern
Ein Review ist nur so viel wert wie die Änderungen, die es bewirkt. Maßnahmen unterscheiden sich stark in ihrer Wirkung. Am stärksten sind solche, die die Gefahr beseitigen (den gefährlichen Befehl löschen, den unsicheren Zustand unmöglich machen), dann Leitplanken, die verhindern, dass sich der Fehler ausbreitet (Validierung der Konfiguration, gestaffelte Rollouts und Canaries, Rate Limits für Änderungen, automatischer Rollback bei SLO-Verbrauch), dann schnellere Erkennung und Eindämmung (ein neuer SLO-Alert, ein getestetes Runbook, ein automatisiertes Failover). Am schwächsten sind Schulungen, Dokumentation und Ermahnungen. Sorgfältiger sein
ist keine Maßnahme; es ändert nichts an den Bedingungen, auf die die nächste Person treffen wird.
Jede Maßnahme braucht eine verantwortliche Person, eine Priorität und einen Fälligkeitstermin und muss im normalen Backlog des Teams stehen statt in einem vergessenen Dokument. Die Error-Budget-Policy aus Abschnitt 9.5 liefert den Hebel: Ein Incident, der einen großen Teil des Budgets verbraucht hat, verschafft seinen Korrekturen Vorrang vor Features. Halten Sie die Liste kurz; fünf erledigte Maßnahmen sind besser als zwanzig offene. Wo eine Maßnahme die Architektur ändert, etwa durch ein zusätzliches Bulkhead oder das Entfernen einer synchronen Abhängigkeit, halten Sie sie in einem Architecture Decision Record fest, der den Incident nennt, und verlinken Sie die relevanten Runbooks aus den Alerts, die beim nächsten Mal auslösen.
Checkliste: ein Post-Incident-Review durchführen
Nutzen Sie sie für jeden Incident ab einem vereinbarten Schweregrad, für jeden Incident, der mehr als einen festgelegten Anteil eines Error Budgets verbraucht, und für interessante Beinahe-Vorfälle.
- Innerhalb weniger Arbeitstage ansetzenErinnerungen verblassen schnell; Logs und Chatverläufe laufen womöglich ab. Laden Sie die Beteiligten ein, einen Moderator, der nicht beteiligt war, und die Verantwortlichen der betroffenen Services.
- Den Zeitablauf zuerst aus Belegen aufbauenFügen Sie Alerts, Deployments, Chatnachrichten, Dashboards und Traces vor dem Meeting zu einem Zeitablauf zusammen, damit die Diskussion von Fakten statt von Erinnerungen ausgeht.
- Die Auswirkungen aus Sicht der Benutzer beschreibenWer war betroffen, wie viele, wie lange, welche SLOs und wie viel Error Budget; nehmen Sie, wo relevant, Geld, Daten und regulatorische Risiken auf.
- Den schuldfreien Rahmen ausdrücklich setzenSagen Sie zu Beginn, dass es darum geht zu verstehen, wie das System und die Arbeit wirklich ablaufen, und dass niemand dafür bestraft wird, zu schildern, was er getan hat und warum.
- Fragen, warum es damals sinnvoll erschienFragen Sie bei jeder wichtigen Entscheidung, was die Person wusste, was sie erreichen wollte und was die Werkzeuge ihr angezeigt haben. Vermeiden Sie kontrafaktische Formulierungen wie ‚hätte sollen‘ und ‚hat es versäumt‘.
- Nach mehreren beitragenden Faktoren suchenTechnische, organisatorische und prozedurale Bedingungen zusammen; widerstehen Sie der Versuchung, bei der ersten einzelnen ‚Grundursache‘ oder bei menschlichem Versagen stehen zu bleiben.
- Festhalten, was gut liefHalten Sie die Anpassungen, die Expertise und das Glück fest, die den Schaden begrenzt haben; sie gehören dazu, wie das System wirklich in Betrieb bleibt.
- Wenige Maßnahmen vereinbaren, die das System ändernZiehen Sie das Beseitigen von Gefahren und das Schaffen von Leitplanken Schulungen und Ermahnungen vor; geben Sie jeder Maßnahme eine verantwortliche Person, eine Priorität und einen Fälligkeitstermin, und verfolgen Sie sie im normalen Backlog.
- Veröffentlichen und teilenSchreiben Sie das Review in einer Standardvorlage auf, teilen Sie es breit, fügen Sie es einer durchsuchbaren Bibliothek hinzu und gehen Sie offene Maßnahmen in einem regelmäßigen Review-Meeting erneut durch.
Prüfen Sie Ihr Verständnis
Warum braucht ein Chaos-Experiment eine Steady-State-Hypothese, statt einfach ‚zu sehen, was kaputtgeht‘?
Weil eine messbare Vorhersage über das normale, für Benutzer sichtbare Verhalten zeigt, ob das System zurechtkam, Abbruchbedingungen liefert und die Übung zu einem Beleg statt zu einer Anekdote macht.
Warum sollte der Incident Commander nicht debuggen?
Weil die Rolle Koordination ist: Prioritäten, Rollen, Entscheidungen und Überblick. Ein Commander, der in technischen Details versinkt, lässt niemanden die Reaktion steuern.
Was ist eine ‚zweite Geschichte‘ in einem Post-Incident-Review?
Die Darstellung, die über die Frage hinausgeht, wer einen Fehler gemacht hat, hin zu den Bedingungen, Werkzeugen, dem Druck und dem Design, die die Handlung vernünftig erscheinen ließen und auch die nächste Person in die Falle locken werden.
Warum ist die durchschnittliche MTTR über ein Jahr voller Incidents ein schwaches Maß für Verbesserung?
Die Dauern von Incidents sind stark schief verteilt, sodass einige lange Incidents den Mittelwert dominieren, und bei realistischen Incident-Zahlen sind Veränderungen daran überwiegend Rauschen.
Quellen und weiterführende Literatur
Haben Sie eine Frage zu diesem Abschnitt? ArchitectBot, der KI-Lernassistent des Kurses, antwortet zuerst aus dem Kurs.
Fragen: „Wir hatten letzte Woche einen zweistündigen Ausfall des Checkouts. Wie führe ich ein Post-Incident-Review durch, das zu echten Korrekturen statt zu Schuldzuweisungen führt?“