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.