Log in to leave a comment
No posts yet
Im Oktober 2025 kam das Herzstück der Cloud-Welt, die AWS-Region US-EAST-1, zum Stillstand. EC2-Instanzen konnten nicht mehr erstellt werden und Lambda verweigerte die Antwort. Am Ende aller Dominosteine stand DynamoDB. AWS bezeichnete dies im offiziellen Bericht als eine potenzielle Race Condition. Aber war es wirklich nur ein Problem von unglücklichem Timing? Aus der Sicht eines Senior Engineers war dieses Ereignis eine Katastrophe, die durch logische Mängel in einem verteilten System und das Fehlen von Wiederherstellungsmechanismen verursacht wurde.
DynamoDB nutzt eine DNS-Baumstruktur und gewichtete Datensätze für Hochverfügbarkeit. Der Traffic wird durch drei Kernkomponenten verwaltet.
| Komponente | Rolle | Betriebsweise |
|---|---|---|
| DNS Planner | Berechnung der Traffic-Verteilungsraten | Erstellung regionaler Optimierungspläne |
| DNS Enactor | Aktualisierung der Route 53-Einträge | Unabhängige Ausführung in 3 AZs |
| DWFM | Koordination des gesamten Workflows | Orchestrierung der Update-Verbreitung |
Das System ist so konzipiert, dass bei Problemen in einem bestimmten Bereich die Gewichtung auf 0 gesetzt wird, um den Traffic zu blockieren. Die Theorie war perfekt, doch im realen Betrieb traten unerwartete Variablen auf.
Am Tag des Vorfalls kam es aufgrund hoher Last zu Verzögerungen bei der Verarbeitung durch Enactor 1. In der Zwischenzeit implementierte Enactor 2 die neueste Version, Plan 102. Hier geschah eine fatale Kettenreaktion.
Zuerst erwachte der verzögerte Enactor 1 und überschrieb die neuesten Informationen mit den veralteten Daten von Plan 100. Im darauffolgenden Cleanup-Schritt begann Enactor 2, alte Datensätze zu löschen, die nicht im aktuellen Referenzplan 102 enthalten waren. Die Daten, die Enactor 1 gerade erst wiederhergestellt hatte, waren aus der Sicht von Enactor 2 lediglich Löschobjekte. Letztendlich verschwanden die DNS-Einträge des Haupt-Endpunkts von DynamoDB.
Die meisten hören hier mit der Analyse auf. Sie kommen zu dem Schluss, dass die Daten aufgrund eines Timing-Konflikts gelöscht wurden. Der entscheidende Punkt ist jedoch: Warum konnte das System nicht von selbst wieder aufstehen, obwohl es die leeren Datensätze sah?
Als der Endpunkt verschwand, lösten die Systeme, die für die Wiederherstellung zuständig sein sollten, nacheinander Laufzeitausnahmen (Runtime Exceptions) aus. Der Enactor-Code sah keinen Zustand vor, in dem kein Datensatz existiert. Ähnlich wie bei einem Speicherverwaltungsfehler (Use-after-free) referenzierte das System bereits verschwundene Objekte, was zum Zusammenbruch führte.
Die automatisierte Rollback-Logik verschlimmerte die Situation zusätzlich. Da die Datenbank, die als Referenz für die Wiederherstellung diente, selbst korrumpiert war, geriet das System in eine Endlosschleife. Die Automatisierung wurde so nicht zum Werkzeug der Heilung, sondern zur Waffe der Zerstörung.
AWS kündigte an, Rate-Limiting-Funktionen einzuführen. Dies lindert jedoch nur die Symptome und ist kein grundlegendes Rezept. Wenn ein System nicht die Fähigkeit besitzt, abnormale Zustände zu erkennen und sich selbst zu heilen, werden sich solche Tragödien wiederholen.
| Kategorie | Offizielle Erklärung | Einblicke eines Seniors |
|---|---|---|
| Fehlerursache | Konflikt bei gleichzeitigen Updates | Fehlende Validierung zum Zeitpunkt des Schreibens (CAS) |
| Fehlerphänomen | Stillstand der Automatisierung | Mangelhaftes Design für sicheres Scheitern (Safe Default) |
| Gegenmaßnahmen | Begrenzung der Update-Geschwindigkeit | Sicherstellung der Idempotenz der Wiederherstellungslogik |
Dieser Vorfall im Jahr 2025 beweist das Gewicht einer einzelnen Zeile Code. Es war kein spektakulärer Hack, der eine Infrastruktur im Wert von Milliarden Dollar zu Fall brachte. Es war eine kleine, unzureichende Ausnahmebehandlung – das Fehlen einer Definition, wie zu verfahren ist, wenn man vor leeren DNS-Einträgen steht.
Die Essenz des Engineering besteht nicht darin, komplexe Funktionen zu erstellen. Es ist die Fähigkeit, Systeme so zu entwerfen, dass sie in unerwarteten Fehlersituationen würdevoll scheitern und zuverlässig wiederhergestellt werden können.
Essenzielle Checkliste für Stabilität
Ein wahrer Experte ist jemand, der hartnäckig fragt, warum ein System nicht wiederhergestellt wurde, statt nur zu fragen, wie es abgestürzt ist. Ist Ihr System bereit, heute sicher zu scheitern?