BookZilla queries Flight, Train and Bus providers. Set each to healthy, slow or down. A naive page hangs on the slow one and breaks on the down one; a resilient page uses a 2s timeout, fails fast to a fallback, and still shows the providers that work — marking the rest temporarily unavailable.
BookZilla searches three providers. Set each one's health, choose naive vs resilient, and run the search — then watch whether one bad provider takes down the whole page.
🔎 Search: Delhi → Mumbai
Run a search to see the result page.
Try Flights=slow, Bus=down in naive mode: the page hangs ~8s then errors. Flip to resilient: trains render live, flights fall back to a cached price, buses are marked unavailable — all in 2s.
What just happened
▹In a distributed system one dependency fails while others are fine. A naive page treats any failure as total failure — and a slow dependency with no timeout hangs the whole page for everyone.
▹Graceful degradation gives a reduced-but-useful result: a timeout fails fast, a fallback fills the gap (cached data with a timestamp), and the providers that work still render. The user gets partial value instead of an error page.
▹Fallbacks must match business risk: a stale cached search price is fine; a stale balance at payment is not. Degrade where it's safe, fail loudly where it isn't.