In verteilten Systemen können wir Fehler niemals ausschließen. Die möglichen Fehlerquellen sind fast unendlich.
-
partieller oder totaler Netzwerkausfall
-
Datenbankprobleme
-
Anwendungen / Services sind kurzfristig / langfristig nicht verfügbar
-
Lastprobleme
-
Sicherheit / Firewall / ungültige Zertifkate
Resilient Software sollte so geschrieben sein, dass Fehler akzeptiert werden und der Aufrufer noch zumindest teilweise das System bedienen kann.
Netflix hat mit seiner Werkzeug-Box
SimianArmy Tools für das Chaos-Testing erstellt und damit
Chaos-Testing salonfähig gemacht.
Chaos-Testing folgt den
Prinzipien des Chaos.
Beispielsweise fährt Chaos-Monkey durch Zufall ausgewählte Server-Instanzen herunter, genau wie ein Affe, der wahllos Kabel zieht.
Warum macht Netflix das? Weil nur dann sichergestellt ist, dass ein System auch dann funktioniert, wenn Upstream-Services nicht verfügbar* sind. Ein Entwickler kann sich niemals darauf verlassen, dass der Service, den er gerade aufruft auch verfügbar ist - Chaos.