.NET Architecture & System Design Interview Question #11

What is resilience in a distributed system?

Architecture Fundamentals, Scalability, Availability & Performance Junior Beginner

Quick Interview Answer

Resilience is the ability of a system to withstand failures, recover from them, and continue operating at an acceptable level. Distributed systems must expect network delays, partial failures, unavailable dependencies, and duplicate operations.

Detailed Explanation

Resilience is the ability of a system to withstand failures, recover from them, and continue operating at an acceptable level. Distributed systems must expect network delays, partial failures, unavailable dependencies, and duplicate operations.

Resilience patterns include timeout, retry, circuit breaker, bulkhead, fallback, idempotency, and asynchronous messaging. These patterns must be combined carefully because an aggressive retry policy can make an outage worse.

Code Example

Call dependency
  |
Timeout
  |
Retry transient failure
  |
Circuit breaker if unhealthy
  |
Fallback / graceful degradation