Ein vollständig ausfallsicheres Softwaresystem zu bauen ist unmöglich. Ein System kann seinen gesamten Lebenszyklus ohne Ausfall durchlaufen, doch niemand kann garantieren, dass es nie ausfällt. Perfekter Code löst das Problem nicht, denn auch fehlerfreie Software hängt von einem physischen Computer, von Strom, funktionierendem Speicher und anderen Komponenten ab. Verliert die Maschine die Stromversorgung, fällt die Software aus, unabhängig von ihrer Qualität. Aus diesem Grund müssen Ingenieure für Ausfälle entwerfen und im Voraus festlegen, wie sich ein System verhalten soll, wenn einige seiner Teile nicht korrekt arbeiten.
Dieser Artikel betrachtet Strategien, mit denen Entwickler Ausfälle in ihren Systemen bewältigen können. Er beginnt mit der Begründung für die Haltung „Alles kann ausfallen“, die Teams darauf vorbereitet, Fehler zu erwarten, statt sie als seltene Ausnahmen zu behandeln. Anschließend werden Fehlervermeidung und Fehlertoleranz gegenübergestellt, zwei Ansätze, die beim Systementwurf unterschiedlichen Zwecken dienen.
Danach wendet sich die Diskussion praktischen Techniken zu. Entwickler müssen den Umfang eines Ausfalls bestimmen, um zu wissen, welche Teile eines Systems betroffen sind und welche intakt bleiben. Sie brauchen außerdem Wege, die Auswirkungen eines Ausfalls zu verringern, damit ein Problem in einer Komponente nicht auf die gesamte Plattform übergreift.
Schließlich behandelt der Artikel, wie Ausfälle behandelt werden, während das System weiterhin korrekt läuft, und wie sich die Wiederherstellung nach Ausfällen messen lässt. Die Nachverfolgung, wie schnell und vollständig sich ein System erholt, liefert Teams konkretes Feedback darüber, ob ihre Strategien zur Fehlerbehandlung tatsächlich funktionieren.
Quelle: ByteByteGo · Zusammengefasst von HeadlinesBriefing