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. Projekt Manager FUTR HUT (m/w/d)
    Tegel Projekt GmbH, Berlin
  2. Digital Solutions Manager (m/w/d)
    P.E.G. Einkaufs- und Betriebsgenossenschaft eG, München
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. Go für Einsteiger: virtueller Zwei-Tages-Workshop
    25./26.07.2022, Virtuell
  2. Cloud Competence Center: Strategien, Roadmap, Governance: virtueller Ein-Tages-Workshop
    26.07.2022, Virtuell
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


janoP 02. Sep 2021

Wenn die Services fachlich getrennt sind, brauchen sie i. d. R. unterschiedliche...

TheUnichi 20. Jul 2021

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

ds4real 20. Jul 2021

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

ds4real 20. Jul 2021

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



Aktuell auf der Startseite von Golem.de
Verkaufsstart des 9-Euro-Tickets
Was Fahrgäste wissen müssen

Das 9-Euro-Ticket für den ÖPNV ist beschlossene Sache, Verkehrsverbünde und -unternehmen sehen sich auf den Verkaufsstart in diesen Tagen gut vorbereitet. Doch es gibt viele offene Fragen.

Verkaufsstart des 9-Euro-Tickets: Was Fahrgäste wissen müssen
Artikel
  1. LTE-Patent: Ford droht Verkaufs- und Produktionsverbot in Deutschland
    LTE-Patent
    Ford droht Verkaufs- und Produktionsverbot in Deutschland

    Ford fehlen Mobilfunk-Patentlizenzen, weshalb das Landgericht München eine drastische Entscheidung gefällt hat. Autos droht sogar die Vernichtung.

  2. Mobilität: ADAC bietet Fahradfahrern bundesweit Pannenhilfe an
    Mobilität
    ADAC bietet Fahradfahrern bundesweit Pannenhilfe an

    Ab Juni 2022 können Radfahrer, deren Gefährt kaputt ist, beim ADAC anrufen. Ein Gelber Engel repariert das Fahrrad nach Möglichkeit vor Ort.

  3. Strange New Worlds Folge 1 bis 3: Star Trek - The Latest Generation
    Strange New Worlds Folge 1 bis 3
    Star Trek - The Latest Generation

    Strange New Worlds kehrt zu episodenhaften Geschichten zurück und will damit Star-Trek-Fans alter Schule abholen. Das gelingt mit Bravour. Achtung, Spoiler!
    Eine Rezension von Oliver Nickel

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
    Daily Deals • Acer Predator X38S (UWQHD, 175 Hz OC) 1.499€ • MindStar (u. a. AMD Ryzen 7 5700X 268€ und PowerColor RX 6750 XT Red Devil 609€ und RX 6900 XT Red Devil Ultimate 949€) • Alternate (u. a. Cooler Master Caliber R1 159,89€) • SanDisk Portable SSD 1 TB 81€ • Motorola Moto G60s 149€ [Werbung]
    •  /