© Excellent backgrounds/Shutterstock.com
Mehr Stabilität in verteilten Anwendungen

Damit Ihnen rechtzeitig die Sicherung durchbrennt


Sicherungen wurden ursprünglich eingeführt, um die Eskalation einer Situation zu verhindern. Wenn Ihnen ab und zu die Sicherung durchbrennt, ist das deshalb durchaus zu begrüßen, jedenfalls wenn es sich dabei um einen Circuit Breaker im Sinne von Hystrix handelt. In diesem Artikel möchten wir Hystrix vorstellen, eine Bibliothek, die Ihnen dabei hilft, die Stabilität Ihrer verteilten Anwendung zu verbessern und kaskadierende Fehlerszenarien zu verhindern.

Niemand hatte Josef K. verleumdet, allerdings hatte er in dieser Woche wieder Bereitschaftsdienst. Und das bedeutete meistens viel Ärger. Er war Softwareentwickler beim Reisedienstleister „30 Days of Happiness“ und Teil des Teams, welches das Flugbuchungssystem „Always Available“ entwickelt hatte (Abb. 1). Dieses System ermöglichte es den firmeneigenen Reisebüros über ein einheitliches Benutzerinterface Flugbuchungen bei allen Fluggesellschaften des Landes zu tätigen. Die Systeme der einzelnen Airlines waren über sehr unterschiedliche Technologien mit „Always Availabe“ verbunden und leider waren sie nicht immer zuverlässig.

kraus_abb1.tif_fmt1.jpgAbb. 1: Systemübersicht der Beispielanwendung

Um mit den aktuellsten Informationen zu arbeiten, wurde immer in Echtzeit mit den Airlinesystemen kommuniziert. Wenn zum Beispiel ein Kunde im Reisebüro „Dream Holiday“ einen Flug von Köln nach Barcelona suchte, wurde über das System des Reisebüros eine Anfrage zu „Always Available“ geschickt. Dieses schickte dann der Reihe nach Requests zu den einzelnen Airlinesystemen, um nach einem geeigneten Flug im gewünschten Zeitraum zu suchen. Es war schon oft vorgekommen, dass ein einzelnes Airlinesystem das ganze Flugbuchungssystem zum Stillstand brachte, weil es nur noch Threads gab, die auf das nicht funktionierende Airlinesystem warteten.

Und so war es auch dieses Mal. Alles stand still und das Telefon klingelte ununterbrochen. Man konnte das Flugbuchungssystem zwar über Konfigurations-Files von einzelnen Airlinesystemen abkoppeln, das erforderte aber einen Neustart der gesamten Anwendung. Und wie immer wusste er nicht, welches der Airlinesysteme dieses Mal für die Probleme verantwortlich war.

Stabilitäts-Patterns zur Rettung

Offensichtlich hatte man bei der Entwicklung von „Always Available“ einige der grundlegenden Stabilitäts-Patterns für verteilte Anwendungen missachtet. Diese werden von Michael Nygard in seinem immer noch sehr empfehlenswerten Buch „Release It!“ [1] ausführlich beschrieben und sollen hier kurz zusammengefasst werden:

  • Tim...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang