Kurz gesagt, sollten wir den Tod in unseren Programmen, Prozessen und Threads auf einer niedrigen Ebene zum Wohle des Gesamtsystems auslegen?
Fehler passieren. Prozesse sterben. Wir planen eine Katastrophe und erholen uns gelegentlich davon. Aber wir entwerfen und implementieren selten unvorhersehbaren Programmtod. Wir hoffen, dass die Betriebszeiten unserer Services so lange sind, wie wir sie am Laufen halten möchten.
Ein Makrobeispiel für dieses Konzept ist der Chaos Monkey von Netflix , mit dem AWS-Instanzen in einigen Szenarien zufällig beendet werden. Sie behaupten, dies habe ihnen geholfen, Probleme zu entdecken und redundantere Systeme aufzubauen.
Ich spreche von einer niedrigeren Ebene. Die Idee ist, dass traditionell lange laufende Prozesse zufällig beendet werden. Dies sollte eine Redundanz im Entwurf erzwingen und letztendlich stabilere Systeme erzeugen.
Hat dieses Konzept schon einen Namen? Wird es bereits in der Industrie eingesetzt?
BEARBEITEN
Aufgrund der Kommentare und Antworten fürchte ich, dass ich in meiner Frage nicht klar war. Zur Klarheit:
- ja, ich meine zufällig,
- ja, ich meine in der Produktion und
- nein, nicht nur zum testen.
Zur Erklärung möchte ich eine Analogie zu mehrzelligen Organismen ziehen.
Organismen bestehen in der Natur aus vielen Zellen. Die Zellen verzweigen sich, um Redundanz zu erzeugen, und sterben schließlich ab. Es sollten jedoch immer genügend Zellen der richtigen Art vorhanden sein, damit der Organismus funktionieren kann. Dieses hochredundante System erleichtert auch die Heilung bei Verletzungen. Die Zellen sterben, damit der Organismus lebt.
Die Einbeziehung des zufälligen Todes in ein Programm würde das größere System zwingen, Redundanzstrategien anzuwenden, um lebensfähig zu bleiben. Würden dieselben Strategien dazu beitragen, dass das System auch bei anderen Arten von unvorhersehbaren Fehlern stabil bleibt?
Und wenn jemand dies versucht hat, wie heißt es? Ich würde gerne mehr darüber lesen, wenn es bereits existiert.