Zum Inhalt springen
Contentin
ContentinRegistrieren

Post-Mortem

Ein Linkback-Checker hat unsere Veröffentlichung blockiert: Ein fiktives Post-Mortem

Erfundenes Team, erfundener Vorfall, echte Mechanismen. Wir erzählen es in der Reihenfolge, in der ein On-Call-Ingenieur es aufschreiben würde.

Ein roter mechanischer Arm hält ein Förderband mit einem Paket in einer Miniatur-Fabrikumgebung an
Dies ist ein Beispiel

Das Team, das Produkt und die Zeitangaben unten sind erfunden, um zu zeigen, wie ein Fehler abläuft. Es werden kein reales Unternehmen, kein Kunde und keine Messung beschrieben.

Der Vorfall, chronologisch

  1. 1

    09:10, eine Launch-Seite wird in das CMS eingegeben

    Ein sechsköpfiges Produktteam betreibt eine Marketing-Website auf einer Headless-CMS-Plattform mit statischem Build. Ein Redakteur bereitet eine Partnerankündigung vor, die auf eine Domain verweist, die in der Woche zuvor registriert wurde.

  2. 2

    09:14, der Redakteur drückt auf Veröffentlichen

    Der Publish-Webhook ruft eine Funktion auf. Die Funktion führt einen Linkback-Checker-Aufruf gegen die Partnerdomain aus und ist so programmiert, dass sie die Veröffentlichung bei jeder Nicht-Erfolg-Antwort blockiert.

  3. 3

    09:14, der Build startet nie

    Zwei Dinge schlagen gleichzeitig fehl. Die Domain ist brandneu, daher kennt sie unser Index vielleicht noch nicht. Zusätzlich war das Prepaid-Guthaben auf dem Schlüssel des Teams leer, sodass der bezahlte Follow-up-Aufruf HTTP 402 zurückgab.

  4. 4

    09:40, das Team findet es

    Der Redakteur meldet einen vagen Fehler. Ein Ingenieur liest das Funktionsprotokoll, sieht den 402-Fehler und das leere Ergebnis und benötigt zwanzig Minuten, um herauszufinden, welcher der beiden Gründe die Blockierung verursacht hat.

  5. 5

    10:05, der Launch erfolgt manuell

    Jemand umgeht den Hook mit einem manuellen Deploy. Der Launch ist 55 Minuten spät, und das Umgehen hinterlässt keine Aufzeichnung darüber, welche Checks übersprungen wurden.

Ein Gärtner pflegt drei verschiedene Pflanzentypen in einem Miniatur-Gartenbeet

Was das Team vor dem Launch geprüft hat

Wenig, wie sich herausstellte. Die Testliste enthielt nur bekannte Domains, weshalb die Lücke verborgen blieb, bis ein Partnerlink einging. Ein Test auf einer bekannten Seite beweist, dass die Infrastruktur funktioniert, sagt aber nichts über eine Domain aus, die der Index noch nicht gesehen hat.

Bessere Testlisten enthalten drei Arten von Domains: eine etablierte, eine kleine Nischen-Domain und eine kürzlich registrierte Domain. Führen Sie alle drei durch den Hook, bevor man ihr vertraut.

Welche Domains hat der Test abgedeckt?

Nur die einfachen. Jede Domain auf der Liste verfügte über jahrelange Historie, daher kam jede Antwort vollständig zurück, und niemand sah, was eine leere Antwort bei einer Veröffentlichung bewirkt.

Fügen Sie eine Domain hinzu, die wirklich neu ist, und lesen Sie das Ergebnis manuell nach. Wenn die Notiz „bad“ (schlecht) anzeigt, wo „unknown“ (unbekannt) stehen sollte, muss die Regel vor dem Launch überarbeitet werden.

Was der Staging-Lauf ausgelassen hat?

Der Staging-Lauf verwendete einen Schlüssel mit gesundem Guthaben, daher wurde der Pfad für leeres Guthaben nie ausgeführt. Niemand hatte einen Test geschrieben, der das Guthaben absichtlich aufbraucht.

Behalten Sie diesen Pfad im Test. Simulieren Sie einmal pro Quartal einen 402-Fehler und lesen Sie, was der Redakteur danach sieht, denn ein Fehlerpfad, den niemand ausführt, ist ein Pfad, dem niemand vertrauen kann.

Warum es passiert ist

Das Gate behandelte jede Nicht-Erfolg-Antwort als Urteil. Das war die Ursache. Ein Guthabenproblem und eine unbekannte Domain sind Fakten über die Tooling-Infrastruktur und den Index, und keine davon sagt etwas über die Seite aus.

Unser Graph wird etwa einmal im Monat neu aufgebaut. Eine Domain, die nach der letzten Aktualisierung registriert wurde, kann leer erscheinen, und ein neuer Partner ist der Normalfall für eine Launch-Seite. Niemand hatte das geprüft. Das Team hatte den Hook nur mit alten, bekannten Domains wie nytimes.com getestet.

Der zweite Fehler war Stille. Die Funktion protokollierte den Fehler, sendete aber keine Warnung, und der Redakteur sah eine generische Fehlermeldung ohne Hinweis darauf, dass das Guthaben aufgebraucht war.

Die Kosten waren nie das Problem. Bei 2 Credits pro Aufruf beliefen sich die gesamten Prüfungen für diese erfundene Seite im Monat auf etwa $0.60, derselbe Betrag wie in der Zeile mit 3.000 Veröffentlichungen in der Kostenübersicht. Das Gate war günstig und kostete sie dennoch eine Stunde in 2026.

Der 402 verdient eine eigene Zeile. Ein Prepaid-Guthaben ist ein Zustand, den man überwachen kann, daher hätte eine einfache Alarmierung bei 10.000 Credits, was $1 entspricht, Tage früher ausgelöst.

Aktionselemente, die das Team notiert hat

Verantwortliche sind Rollen, keine Personen. Alle Elemente sind Teil des Beispiels.
ÄnderungVerantwortlichWarum
402 als Überspringen plus Warnung im Platform-Kanal behandelnPlatformCredit ist ein Abrechnungszustand, kein Seitenzustand
Eine leere Antwort für eine neue Domain als „unknown“ (unbekannt) behandeln, nicht als „bad“ (schlecht)PlatformDer Index hinkt etwa einen Monat hinterher
Dem Redakteur den Grund in klaren Worten anzeigenEditorial-Tooling20 Minuten verloren beim Lesen der Logs
Übersprungene Checks im Eintrag protokollierenPlatformManuelle Deploys hinterließen keine Spur
Den Hook mit einer Domain testen, die diese Woche registriert wurdeQAAlte Domains verbergen die Lücke

Eine Generalprobe für die Launch-Woche

Führen Sie diese Checks vor dem nächsten Launch durch, nicht nach dem nächsten Fehler.

  1. 1

    Wählen Sie eine Domain, die noch nicht geprüft wurde

    Wählen Sie eine kürzlich registrierte Domain und rufen Sie die kostenlose Übersichtsfunktion dafür auf. Bestätigen Sie, dass eine dünne Antwort als „unknown“ protokolliert wird und nicht als Blockierung.

  2. 2

    Ein Testguthaben aufbrauchen

    Verwenden Sie einen Test-Schlüssel mit kleinem Guthaben und lassen Sie ihn absichtlich bis auf Null laufen. Beobachten Sie, wie der 402 eintrifft, der Alarm ausgelöst wird und die Veröffentlichung zum Build fortschreitet.

  3. 3

    Die Nachricht des Redakteurs laut vorlesen

    Bitten Sie einen Kollegen, der den Hook nicht kennt, den Fehlertext vorzulesen. Wenn er nicht sagen kann, was als Nächstes zu tun ist, überarbeiten Sie die Nachricht vor dem Launch.

  4. 4

    Das Überspringen in den Eintrag schreiben

    Bestätigen Sie, dass ein übersprungener Check eine datierte Notiz mit dem Grund im Eintrag hinterlässt. Ein manuelles Deploy hinterlässt dann keine Lücke, die niemand erklären kann.

Drei verschiedene farbige Werkzeugkisten stehen auf einer Werkstattbank in einer Miniatur-Szene

Wie die Korrektur implementiert wurde

Das Team teilte einen generischen Fehler in drei auf, weil jede Antwort einen anderen Verantwortlichen hat. Ein 401 ist ein Schlüsselproblem, ein 402 ist ein Abrechnungszustand, und eine leere Antwort für eine neue Domain ist einfach nur unbekannt. Jede Antwort erhält ihren eigenen Zweig und ihre eigene Nachricht. Das ist die gesamte Änderung.

Niemand musste einen Stack Trace lesen, um zu wissen, was passiert ist. Die Alarme benennen den Zustand, und der Redakteur sieht einen Satz, der sagt, was als Nächstes zu tun ist.

Warum ist der Guthabenalarm weit über Null eingestellt?

Zehntausend Credits entsprechen zum veröffentlichten Preis $1, ein kleiner Betrag, der dennoch viel Vorwarnzeit bietet, wenn er früh eintrifft. Stellen Sie den Alarm dort ein, wo ein Mensch ihn sieht, nicht in einem Log, das niemand am Freitag öffnet.

Ein Check, der einmal täglich laut fehlschlägt, ist besser als einer, der während eines Launchs still fehlschlägt.

Vereinbaren Sie die Zahl mit dem Team und schreiben Sie sie an derselben Stelle wie die Regel zum Schlüsselwechsel, damit beide gemeinsam überprüft werden.

Sollte eine neue Domain als Fehler zählen?

Nein. Eine Domain, die der Index noch nicht gesehen hat, ist eine Tatsache über den Index, nicht über die Seite. Speichern Sie sie als „unknown“ mit dem Datum, und lassen Sie einen Redakteur entscheiden, ob auf die nächste Aktualisierung gewartet werden soll.

Die gleiche Regel gilt für jede dünne Antwort. Behandeln Sie sie als fehlende Daten und niemals als Urteil über den Partner.

Protokollieren Sie die unbekannten Antworten in einer eigenen Liste, damit ein Muster davon bei der nächsten Überprüfung sichtbar ist, statt im allgemeinen Log begraben zu sein.

Was übertragbar ist

Bei Linkdaten fail open, bei der Warnung fail loud

Ein Link-Check sollte niemals das Einzige sein, das einen Redakteur von einem Launch abhält. Lassen Sie die Seite durch, markieren Sie den Eintrag und machen Sie den Fehler für die Person, die für den Schlüssel verantwortlich ist, unverkennbar.

  • Unterscheiden Sie 401, 402 und eine leere Antwort im Code
  • Halten Sie einen Guthabenalarm weit über Null (siehe die Kostenübersicht)
  • Üben Sie den Fehler im Staging vor dem Launch-Tag

Fragen, die das Team danach stellte

Das Review-Meeting stellte in jeder Version dieser Geschichte dieselbe Handvoll Fragen. Hier ist, wie das erfundene Team sie beantwortet hat, und warum diese Antworten von einer Organisation zur nächsten unterschiedlich sein würden.

Keine dieser Antworten ist universell, und jede hängt davon ab, wofür die Seite gedacht ist. Der Punkt ist, vor der nächsten Veröffentlichung eine Antwort auf Papier zu haben.

Hätte das Gate dicht schließend fehlschlagen sollen?

Für dieses erfundene Team: Nein. Ein Link-Check ist ein Signal, das auf einem monatlichen Index basiert, und er sollte nicht das Einzige sein, das einen Redakteur von einem Launch abhält.

Schreiben Sie die Richtlinie als einen Satz, damit der nächste Ingenieur eine beabsichtigte Blockierung von einem Bug unterscheiden kann.

Hätte ein größeres Guthaben es verhindert?

Es hätte das Problem verzögert, aber das Design nicht behoben. Ein größeres Guthaben kann ebenfalls aufgebraucht sein, und ein Gate, das jede Nicht-Erfolg-Antwort als Urteil behandelt, wird weiterhin bei der ersten unbekannten Domain blockieren.

Die Korrektur ist die Aufteilung in drei Antworten plus ein Alarm, der früh auslöst. Das Guthaben ist nur ein Teil der Geschichte.

Stellen Sie die gleiche Frage an jedes Gate, das Sie bauen: Welcher Fehler wäre still, und wer würde ihn zuerst bemerken?

Ein Hinweis zur Hypothese

Echte Teams werden unterschiedlich sein. Ihr Team könnte aus guten Gründen dicht schließend fehlschlagen, z. B. bei einer regulierten Seite, bei der jeder ausgehende Link von einer Person überprüft wird. In Ordnung. Machen Sie das einfach zu einer bewussten Entscheidung.

Das Webhook-Runbook listet dieselben Entscheidungen als Checkliste auf, und die Mythenliste behandelt die Überzeugungen, die dieses erfundene Team in die Falle gelockt haben.