Failing softly
Graceful degradation means that when a system is under stress or a dependency is down, it drops to a reduced but still useful mode rather than failing completely. The opposite is a hard crash where one missing piece takes the whole experience offline.
Examples in the wild
- A shopping site whose recommendation service is down still shows products, just without the personalized row.
- A video app that cannot reach the analytics service still plays video; it simply skips logging.
- A dashboard serves slightly stale cached data when the live source is unreachable.
How to design for it
- Classify features as essential or optional.
- Wrap optional dependencies so a failure returns a safe default instead of an error.
- Make the core path depend on as few things as possible.
Key idea
Graceful degradation keeps the essential experience alive by shedding optional features instead of failing all at once.