Problem Nr. 6: Timeouts, Wiederholungen und Ausfallsicherheit

Verteilte Systeme befinden sich ständig in einem Teilausfallmodus. Was passiert, wenn Dienst A den Dienst B nicht erreichen kann? Wir könnten die Anfrage wiederholen, oder?

Stellenmarkt
  1. Automation Engineer - Robotic Process Automation (w/m/d)
    dm-drogerie markt GmbH + Co. KG, Karlsruhe
  2. Abteilungsleitung IT (m/w/d)
    PVS Limburg-Lahn GmbH, Limburg an der Lahn
Detailsuche

Schon - aber das führt uns leider immer tiefer ins Verderben.

Ich habe Teams erlebt, die auf harte Unterbrechungen setzen und dann die Timeouts eines HTTP-Aufrufs an einen nachgelagerten Dienst erhöhen. Das mag zwar eine normale Reaktion sein, um etwas Zeit zur Problemlösung zu gewinnen. Allerdings hat das Nebenwirkungen.

Denn alle Anfragen, die durch eine Unterbrechung gestoppt werden, weil sie zu lange dauern, sind nun umso länger da. Wenn es einen Anstieg des Datenverkehrs gibt, werden mehr und mehr Anfragen in die Warteschlange eingereiht, was zu einer schlimmeren Situation führt als der, die Sie beheben wollten - zumal manche Entwickler sich nicht gut mit Warteschlangen auskennen und nicht wissen, warum es Timeouts gibt.

Golem Akademie
  1. Einführung in die Programmierung mit Rust
    21.-24. September 2021, online
  2. Advanced Python - Fortgeschrittene Programmierthemen
    16./17. September 2021, online
  3. C++ 20: Concepts - Ranges - Coroutinen - Module
    4.-8. Oktober 2021, online
Weitere IT-Trainings

Ähnliches passiert, wenn Teams anfangen, über Thread-Pools für ihre HTTP-Clients und dergleichen nachzudenken. Klar: Ihre Konfiguration ist eine Kunst für sich. Aber das Setzen von Werten einfach aus einem Bauchgefühl heraus kann für einen schwerwiegenden Ausfall sorgen.

Eine Schwierigkeit bei der Wiederherstellung nach einem Ausfall ist, dass nicht alle Ausfälle auf die gleiche Art zustande kommen. In einigen Fällen mag der Abnehmer (consumer) idempotent sein. Das bedeutet jedoch, dass wir proaktiv entscheiden sollten, was in jedem der Fehlerszenarien zu tun ist.

Wir sollten uns Fragen stellen wie: Ist der Abnehmer idempotent? Kann ich den Aufruf erneut versuchen? Ich habe schon viele Entwickler erlebt, die das als "Sonderfall" ignoriert haben - nur um später festzustellen, dass sie ein massives Datenintegritätsproblem haben.

Wiederholungsversuche sind noch komplizierter, selbst wenn ein Fallback-Mechanismus vorhanden ist. Stellen Sie sich vor, dass Sie fünf Millionen Nutzer in Ihrer mobilen App haben und Ihr Nachrichtenbus, der die Benutzereinstellungen aktualisiert, eine Zeit lang nicht mehr funktioniert.

Stellen Sie sich nun vor, dass Sie für diesen Fall einen Fallback-Mechanismus einrichten, der den Dienst für die Benutzereinstellungen über eine HTTP-API aufruft.

Sie wissen wahrscheinlich, worauf ich hinauswill.

Handbuch für Softwareentwickler: Das Standardwerk für professionelles Software Engineering

Nun hat dieser Dienst plötzlich einen massiven Traffic-Anstieg und es kann sein, dass er nicht in der Lage ist, ihn zu bewältigen. Oder schlimmer: Ihr Dienst könnte sogar in der Lage sein, all die neuen Anfragen entgegenzunehmen; wenn aber der Wiederholungsmechanismus kein exponentielles Backoff und Jitter beinhaltet, könnte es zu einem verteilten Denial-of-Service durch Ihre mobilen Anwendungen kommen.

Und jetzt? Mögen Sie verteilte Systeme immer noch?

Leider ist all das nur ein Bruchteil der Probleme, die ich erlebt habe. 🤣 Verteilte Systeme sind schwer zu verstehen und die meisten Softwareentwickler sind erst seit Kurzem regelmäßig mit ihnen konfrontiert.

Die gute Nachricht ist, dass es für viele der hier erwähnten Probleme gute Lösungsansätze gibt und dass die Branche verbesserte Werkzeuge entwickelt hat, damit die Probleme auch von anderen Unternehmen als FAANG gelöst werden können.

Ich mag verteilte Systeme immer noch, und ich denke immer noch, dass Microservices eine gute Lösung für organisatorische Probleme sind. Schwierig wird es aber, wenn wir Ausfälle als "Randfälle" betrachten oder als etwas, das uns bestimmt niemals passieren wird. Denn die Randfälle werden ab einer bestimmten Größenordnung zur neuen Normalität und wir sollten damit umgehen lernen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Problem Nr. 3: End-to-End-Testing
  1.  
  2. 1
  3. 2
  4. 3
  5. 4


Aktuell auf der Startseite von Golem.de
Globale Erwärmung XXL
Wenn die Erde unbewohnbar wird

In spätestens fünf Milliarden Jahren wird unsere Sonne zu einem roten Riesen, der die Erde überhitzen oder sogar verschlucken wird. Wohin könnte eine menschliche Zivilisation dann ausweichen?
Von Miroslav Stimac

Globale Erwärmung XXL: Wenn die Erde unbewohnbar wird
Artikel
  1. Elektromobilität: Großbritannien plant O-Lkw-Projekt
    Elektromobilität
    Großbritannien plant O-Lkw-Projekt

    Ab 2040 dürfen in Großbritannien keine Verbrenner-Lkw mehr verkauft werden. Die Regierung testet elektrische Alternativen.

  2. Sexismus: Entwickler wollen Inhalte von World of Warcraft ändern
    Sexismus
    Entwickler wollen Inhalte von World of Warcraft ändern

    Es rumort weiter bei Activision Blizzard: Entwickler wollen streiken und WoW überarbeiten. Konzernchef Bobby Kotick meldet sich erstmals.

  3. ZV-E10: Sony bringt spiegellose Systemkamera für Youtuber
    ZV-E10
    Sony bringt spiegellose Systemkamera für Youtuber

    Die Sony ZV-E10 ist eine neue Kamera mit Wechselobjektiven, umklappbarem Display und anderen Funktionen, die sie für Vlogger interessant macht.

Marconry 23. Jul 2021 / Themenstart

Wie Bluejanis schrieb, eine programmiersprachenunabhängige Spezifikation (z.B. OpenAPI...

TheUnichi 20. Jul 2021 / Themenstart

Es geht darum, ein gesamtes Framework in einzelnes Paket zu schmeißen. Man braucht nie...

ds4real 20. Jul 2021 / Themenstart

Man kann Dinge im Code erzwingen - aber die Erfordernisse unterscheiden sich sogar von...

ds4real 20. Jul 2021 / Themenstart

Ich arbeite selbst seit über 10 Jahren im Java-Umfeld, kenne mich aber auch in vielen...

mnementh 19. Jul 2021 / Themenstart

All diese Ansätze dienen ja im Endeffekt dazu komplexe Software zu handhaben. Aber meine...

Kommentieren



Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Schnäppchen • Samsung-Monitore Amazon Exclusive günstiger (u. a. G7 32" QLED Curved WQHD 240Hz 559€) • AKRacing Core EX-Wide SE Gaming-Stuhl 229€ • Thrustmaster TCA Officer Pack Airbus Edition 119,99€ • Flight Simulator Xbox Series X 69,99€ [Werbung]
    •  /