← Back to System Design Fundamentals

Reliability, Fault Tolerance, Redundancy

System Design FundamentalsSeniorsystem-design

The Question

What is the relationship between reliability, fault tolerance, and redundancy?

What a Strong Answer Covers

  • All three defined distinctly
  • relationship stated.

Senior-Level Answer

Reliability, fault tolerance, and redundancy are related but distinct concepts that together form the foundation of resilient system design. Conflating them leads to over-engineering in some areas and blind spots in others.

**Reliability** is the probability that a system performs its intended function correctly over a specified period under specified conditions. It is typically expressed as availability (e.g., 99.9% uptime = 8.7 hours downtime/year). Reliability is the outcome you're optimizing for.

**Fault tolerance** is the system's ability to continue operating correctly in the presence of one or more component failures. A fault-tolerant system degrades gracefully rather than failing catastrophically. Fault tolerance is a design property—it is achieved through specific techniques.

**Redundancy** is the duplication of critical components so that if one fails, another takes over. Redundancy is the primary mechanism for achieving fault tolerance. Types include: - **Active-active redundancy**: All redundant components handle traffic simultaneously. Capacity scales with node count; failover is instant. Requires all nodes to stay in sync. - **Active-passive (standby)**: One primary handles traffic; standby waits. Simpler state management, but failover takes time and the standby is wasted capacity until needed. - **N+M redundancy**: N components required to operate, M extra for failures. RAID 5 (N+1 parity), RAID 6 (N+2).

**The relationship**: Redundancy enables fault tolerance; fault tolerance is what makes the system reliable under adverse conditions. A system can have redundancy without being fault-tolerant (if failover is not automated) or be fault-tolerant in ways that don't require redundancy (graceful degradation—serving cached data when a dependency is down).

**Beyond redundancy—fault tolerance techniques**: - **Circuit breakers**: Prevent cascading failures by stopping calls to a failing dependency and returning a fallback response. - **Bulkheads**: Isolate failures to a subsystem—a slow database query pool does not exhaust thread pools for other services. - **Graceful degradation**: Serve reduced functionality rather than total failure (show cached product data when the inventory service is down). - **Retry with backoff and jitter**: Tolerate transient faults without overwhelming a recovering service.

Reliability targets (SLOs) drive the engineering trade-off: moving from 99.9% to 99.99% requires eliminating single points of failure and automating failover, which significantly increases infrastructure cost and operational complexity.

What Separates a 2/3 from a 3/3

2/3 — Passing but Incomplete

Correctly defines all three terms, explains the relationship (redundancy → fault tolerance → reliability), and gives two concrete fault tolerance techniques.

3/3 — Strong Answer

Covers definitions, relationship, active-active vs. active-passive redundancy, circuit breakers, bulkheads, graceful degradation, and the cost/complexity trade-off of increasing SLO targets.

Common Mistakes

  • Treating redundancy and fault tolerance as synonymous—redundancy is one mechanism; fault tolerance is the broader property.
  • Forgetting that redundancy without automated failover does not provide fault tolerance.
  • Not mentioning graceful degradation as a fault tolerance strategy that doesn't require redundancy.
  • Ignoring the cost dimension—going from 99.9% to 99.99% is not free.

Follow-Up Questions

  • How does a circuit breaker contribute to fault tolerance without redundancy? — It prevents a slow downstream service from exhausting upstream thread pools/connections, isolating the failure and allowing fallback logic to execute.
  • What is the difference between active-active and active-passive redundancy in terms of failover time and cost? — Active-active: instant failover, full capacity used, higher complexity/sync cost. Active-passive: failover latency during promotion, wasted standby capacity, simpler consistency.
  • How do you calculate the availability of two components in series vs. in parallel? — Series: multiply availabilities (0.999 × 0.999 = 0.998). Parallel (redundant): 1 - (1-A1)(1-A2). Parallel dramatically improves availability for independent failures.
  • When does adding redundancy NOT improve reliability? — When failures are correlated (same AZ, same dependency, same config bug). Redundancy only helps for independent failures. Common-mode failures (e.g., bad deploy) affect all replicas.

Related Questions

  • Redis Caching Patterns
  • Vertical vs Horizontal Scaling
  • API Versioning
  • SLOs vs SLAs
  • Availability — Five 9s

Can You Explain This Cold?

Reading the answer is step one. Explaining it unprompted — under interview pressure — is what actually matters. Get AI-graded feedback on your answer with follow-up probes on your weak points.

Get Graded — Free Assessment
GrindQuestionsAITechnical interview assessment
TermsPrivacyAbout