Die Warnmeldungs- und Bereitschaftsfunktionen von Opsgenie sind jetzt in Jira Service Management und Compass verfügbar. Migriere deine bestehenden Opsgenie-Daten und -Konfigurationen vor dem 5. April 2027 mit unserem automatisierten Migrationstool.

Nachbereitung von Vorfällen

Wir bei Atlassian nutzen die Nachbereitung ohne Schuldzuweisungen, um die grundlegende Ursache von Vorfällen mit einem Schweregrad von mindestens 2 zu ermitteln und zu beheben. Hier findest du eine Zusammenfassung unserer internen Dokumentation zur Nachbereitung bei Atlassian.

Handbuch zum Vorfallmanagement

Das Handbuch in gedruckter Form oder als PDF

Wir haben eine begrenzte Auflage des Handbuchs zum Vorfallmanagement drucken lassen und versenden diese Handbücher kostenlos. Alternativ kannst du die PDF-Version herunterladen.

Was ist eine Post-Mortem-Analyse?

Das Ergebnis der Nachbereitung ist die Aufzeichnung eines Vorfalls, in der Folgendes erläutert wird:

  • Auswirkungen des Vorfalls

  • Zur Minderung oder Erledigung des Vorfalls durchgeführte Aktionen

  • Grundlegende Ursache des Vorfalls

  • Nachbereitungsaktionen, die ein erneutes Auftreten des Vorfalls verhindern sollen

Bei Atlassian verfolgen wir alle Post-Mortem-Analysen mithilfe von Jira-Vorgängen, um sicherzustellen, dass sie abgeschlossen und genehmigt sind. Wenn deine Anforderungen weniger komplex sind, kannst du auch ein einfacheres System nutzen, beispielsweise eine Confluence-Seite pro Post-Mortem-Analyse.

Warum führen wir eine Nachbereitung durch?

Die Nachbereitung hat das Ziel, alle grundlegenden Ursachen zu ermitteln, den Vorfall zu Referenzzwecken und zur Erkennung von Mustern zu dokumentieren sowie effektive Aktionen festzulegen, um die Wahrscheinlichkeit oder die Auswirkungen eines erneuten Auftretens zu verringern.

Wenn Post-Mortem-Analysen ein erneutes Auftreten des Vorfalls effektiv verhindern sollen, muss der Review-Prozess den Teams Anreize zur Ermittlung und Beseitigung der grundlegenden Ursachen liefern. Wie du dazu genau vorgehst, hängt von eurer Teamkultur ab. Die bei Atlassian für die Incident Response zuständigen Teams nutzen eine Kombination aus folgenden Methoden: 

  • Persönliche Meetings tragen zur effektiven Analyse und zur Abstimmung des Teams über geeignete Maßnahmen bei.

  • Wenn die Nachbereitung von den Managern der Bereitstellungs- und Operations-Teams genehmigt werden muss, ist dies für die Teams ein Anreiz für gründliches Arbeiten.

  • Für die angegebenen "Aktionen mit hoher Priorität" wird ein Service-Level-Ziel (Service Level Objective, SLO) vereinbart, das je nach Service vier oder acht Wochen beträgt. Erinnerungen und Berichte sorgen dafür, dass die Aktionen tatsächlich durchgeführt werden.

Damit dieser Prozess eingehalten wird und effektiv wirkt, müssen sich Mitarbeiter auf allen Unternehmensebenen dafür einsetzen. Die Leiter und Manager unserer Entwicklungsteams haben die Genehmiger und SLOs für die Durchführung der Aktionen in ihren Zuständigkeitsbereichen festgelegt. Dieses System dient nur dazu, ihre Entscheidungen offiziell festzuhalten und umzusetzen.

Wann ist eine Nachbereitung erforderlich?

Wir führen bei Vorfällen mit Schweregrad 1 oder 2 eine Nachbereitung durch. Bei anderen Schweregraden ist sie optional.

Während oder kurz nach der Lösung des Issues erstellt der Nachbereitungsverantwortliche ein neues Nachbereitungs-Issue.

Wer übernimmt die Nachbereitung?

Das für den ausgefallenen Service zuständige Bereitstellungsteam (das Team, das im Vorfalls-Issue für den "fehlerhaften Service" zuständig ist) trägt die Verantwortung für die Durchführung der Nachbereitung. Das Team wählt den Nachbereitungsverantwortlichen aus und weist ihm das Nachbereitungs-Issue zu.

  • Der Post-Mortem-Verantwortliche leitet die Post-Mortem-Analyse vom Entwurf über die Genehmigung bis zur Veröffentlichung. Er ist für die Durchführung der Post-Mortem-Analyse verantwortlich. 

  • Nachbereitungsgenehmiger (einer oder mehrere) prüfen und genehmigen die Nachbereitung. Von ihnen wird erwartet, Nachbereitungsaktionen in ihrem Backlog zu priorisieren.

Wir pflegen eine Confluence-Seite, auf der die (obligatorischen und optionalen) Nachbereitungsgenehmiger nach Servicegruppe aufgeführt sind. In der Regel entspricht die Servicegruppe einem Atlassian-Produkt (z. B. Bitbucket Cloud).

Wie werden Aktionen zur Nachbereitung verfolgt?

Für jede Aktion, die sich aus der Nachbereitung ergibt, gehen wir wie folgt vor:

  • Wir erstellen einen Jira-Vorgang im Backlog des zuständigen Teams. Alle Post-Mortem-Aktionen müssen in Jira verfolgt werden.

  • Wir verlinken die Aktion aus dem Nachbereitungs-Issue als Aktion mit hoher Priorität (zur Behebung grundlegender Ursachen) oder als "Optimierungsaktion" (bei Optimierungsmaßnahmen für andere als die grundlegenden Ursachen).

Mit den REST-APIs von Jira haben wir einige angepasste Berichtsfunktionen erstellt, um verfolgen zu können, bei wie vielen Vorfällen der einzelnen Schweregrade die grundlegende Ursache nicht durch die Aktionen mit hoher Priorität aus der Nachbereitung behoben wurde. Die Manager der Entwicklungsteams der einzelnen Abteilungen prüfen diese Liste regelmäßig.

Nachbereitungsprozess

Zum Nachbereitungsprozess zählen das Erstellen eines Nachbereitungs-Issues, das Abhalten eines Nachbereitungsmeetings, das Erfassen von Aktionen, das Einholen von Genehmigungen und (optional) das Kommunizieren der Ergebnisse.

Der Nachbereitungsverantwortliche ist für die Umsetzung folgender Aufgaben zuständig:

  1. Er erstellt die Nachbereitung und verlinkt sie mit dem Vorfall.

  2. Er bearbeitet das Nachbereitungs-Issue, liest die Feldbeschreibungen und füllt die Felder aus.

  3. Er verfolgt mithilfe der "5 Warum-Fragen" die Kausalkette, bis er eine plausible grundlegende Ursache für den Vorfall findet. 

  4. Er plant das Nachbereitungsmeeting und lädt das Bereitstellungsteam, die betroffenen Teams und andere Verantwortliche ein (unter Verwendung der Vorlage für Meetingeinladungen).

  5. Er trifft sich mit dem Team und bespricht den unten genannten Meetingzeitplan.

  6. Er wendet sich erneut an die zuständigen Entwicklungsmanager, um sie auf bestimmte Aktionen zu verpflichten, mit denen Vorfälle dieser Art verhindert werden können.

  7. Er erstellt zu jeder Aktion einen Jira-Vorgang im Backlog der zuständigen Teams. Er verknüpft die jeweilige Aktion aus dem Post-Mortem-Vorgang als "Priority Action" (Aktion mit hoher Priorität) (zur Behebung grundlegender Ursachen) oder als "Improvement Action" (Optimierungsaktion) (bei anderweitigen Optimierungsmaßnahmen).

  8. Er sieht in Confluence nach, wer die zuständigen Genehmiger sind, und trägt diese im "Genehmiger"-Feld der Post-Mortem-Analyse ein. 

  9. Er wählt den Übergang zum Anfordern der Genehmigung aus, um die Genehmigung der benannten Genehmiger einzuholen. Per Automatisierung wird der Vorgang mit Kommentaren versehen, die Anweisungen für die Genehmiger enthalten. 

  10. Er treibt die Nachbereitung je nach Bedarf weiter voran, bis sie genehmigt wurde.

  11. Nach Genehmigung der Nachbereitung wird in Confluence automatisch ein Entwurf für einen Blog zur Nachbereitung erstellt, den der IM nur noch bearbeiten und veröffentlichen muss. Durch die Verbreitung der Nachbereitungsergebnisse als Blog teilt er die hart erarbeiteten Erkenntnisse und steigert so ihren Nutzen.

Nach Abschluss des Nachbereitungsprozesses werden die Aktionen vom Entwicklerteam im Rahmen seines normalen Backlogs gemäß dem SLO des Teams priorisiert.

Nachbereitungsmeetings

Unserer Erfahrung nach werden die grundlegenden Ursachen eines Vorfalls genauer analysiert, wenn das Team zu einem Meeting zusammenkommt und seine Erkenntnisse diskutiert. Da unsere Teams in der Regel über mehrere Standorte verteilt sind, halten wir das Meeting oft als Videokonferenz ab. Wenn große Personengruppen an einem Vorfall beteiligt sind, veranstalten wir manchmal auch Gruppenmeetings.

Unser Vorschlag zur Agenda:

  1. Erinnere das Team daran, dass und weshalb bei der Nachbereitung keine Schuldzuweisungen geäußert werden sollen.

  2. Bestätige den zeitlichen Ablauf der Ereignisse.

  3. Bestätige die grundlegenden Ursachen.

  4. Ermittle durch "offenes Denken" mögliche Aktionen: "Was könnten wir tun, um Vorfälle dieser Art künftig zu verhindern?"

  5. Frage das Team, was gut gelaufen ist, was besser hätte laufen können und wo ihr einfach Glück hattet.

Vorschlag zur Vorlage für eine Kalendereinladung:

Hiermit lade ich dich zu einer Nachbereitung von <Link zum Vorfall> ein, bei dem wir <Zusammenfassung des Vorfalls>. Wir verzichten bewusst auf Schuldzuweisungen.

Felder von Nachbereitungs-Issues

Unser Issue für die Nachbereitung beinhaltet viele Felder, damit wir vor dem Nachbereitungsmeeting alle wichtigen Details zum Vorfall sammeln können. Unten findest du Beispiele, wie wir diese Felder ausfüllen.

Feld

Anweisungen

Beispiel

Zusammenfassung des Vorfalls

Fasse den Vorfall in einigen Sätzen zusammen. Die Zusammenfassung sollte den Schweregrad, die Begründung dafür und die Dauer der Auswirkungen beinhalten.

Am <Datum> zwischen <Zeitspanne des Vorfalls, z. B. "14:30 und 15:00 Uhr"> traten bei <Anzahl> Kunden <Ereignissymptome> auf. Das Ereignis wurde durch ein Deployment um <Zeitpunkt des Deployments oder der Änderung, die den Vorfall verursacht hat> ausgelöst. Das Deployment enthielt eine Codeänderung für <Beschreibung oder Begründung der Änderung>. Ein Bug in diesem Deployment führte zu <Beschreibung des Problems>

Das Ereignis wurde von <System> erkannt. Wir haben das Ereignis durch <durchgeführte Aktionen zur Problemlösung> behoben.

Dieser Vorfall mit <Schweregrad> betraf X % der Kunden.

Zu diesem Vorfall wurden <Anzahl der Supporttickets oder Social-Media-Beiträge> erstellt. 

Ereignisse im Vorfeld

Beschreibe die Umstände, die zu diesem Vorfall geführt haben, beispielsweise vorangegangene Änderungen, durch die latente Bugs eingeführt wurden.

Am <Datum> um <Uhrzeit>, (<Zeitabstand zum Beginn der Auswirkungen auf Kunden>), wurde eine Änderung an <Produkt oder Service> vorgenommen, um … <Beschreibung der Änderungen, die den Vorfall zufolge hatten>. Die Änderung führte zu … <Beschreibung der Auswirkungen der Änderungen>

Fehler

Beschreibe, was nicht wie erwartet funktioniert hat. Füge Screenshots von relevanten Diagrammen oder Daten an, die den Fehler zeigen.

Im Verlauf von <Zeitdauer> wurden auf X % der Anfragen <Anzahl> falsche Antworten gesendet.

Auswirkungen

Beschreibe, was interne und externe Kunden während des Vorfalls beobachtet haben. Gib an, wie viele Supporttickets erstellt wurden.

Am <Datum> zwischen <Zeitspanne> trat für <Zeitdauer><Zusammenfassung des Vorfalls> auf.

Davon waren <Anzahl> Kunden (X % aller Kunden von <System oder Service>) betroffen. Sie stellten <Beschreibung der von Kunden festgestellten Symptome> fest.

Es wurden <Anzahl der Supporttickets und Social-Media-Beiträge> erstellt.

Erkennung

Wann und wie hat Atlassian den Vorfall erkannt?

Wie könnte die Erkennungszeit verbessert werden? Als Gedankenexperiment: Wie hättest du die Zeit halbieren können?

Der Vorfall wurde erkannt, als <Art der Warnmeldung> ausgelöst und <benachrichtigtes Team oder benachrichtigte Person> benachrichtigt wurde. Weil dieses Team/diese Person nicht für den auf die Festplatte schreibenden Service zuständig war, musste zusätzlich <zur Reaktion hinzugezogenes zweites Team oder zweite Person> benachrichtigt werden. Dies verzögerte die Reaktion um <Zeitdauer>.

<Für die Optimierung zuständiges Team> wird <Beschreibung der Optimierungsmaßnahme> einrichten, damit <Auswirkung der Optimierung>

Antwort

Wer hat wann wie reagiert? Gab es Verzögerungen oder Hindernisse bei der Reaktion?

Nachdem er um 14:34 Uhr UTC benachrichtigt wurde, betrat der KITT Engineer um 14:38 Uhr den Chatraum für den Vorfall. Der zuständige Engineer verfügte jedoch nicht über ausreichend Hintergrundwissen zum Escalator-System für die automatische Skalierung. Daher wurde um 14:50 Uhr eine weitere Benachrichtigung versendet, woraufhin um 14:58 Uhr ein erfahrener KITT Engineer den Chatraum betrat.

Wiederherstellung

Beschreibe, wie und wann der Service wiederhergestellt wurde. Wie bist du an den Punkt gelangt, an dem du wusstest, wie die Auswirkungen beseitigt werden können?

Je nach Szenario kannst du weitere Fragen beantworten: Wie könnte die Behebungszeit verbessert werden? Als Gedankenexperiment: Wie hättest du die Zeit halbieren können?

Zurücksetzung der Build Engineering-Planungslösung auf die vorherige Version

Zeitleiste

Gib den genauen zeitlichen Ablauf des Vorfalls in chronologischer Reihenfolge mit Zeitstempeln und Zeitzonen an. 

Berücksichtige dabei mögliche Ereignisse im Vorfeld, den Beginn der Auswirkungen, den Zeitpunkt der Erkennung, Eskalationen, Entscheidungen, Änderungen und das Ende der Auswirkungen.

Alle Zeitangaben sind in UTC.

11:48 Uhr: Control-Panel-Upgrade auf K8S 1.9 fertiggestellt. 

12:46 Uhr: Goliath-Upgrade auf v1.9 fertiggestellt, einschließlich der automatischen Cluster-Skalierung und der BuildEng-Planungsinstanz. 

14:20 Uhr: Build Engineering meldet ein Problem an KITT Disturbed.

14:27 Uhr: KITT Disturbed beginnt mit der Untersuchung von Fehlern bei einer bestimmten EC2-Instanz (ip-203-153-8-204). 

14:42 Uhr: KITT Disturbed isoliert den Knoten. 

14:49 Uhr: BuildEng meldet, dass mehrere Knoten von dem Problem betroffen sind. 86 Vorkommen des Problems zeigen, dass die Fehler weiter im System verbreitet sind. 

15:00 Uhr: KITT Disturbed schlägt einen Wechsel zur Standardplanungslösung vor. 

15:34 Uhr: BuildEng meldet den Ausfall von 300 Pods. 

16:00 Uhr: BuildEng beendet alle fehlgeschlagenen Builds mit OutOfCpu-Berichten. 

16:13 Uhr: BuildEng meldet, dass die Fehler bei neuen Builds konsistent erneut auftreten und nicht nur vorübergehend waren. 

16:30 Uhr: KITT erkennt die Fehler als Vorfall an und behandelt sie ab sofort entsprechend. 

16:36 Uhr: KITT deaktiviert das Escalator-System für die automatische Skalierung, damit es keine weiteren Rechenressourcen zur Minderung des Problems beansprucht.

16:40 Uhr: KITT bestätigt, dass ASG stabil ist, die Clusterlast sich normalisiert hat und die Auswirkungen auf Kunden beseitigt sind.

5-Why-Methode

Wende die Technik zur Ursachenermittlung an.

Beginne bei den Auswirkungen: Frage dich, warum sie aufgetreten sind und weshalb sie sich so geäußert haben. Frage weiter nach dem "Warum", bis du die grundlegende Ursache gefunden hast.

Dokumentiere deine Fragen und Antworten hier oder in einem dem Issue angefügten Diagramm.

Wir haben noch nie Belastungstests durchgeführt und stehen vor neuen Dimensionen.

Grundlegende Ursache

Was war die grundlegende Ursache? Hier muss eine Änderung vorgenommen werden, damit Vorfälle dieser Art nicht mehr auftreten.

Ein Bug bei der Verarbeitung von Verbindungspools in <Grund für den Bug oder Service, in dem er auftrat> führte zu Verbindungslecks bei Fehlerbedingungen. Außerdem war der Verbindungsstatus nicht mehr transparent.

Backlog-Überprüfung

Enthält dein Backlog eine Aufgabe, mit der dieser Vorfall hätte verhindert oder deutlich abgemildert werden können? Falls ja, warum wurde sie nicht umgesetzt?

Eine ehrliche Bewertung an diesem Punkt hilft, vergangene Entscheidungen über Prioritäten und Risiken zu klären.

An sich nicht. Verbesserungen bei der Typermittlung für Datenströme waren bekannte laufende Aufgaben, für die Rituale vorhanden waren (z. B. "Füge Datenstromtypen hinzu, wenn du eine Datei änderst/erstellst."). Es wurden Tickets für die Problembehebung bei Integrationstests erstellt. Versuche in dieser Richtung waren jedoch nicht erfolgreich.

Erneutes Auftreten

Ist dieser Vorfall (mit derselben grundlegenden Ursache) schon einmal aufgetreten? Falls ja, wie konnte es zu einer Wiederholung kommen?

Dieselbe grundlegende Ursache hatte bereits die Vorfälle HOT-13432, HOT-14932 und HOT-19452 zur Folge.

Erkenntnisse

Was haben wir gelernt?

Besprich, was gut gelaufen ist, was besser hätte laufen können und wo ihr Verbesserungsmöglichkeiten einfach durch Glück gefunden habt.

Massen-Workloads sollten langsam gestartet und überwacht werden. Eine Steigerung sollte erst erfolgen, wenn die Metriken des Service normal erscheinen.

Korrekturmaßnahmen

Was wird unternommen, damit Vorfälle dieser Art nicht mehr auftreten? Wer setzt diese Aktionen bis wann um? 

Erstelle Vorgangsverlinkungen für "Aktionen mit hoher Priorität" zu Vorgängen, mit denen die einzelnen Aktionen verfolgt werden können. 

CloudWatch-Benachrichtigung zur Ermittlung eines Problems mit erhöhten E/A im Elasticsearch-Cluster

Unmittelbare und grundlegende Ursachen

Beim Verfassen und Lesen der Ergebnisse einer Nachbereitung muss zwischen unmittelbaren und grundlegenden Ursachen unterschieden werden.

  • Unmittelbare Ursachen sind Faktoren, die direkt zu diesem Vorfall geführt haben.

  • Grundlegende Ursachen sind Punkte an einer strategischen Stelle in der Ereigniskette, an denen eine Änderung Vorfälle dieser Art komplett verhindern könnte.

Bei einer Post-Mortem-Analyse gilt es, grundlegende Ursachen zu ermitteln und zu entscheiden, wie diese am besten beseitigt werden können. Diese strategische Stelle in der Ereigniskette zu finden, ist die wahre Kunst bei einer Post-Mortem-Analyse. Mit einer Technik wie den 5 Warum-Fragen kannst du dich entlang der Kette "nach oben hangeln", um die grundlegenden Ursachen zu finden. 

Hier einige ausgewählte Beispiele für unmittelbare und grundlegende Ursachen:

Szenario

Unmittelbare Ursache und Aktion

Grundlegende Ursache

Beseitigung der grundlegenden Ursache

Das "Red Dawn"-Squad von Stride hatte für seine Services keine Datadog-Überwachungen und Benachrichtigungen eingerichtet oder diese waren nicht richtig konfiguriert. 

Die Teammitglieder hatten für neue Services keine Überwachung und keine Benachrichtigungen konfiguriert.

Hole dies nach.

Es gibt keinen Prozess zur Einrichtung neuer Services, der auch die Überwachung und Benachrichtigungen beinhaltet.

Erstelle einen Prozess zur Einrichtung neuer Services und vermittle dem Team, dass es diesen Prozess befolgen muss.

Stride ist in IE11 nicht nutzbar, weil ein Fabric Editor-Upgrade in dieser Browserversion nicht funktioniert.

Upgrade einer Abhängigkeit.

Setze das Upgrade zurück.

Die Kompatibilität wird nicht browserübergreifend getestet.

Richte automatische kontinuierliche Tests für die browserübergreifende Kompatibilität ein.

Protokolle von Micros EU erreichten den Protokollierungsservice nicht.

Die Rolle, die Micros zum Senden von Protokollen erhalten hatte, war falsch.

Berichtige die Rolle.

Wir erfahren es nicht, wenn die Protokollierung bei einer Umgebung nicht funktioniert.

Füge Überwachungs- und Benachrichtigungsfunktionen für fehlende Protokolle aus allen Umgebungen hinzu.

Ausgelöst durch einen vorangegangenen AWS-Vorfall lasteten die Confluence Vertigo-Knoten ihren Verbindungspool zu Media zu stark aus, wodurch es für Kunden zu vorübergehenden Fehlern bei Anhängen und Medien kam.

AWS-Fehler.

Sieh dir die Ergebnisse der AWS-Nachbereitung an.

Ein Bug bei der Verarbeitung von Verbindungspools in Confluence führte zu Verbindungslecks bei Fehlerbedingungen. Außerdem war der Verbindungsstatus nicht mehr transparent.

Behebe den Bug und füge Überwachungsfunktionen hinzu, mit denen ähnliche Situationen künftig erkannt werden, bevor sie sich auswirken.

Kategorien für grundlegende Ursachen und zugehörige Aktionen

Wir gruppieren grundlegende Ursachen in die folgenden Kategorien und besprechen die jeweils angemessenen Aktionen. 

Kategorie

Definitionen

Was sollte unternommen werden?

Bug

Eine von Atlassian vorgenommene Codeänderung (eine bestimmte Art von Änderung)

Führe Tests durch. Führe Canary-Tests durch. Nimm inkrementelle Rollouts vor und beobachte diese. Nutze Feature Flags. Sprich mit dem für die Qualitätssicherung zuständigen Engineer.

Änderung

Eine von Atlassian vorgenommene Änderung (jedoch keine Codeänderung)

Verbessere deine Vorgehensweise bei Änderungen, beispielsweise die Reviews für Änderungen oder die Prozesse beim Änderungsmanagement. Alle unter "Bug" genannten Punkte gelten auch hier.

Skalierung

Mangelnde Skalierung (z. B. wegen unbemerkter Ressourceneinschränkungen oder mangelnder Kapazitätsplanung)

Welche Ressourceneinschränkungen gelten für deinen Service? Werden diese überwacht und sind Benachrichtigungen eingerichtet? Wenn noch kein Kapazitätsplan vorhanden ist, erstelle einen. Wenn ein Plan vorhanden ist: Welche neuen Einschränkungen müssen berücksichtigt werden?

Architektur

Diskrepanz zwischen Design und Betriebsbedingungen

Überprüfe das Design. Solltest du die Plattform wechseln?

Abhängigkeit

Fehler beim Service eines Drittanbieters (d. h. nicht bei Atlassian)

Managst du das Risiko von Fehlern bei Drittanbietern? Hat sich das Unternehmen entschieden, Risiken zu akzeptieren, oder sind Maßnahmen zur Risikominderung erforderlich? Siehe "Grundlegende Ursachen im Zusammenhang mit Abhängigkeiten" unten.

Unbekannt

Nicht zu ermitteln (die Aktion besteht in der Erweiterung der Diagnosemöglichkeiten)

Verbessere die Beobachtungsmöglichkeiten für dein System, indem du beispielsweise Funktionen für Protokollierung, Überwachung und Debugging hinzufügst.

Grundlegende Ursachen im Zusammenhang mit Abhängigkeiten

Wenn bei deinem Service wegen eines Fehlers bei einer Abhängigkeit ein Vorfall auftritt, hängen die Zuständigkeit für den Fehler und die grundlegende Ursache des Vorfalls davon ab, ob es sich um eine interne Abhängigkeit von Atlassian oder um eine Drittanbieterabhängigkeit handelt und welche Erwartungen vernünftigerweise an die Leistung der Abhängigkeit gerichtet werden können.

Wenn es sich um eine interne Abhängigkeit handelt, stelle dir die Frage nach dem Service-Level-Ziel (Service Level Objective, SLO) der Abhängigkeit:

  • Wurde gegen das SLO der Abhängigkeit verstoßen? 

    • Der Fehler liegt bei der Abhängigkeit. Ihre Zuverlässigkeit muss erhöht werden.

  • Gab es einen Fehler bei deinem Service, obwohl das SLO der Abhängigkeit eingehalten wurde? 

    • Die Stabilität deines Service muss erhöht werden.

  • Liegt kein SLO für die Abhängigkeit vor?

    • Ein SLO ist unbedingt erforderlich!

Wenn es sich um eine Drittanbieterabhängigkeit handelt, stelle dir die Frage, welche (angemessenen) Erwartungen* ihr an die Verfügbarkeit/Latenz/etc. der Drittanbieterabhängigkeit habt:

  • Hat die Drittanbieterabhängigkeit eure Erwartungen nicht erfüllt?

    • Unsere Erwartungen waren falsch. 

      • Seid ihr überzeugt, dass dies nicht erneut geschehen wird? Ihr überprüft und akzeptiert beispielsweise die RCA des Drittanbieters. In diesem Fall ist die RCA des Drittanbieters die Aktion.

      • Oder müsst ihr eure Erwartungen anpassen? In diesem Fall bestehen die Aktionen darin, die Stabilität auf eurer Seite zu erhöhen und eure Erwartungen anzupassen.

      • Sind eure angepassten Erwartungen inakzeptabel? In diesem Fall müsst ihr die Diskrepanz zwischen den Anforderungen und der Lösung irgendwie beheben, beispielsweise indem ihr einen anderen Anbieter wählt.

  • Gab es einen Fehler bei eurem Service, obwohl die Drittanbieterabhängigkeit eure Erwartungen erfüllt hat? 

    • In diesem Fall müsst ihr die Stabilität eures Service erhöhen.

  • Habt ihr eigentlich gar keine Erwartungen?

    • Der für die Drittanbieterabhängigkeit zuständige Mitarbeiter muss dies festhalten und den Teams mitteilen, damit sie wissen, wie stabil sie ihre abhängigen Services gestalten müssen.

* Warum sprechen wir von "Erwartungen"? Haben wir keine SLAs mit Drittanbietern? In der Praxis sind die vertraglich mit den Drittanbietern festgelegten SLAs zu niedrig angesetzt, um bei der Fehlersuche und -behandlung hilfreich zu sein. AWS veröffentlicht beispielsweise fast gar kein SLA für EC2. Daher müssen wir im Fall einer Abhängigkeit vom Service eines Drittanbieters entscheiden, welches Maß an Zuverlässigkeit, Verfügbarkeit, Leistung oder anderen wichtigen Metriken wir vernünftigerweise von diesem Anbieter erwarten. 

Nachbereitungsaktionen

Sue Lueder und Betsy Beyer von Google haben eine hervorragende Präsentation und einen Artikel zu Aufgaben bei der Nachbereitung erstellt, die wir bei Atlassian als Leitfaden für Fragen an das Team nutzen.

Gehe die unten aufgeführten Fragen durch, um sicherzustellen, dass beim Review nach Vorfällen sowohl kurzfristige als auch langfristige Problembehebungen abgedeckt werden.

Die Punkte "Abmilderung künftiger Vorfälle" und "Verhinderung künftiger Vorfälle" sind wahrscheinlich die wichtigsten Quellen für Aktionen zur Behandlung der grundlegenden Ursache. Achte darauf, dass mindestens eine dieser Kategorien behandelt wird.

Kategorie

Zu stellende Frage

Beispiele

Untersuchung dieses Vorfalls

"Welches Ereignis hat diesen Vorfall verursacht und welchen Grund hatte es?" Letztlich geht es darum, die grundlegende Ursache zu ermitteln.

Analyse von Protokollen, Erstellung von Diagrammen zum Anfragepfad, Überprüfung von Heap-Dumps

Abmilderung dieses Vorfalls

"Welche sofortigen Maßnahmen haben wir ergriffen, um dieses konkrete Ereignis zu erledigen und zu managen?"

Rollbacks, "Cherry Picking", Push-Übertragung von Konfigurationen, Kommunikation mit betroffenen Benutzern

Behebung von Schäden aus diesem Vorfall

"Wie haben wir unmittelbare oder Kollateralschäden aus diesem Vorfall behoben?"

Wiederherstellung von Daten, Reparatur von Systemen, Entfernung von Umleitungen für den Datenverkehr

Erkennung künftiger Vorfälle

Wie können wir die zur präzisen Erkennung eines künftigen ähnlichen Vorfalls benötigte Zeit reduzieren?

Überwachung, Benachrichtigung, Plausibilitätsprüfungen für den Input/Output

Abmilderung künftiger Vorfälle

"Wie können wir den Schweregrad und/oder die Dauer künftiger ähnlicher Vorfälle verringern?"

"Wie können wir den von einem Vorfall dieser Art betroffenen Prozentsatz der Benutzer beim nächsten Mal reduzieren?"

Geplante Leistungsminderung, Verwerfen nicht kritischer Ergebnisse, Fail-Open, Optimierung der aktuellen Verfahren mit Dashboards/Playbooks, Änderungen an den Prozessen zum Umgang mit Vorfällen

Verhinderung künftiger Vorfälle

"Wie können wir verhindern, dass ein Fehler dieser Art erneut auftritt?"

Stabilitätsverbesserungen für die Codebasis, gründlichere Unit-Tests, Input-Validierung und Robustheit gegenüber Fehlerbedingungen, Bereitstellungsänderungen

Auch beim Formulieren unserer Nachbereitungsaktionen halten wir uns an die Ratschläge von Lueder und Beyer.

Formulieren von Nachbereitungsaktionen

Die Formulierung kann darüber entscheiden, ob eine Nachbereitungsaktion schnell und leicht umgesetzt oder aufgrund mangelnder Umsetzbarkeit oder andauerndem Aufschieben immer weiter hinausgezögert wird. Eine sorgfältig ausgearbeitete Nachbereitungsaktion sollte folgende Eigenschaften aufweisen:

Umsetzbar: Formuliere jede Aktion als Satz, an dessen Anfang ein Verb steht. Die Aktion sollte zu einem nützlichen Ergebnis führen, nicht zu einem Prozess. Beispiel: "Erstelle eine Liste der kritischen Abhängigkeiten" ist eine gut formulierte Aktion, "Untersuche die Abhängigkeiten" dagegen nicht.

Konkret: Grenze den Umfang der einzelnen Aktionen so eng wie möglich ein. Stelle klar, was Teil der Aufgabe ist und was nicht.

Begrenzt: Gib zu jeder Aktion an, wann sie als fertig umgesetzt gilt, statt das Ende offen zu lassen oder fortlaufende Aktionen vorzugeben.

Nicht gut

Besser

Untersuche die Überwachung für dieses Szenario.

(Umsetzbar) Füge Benachrichtigungsfunktionen für alle Fälle hinzu, in denen dieser Service > 1 % Fehler zurückgibt.

Behebe den Fehler, der den Ausfall verursacht hat.

(Konkret) Sorge dafür, dass ungültige Angaben zur Postleitzahl in Benutzeradressformularen sicher verarbeitet werden.

Bitte den Engineer, vor dem Aktualisieren zu überprüfen, ob das Datenbankschema geparst werden kann.

(Begrenzt) Füge für Schemaänderungen eine automatische Prüfung vor der Übermittlung hinzu.

Genehmigungen bei der Nachbereitung

Atlassian sorgt mithilfe eines Jira-Workflows mit Genehmigungsschritt dafür, dass Nachbereitungsergebnisse genehmigt werden. In der Regel sind die Genehmiger die Service Owner oder andere für den Betrieb eines Service zuständige Manager. Die Genehmigung der Nachbereitungsergebnisse bedeutet:

  • Zustimmung zu den Erkenntnissen aus dem Review nach dem Vorfall, u. a. hinsichtlich der grundlegenden Ursache

  • Zustimmung zu den verlinkten "Aktionen mit hoher Priorität" als akzeptable Möglichkeit zur Beseitigung der grundlegenden Ursache

Oft fordern unsere Genehmiger zusätzliche Aktionen an oder erkennen eine Kausalkette, die von den vorgeschlagenen Aktionen nicht abgedeckt wird. So steigern Genehmigungen deutlich den Wert unseres Nachbereitungsprozesses bei Atlassian.

Bei Teams mit einer geringeren Anzahl von Vorfällen oder einer weniger komplexen Infrastruktur ist eine Genehmigung der Nachbereitungsergebnisse möglicherweise nicht erforderlich.

Nachbereitung ohne Schuldzuweisungen

Wenn etwas schiefgeht, neigen die meisten Menschen dazu, einen Schuldigen zu suchen. Atlassian bemüht sich sehr, dies zu vermeiden. Darauf musst du bei der Nachbereitung gezielt achten. Wir gehen davon aus, dass unsere Mitarbeiter immer in guter Absicht handeln, und beschuldigen niemanden, wenn Fehler passieren. Bei der Nachbereitung müssen die Umstände, die zu dem Fehler geführt haben, ehrlich und objektiv untersucht werden. Nur so ist es möglich, die wahren grundlegenden Ursachen zu finden und zu beseitigen. Schuldzuweisungen behindern dies aus folgenden Gründen:

  • Wenn Mitarbeiter ihr gutes Ansehen bei Kollegen oder Vorgesetzten gefährdet sehen, wiegen diese Bedenken in der Regel für sie schwerer als "die besten Unternehmensinteressen meines Arbeitgebers". Deshalb versuchen sie in einer solchen Situation meist, die Wahrheit zu verbergen oder zu vertuschen, um ihre eigenen Bedürfnisse zu schützen.

  • Selbst wenn eine Handlung eines Mitarbeiters direkt zu einem Vorfall geführt hat, sollten wir nicht fragen, warum er sich so verhalten hat, sondern weshalb das System dies nicht verhindert hat oder den Mitarbeiter glauben ließ, er handle richtig.

  • Jemandem die Schuld zu geben, ist unfreundlich und führt oft zu einer Kultur der Angst und des Misstrauens. 

Bei der Nachbereitung schaffen wir mit folgenden Techniken persönliche Sicherheit für alle Beteiligten:

  • Erkläre gleich zu Beginn des Post-Mortem-Analyse-Meetings, dass keine Schuldzuweisungen erfolgen sollen, und begründe dies. 

  • Benutze Rollenbezeichnungen (z. B. "der zuständige Widgets-Engineer") statt Namen (wobei die Fakten dennoch klar und unmissverständlich dargelegt werden müssen).

  • Achte darauf, dass der zeitliche Ablauf des Vorfalls, die Kausalkette und die Problembehebungsmaßnahmen in den Kontext von Systemen, Prozessen und Rollen statt von Personen gestellt werden.

Die Anregung für eine Nachbereitung ohne Schulzuweisungen und das hilfreiche Konzept der "Geschichte hinter der Geschichte" (second stories) stammt aus dem bahnbrechenden Artikel von John Allspaw.

Das Handbuch in gedruckter Form oder als PDF

Wir haben eine begrenzte Auflage unseres Handbuchs zum Vorfallmanagement drucken lassen und versenden diese Handbücher kostenlos. Alternativ kannst du die PDF-Version herunterladen.

Für dich empfohlen

Tutorial

Mit Opsgenie einen Bereitschaftsplan einrichten

In diesem Tutorial erfährst du, wie du einen Bereitschaftsplan einrichtest, Regeln für Außerkraftsetzungen anwendest, Bereitschaftsbenachrichtigungen konfigurierst und vieles mehr – und das alles in Opsgenie.

Tutorial

Mit Statuspage bei Vorfällen besser kommunizieren

In diesem Tutorial zeigen wir dir, wie du mithilfe von Vorfallvorlagen bei Ausfällen effektiv kommunizierst. Sie sind an viele Arten von Serviceunterbrechungen anpassbar.

Weitere Informationen zum Vorfallmanagement

In diesem Hub findest du weitere Anleitungen und Ressourcen zum Vorfallmanagement.