Graceful degradation znači da kada neka zavisnost otkaže, sustav nastavlja s osnovnim tokom rada nudeći smanjeno ili djelomično iskustvo umjesto vraćanja greške. Cilj je soft fail, ne hard fail: degradirana stranica bolja je od 500 greške.
Graceful degradation znači da kada neka zavisnost otkaže, sustav nastavlja s osnovnim tokom rada nudeći smanjeno ili djelomično iskustvo umjesto vraćanja greške. Cilj je soft fail, ne hard fail: degradirana stranica bolja je od 500 greške.
BAD (fail hard):
search() → backend timeout → throw → user sees HTTP 500 (whole page dead)
GOOD (fail soft):
result = search()
catch timeout → return cached_results OR empty + notice
page renders:
[ "Showing recent results — live search is temporarily unavailable." ]
+ cached listings, working nav, working checkout
→ user keeps browsing; core flow intact
Umjesto mrtve stranice, korisnik dobiva keširane rezultate i malu obavijest, dok navigacija i checkout nastavljaju s radom. Greška je sadržana na jednoj značajki.
Zavisnosti će otkazati — API-ji trećih strana, search clusteri, usluge preporuka. Bez graceful degradationa, bilo koji jedan neuspjeh kaskadira u potpuni prekid. Dizajniranje da soft fail (keširani/djelomični/zadani podaci), flagiranje nekritičnih putanja, timeout s fallbacks-ima i izolacija grešaka s bulkheads-ima čuva proizvod upotrebljivim tijekom parcijalnih greški — što je razlika između manjeg problema i velikog incidenta.