Prüfung der Robustheit von IT-Systemen.

Die Robustheit von IT-Systemen ist immer ein Aspekt, dem besondere Aufmerksamkeit geschenkt werden sollte. Deshalb benutzen Entwickler Unit- und Integration-Tests um ihre Systeme zu prüfen. Dabei stellt sich die Frage: Wie sicher sind wir uns, dass das System funktioniert?

Was bei kleineren Systemen noch recht überschaubaren Testaufwand bedeutet, erzeugt in verteilten Systemen erheblichen Aufwand. Anders als bei einer monolithischen Architektur können bei verteilten Systemen Probleme auftreten, obwohl alle Services korrekt arbeiten. Solche Fehler können entstehen, wenn es Netzwerkprobleme wie zum Beispiel zu hohen Latenzen gibt oder aufgrund von Hardwareproblemen oder Stromausfall Teile des Systems nicht erreichbar sind.

Der beste Weg: Chaos Engineering.

Als Ergänzung zu Tests kann hier Chaos Engineering angewendet werden, um weitere Sicherheit zu gewährleisten.

„Chaos Engineering is the discipline of experimenting on a system in order to build confidence in the system’s capability to withstand turbulent conditions in production“ [https://principlesofchaos.org/]

Beim Chaos Engineering werden verschiedene Chaos Experimente durchgeführt, deren Ziel es ist zu beweisen, dass das System gar nicht oder nur sehr schwer, aus der Balance gebracht werden kann. Anders als bei Unit-Tests sollte man sich bei Chaos Experimenten System-Metriken als überprüfbare Ergebnisse aussuchen, keine internen Attribute. Chaos Engineering soll zeigen, dass ein System funktioniert, nicht wie.

Da diese Experimente von einem realen Grundzustand des Systems ausgehen sollen, wird die Durchführung auf einem Produktivsystem empfohlen. Es muss hierbei sichergestellt werden, dass ein durchgeführtes Experiment die Nutzererfahrung nicht zu stark einschränkt. Gleichzeitig muss der Einfluss aber so stark sein, dass messbare Ergebnisse entstehen.

Chaos Engineering ist nicht nur ein Buzzword. Jeder Softwareentwickler sollte zumindest die Grundlagen des proaktiven Fehlertests kennen, um bessere, robustere und widerstandsfähigere Systeme zu entwickeln.

„Introduce a little anarchy. Upset the established order, and everything becomes chaos. I’m an agent of chaos…“ – The Joker

Have fun. Enjoy coding.
Your INNO coding team.