Skip to main content
networking

Graceful Degradation

Graceful degradation allows a system to continue operating with reduced functionality when components fail, rather than failing completely. A site with a failed recommendation engine still shows products. A service with a failed cache still queries the database (slower but functional). Requires identifying which features are optional.

Definition

Graceful degradation is the design principle that partial failure should not cause total failure. When a non-critical dependency becomes unavailable, the system continues serving its primary function with reduced features rather than returning 500 errors. Implementation requires classifying dependencies as critical (system cannot function without them: primary database, auth service) and non-critical (system works without them: analytics, recommendations, notifications, cache). Non-critical calls use: timeouts (do not wait forever), fallbacks (serve cached/default data on failure), circuit breakers (stop trying after repeated failures), and feature flags (disable degraded features entirely). Example: an e-commerce checkout page with a failed review service shows products without reviews rather than failing the entire page. Graceful degradation requires explicit architectural decisions – it does not happen accidentally. Every external call needs a defined fallback behavior.

Examples

  • Cache miss: fall through to database (slower but works)
  • Recommendation service down: show popular items instead of personalized
  • Circuit breaker open: return cached response from 5 minutes ago instead of error

Related Protocols

Related Terms