In größerem Maßstab sind Fehler unvermeidlich — Server stürzen ab, Netzwerke fallen aus, Abhängigkeiten werden nicht verfügbar. Designing for Failure bedeutet, Systeme zu bauen, die Fehler tolerieren und sich graceful von ihnen erholen, anstatt anzunehmen, dass alles funktioniert. Dies ist essentiell für zuverlässige Systeme.
Design für Fehler (die Denkweise)
ASSUME things WILL fail → at scale, failures are NORMAL, not exceptional:
→ servers crash, networks partition, disks fail, dependencies go down, traffic spikes
→ design systems to EXPECT and HANDLE failures gracefully (not assume everything works)
→ "everything fails all the time" → build resilience in.
