Resilience – Wie mache ich robuste Software?

Patterns of resilience ist wirklich lesenswert. Sollte man immer mal wieder verinnerlichen…

Interassant ist vor allem, dass eigentlich nichts Weltbewegendes gesagt wird, sondern nur „Kleinigkeiten“, die – gemeinsam betrachtet und umgesetzt – ein System robust machen.

Nebenbei: „Resilience“ wird dort so definiert:

Resilience (IT)

the ability of a system to handle unexpected situations

  • without the user noticing it (best case)
  • with a graceful degradation of service (worst case)

Es werden Aspekte genannt wie:

  • Isolation„: Das System sollte aufgteilt sein in Teile, so dass nie das Ganze ausfällt und es keine kaskadierenden Fehler geben sollte.
  • Loose Coupling“ (Lose Kopplung): Asynchrone Kommunikation, Location-Transparency, Event-Driven etc.
  • Idempotenz„: Operationen sollten in verteilten Systemen wiederholbar sein. Das verringert Kopplung und mach Abläufe in Fehlersituationen weniger komplex.
  • Fail fast„: Fehlersituationen sollten möglichst frühzeitig erkannt und behandelt werden. D.h. vor (aufwändigen) Operationen immer erst prüfen, ob alle Annahmen stimmen.
  • Shed Load“ (frei „Lastbegrenzung“): Hohe Last legt leicht mal das ganze System lahm. Vorschlag „Gatekeeper“ vor Resourcen schalten, die ggf. Requests zurückweisen.

u.v.a.m.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert