Blog

Resilienz – verletzlich, aber unbesiegbar

Jun 19, 2023

Resilient steht für widerstandsfähig, flexibel und anpassungsfähig. Der Begriff ist in weitgehend allen Bereichen unseres Lebens verbreitet. Man verwendet ihn nicht nur bei der Beschreibung der Persönlichkeit eines Menschen, er wird auch im Zusammenhang mit IT-Systemen und der Ausgestaltung des Programmcodes eingesetzt. Geht es um die Resilienz der Psyche, so wird darunter eine innere Stärke, besondere psychische Widerstandsfähigkeit bzw. die Fähigkeit bezeichnet, nach Niederlagen immer wieder aufzustehen.

Ein resilienter Mensch lässt sich nicht aus der Bahn werfen und kommt meist wieder auf die Beine. Es handelt sich dabei um einen komplexen psychischen Mechanismus, der durch unterschiedliche Faktoren beeinflusst wird. Laut Raffael Kalisch, Neurowissenschaftler und Mitbegründer des Deutschen Resilienz-Zentrums in Mainz, sind Intelligenz, Optimismus und Extraversion die drei tragenden Säulen der Resilienz.

  • Intelligenz ist bei der Suche nach kreativen Wegen aus Krisen wichtig.

  • Optimismus schafft Vertrauen in die Zukunft.

  • Extraversion erleichtert die soziale Bindung.

Manche Psychologen bezeichnen Resilienz als das Immunsystem der Seele. Statt hilflos sein eigenes Leben zu betrachten, sind resiliente Menschen in der Lage, durch bloßes Weitermachen das Tief zu überwinden und sich den Herausforderungen zu stellen. Natürlich stellt sich die Frage, warum manche Personen mehr und andere weniger resilient sind. Eine gute Nachricht lautet, dass Resilienz keine angeborene Eigenschaft ist, und man sie im Laufe des Lebens erwerben bzw. stärken kann. Durch Forschungen wurde die Tatsache bestätigt, dass der Grundstein der Resilienz im Kindesalter gelegt wird. Das geschieht insbesondere durch Kontakt mit verlässlichen Bezugspersonen, die jederzeit und in jeder Situation zum Kind stehen, es fördern und spüren lassen, dass das Kind etwas Wertvolles ist. Auch ein tragfähiges soziales Netz im Kindesalter spielt eine entscheidende Rolle.

Im Erwachsenenalter kann man auch einiges tun, um die innere Stärke zu fördern. Es geht darum,

  • die eigenen Gefühle besser zu kontrollieren,

  • die Fähigkeit zu erwerben, Probleme nicht als Sackgasse aufzufassen, sondern als eine Umleitung, die zu neuen Chancen führt,

  • positives Denken zu erlernen.

Auch der Aufbau und die Pflege von Kontakten spielen eine wichtige Rolle, da Menschen soziale Wesen sind. Sie brauchen Zuwendung von Familie, Freunden und Gleichgesinnten. Man kann vieles besser meistern, wenn man die Dinge selbst in die Hand nimmt, statt sich als Opfer der Situation zu sehen. In diesem Zusammenhang kann man eine weitere wichtige Eigenschaft benennen: die Selbstwirksamkeitserwartung. Darunter versteht man die Überzeugung des Menschen, in der Lage zu sein, aus eigener Kraft sein Leben zu meistern. Das Leben ist nicht statisch. Veränderungen verbergen sich hinter jeder Ecke. Man sollte die Fähigkeit aufbauen, gegenüber Veränderungen offen und positiv eingestellt zu sein, denn ein Grundsatz der Evolution besagt: „Es ist nicht die stärkste Spezies, die überlebt, auch nicht die intelligenteste, sondern diejenige, die am besten auf Veränderungen reagiert“ (Charles Robert Darwin).

 

LUST AUF MEHR SOFTWARE ARCHITEKTUR?

Zahlreiche aktuelle Themen wie KI, LLMS und Machine Learning, sowie Frontend-Architektur, für Tools zur Softwarearchitektur, Cloudlösungen und Software beweisen.

 

Der Begriff Resilienz ist auch im IT-Umfeld präsent. Darunter versteht man die Fähigkeit von IT-Systemen, bei Problemen und Störungen widerstandsfähig zu sein und bei Ausfällen einzelner Komponenten robust zu reagieren. So sind beispielsweise redundante und verteilte Systeme sowie eine Datensicherung typische Maßnahmen zur Sicherstellung bzw. Steigerung der Resilienz. Die Anforderungen an die Resilienz von IT-Systemen sind in der letzten Zeit stetig gestiegen. Die Gründe dafür sind sehr unterschiedlich, u. a. die Globalisierung, der vielseitige Einsatz von Mobilgeräten, die Komplexität, die zunehmende Verzweigung der Systeme, der Einsatz von Fremdbibliotheken und Frameworks usw. Die Verfügbarkeit der Systeme steht dabei im Mittelpunkt und wird als ein wichtiges Qualitätsmerkmal eines IT-Systems angesehen. Man kann die Verfügbarkeit anhand folgender Formel veranschaulichen: Verfügbarkeit = Betriebszeit / (Betriebszeit + Ausfallzeit)

Um die Verfügbarkeit eines Systems sicherzustellen, gibt es unterschiedliche Herangehensweisen. Traditionelle Ansätze zielen darauf ab, die Betriebszeit zu erhöhen, während moderne Ansätze auf reduzierte Wiederherstellungszeiten und damit auf eine Minimierung der Ausfallzeiten abzielen. Grundsätzlich unterscheidet man vier Kategorien von Resilienzentwurfsmustern: lose Kopplung, Isolation, Latenzkontrolle und Überwachung. Einige Beispiele solcher Muster sind:

  • Retry: Hierbei handelt es sich um ein sehr einfaches Muster, bei dem Anforderungen im Falle eines Fehlers eine konfigurierbare Anzahl von Malen wiederholt werden, bevor der Vorgang als Fehler markiert wird. Dieses Muster kann beispielsweise bei temporären Netzwerkproblemen, internen Fehlern, die durch den Ausfall einer Datenbank verursacht werden, oder bei längeren Antwortzeiten wegen einer großen Anzahl Anfragen eingesetzt werden.

  • Fallback: Das Fallback-Muster ermöglicht es, die Ausführung im Falle einer fehlgeschlagenen Anfrage mit einem anderen Dienst fortzusetzen. Das heißt, anstatt die Berechnung bzw. den Prozess wegen einer fehlenden Antwort abzubrechen, wird ein Fallback-Wert eingetragen und die Berechnung wird fortgesetzt.

  • Timeout: Anhand des Timeout-Musters kann eine unbegrenzte Wartezeit für Antworten vermieden werden. Somit kann jede Anfrage als fehlgeschlagen behandelt werden, wenn innerhalb des Timeouts keine Antwort empfangen wurde. Das Timeout-Muster wird in fast jeder Anwendung verwendet, um zu vermeiden, dass Anfragen für immer „hängen bleiben“.

  • Circuit Breaker: In der Elektronik ist der Circuit Breaker ein Schalter, der die Komponenten vor Schäden durch Überlastung schützt. In der Software schützt ein Circuit Breaker die betreffenden Dienste vor Spamming, während sie aufgrund hoher Last bereits teilweise nicht verfügbar sind. Das Muster wurde von Martin Fowler beschrieben. Es kann als zustandsbehaftete Softwarekomponente implementiert werden, die zwischen drei Zuständen umschaltet: „geschlossen“ (Anfragen können frei fließen), „offen“ (Anfragen werden abgelehnt, ohne an die Remote-Ressource gesendet zu werden) und „halboffen“ (eine Prüfanfrage darf entscheiden).

Fazit

Sowohl resiliente IT-Systeme als auch resiliente Menschen sind anpassungsfähig, flexibel und weisen eine hohe Widerstandsfähigkeit auf. Resilienz ist nicht einfach so da, sondern es ist eine Eigenschaft, die Menschen trainieren können, und die in IT-Systemen durch Einsatz spezieller Muster umgesetzt werden kann.

Alle News zum Software Architecture Summit!