System Design Fundamentals
Vote

0% completed

Resilience and Error Handling

Fault Tolerance

Graceful Degradation

Retry and Backoff

Error Handling and Reporting

Chaos Engineering

Failures in a distributed system are not exceptional events. Machines die, networks drop packets, and services time out. Resilience is about minimizing the impact when they do, and recovering without drama.

Five practices cover it.

Fault tolerance keeps working through a failure, graceful degradation keeps working partially, retry with backoff handles transient failures, error handling makes them visible, and chaos engineering finds the weaknesses first
Fault tolerance keeps working through a failure, graceful degradation keeps working partially, retry with backoff handles transient failures, error handling makes them visible, and chaos engineering finds the weaknesses first

Fault Tolerance

Fault tolerance is the ability of a system to keep functioning correctly when faults or failures are present.

You build it by putting redundancy at several levels, data, services and nodes, and using replication, sharding and load balancing so the system absorbs a failure without users or overall performance noticing.

Graceful Degradation

Graceful degradation is the ability to keep providing limited functionality when some components or services fail.

The alternative is what most systems do by default: one dependency goes down and the whole thing returns an error. A gracefully degrading system keeps serving requests with reduced functionality rather than shutting down completely.

A product page that loses its recommendations service should still show the product. Losing the recommendations is a worse page. Losing the page is an outage.

The techniques that make it possible are circuit breakers, timeouts, and fallbacks.

When one dependency fails, the whole page can fail with it, or the page can serve everything else and leave out the part that depended on it
When one dependency fails, the whole page can fail with it, or the page can serve everything else and leave out the part that depended on it

Retry and Backoff

Transient failures are ordinary: a network blip, a timeout, a service briefly unavailable. Most of them succeed on a second attempt.

A retry strategy reattempts a failed operation automatically. Backoff increases the delay between successive attempts.

The retry is the obvious part. The backoff is the part worth understanding. If a service is struggling and every client retries immediately and repeatedly, the retries themselves become the load that keeps it down. Spacing the attempts out avoids piling excessive load on a system that is already failing.

So retries raise the chance an operation eventually succeeds, and backoff is what stops that from making things worse.

Error Handling and Reporting

Errors need to be logged consistently, categorized, and turned into alerts when they matter. Exposing them through the monitoring and observability tooling is what turns a failure into something diagnosable rather than something reported by a user.

Chaos Engineering

Chaos engineering is the practice of intentionally injecting failures into a system to test its resilience and identify weaknesses.

The reasoning is direct. Every resilience mechanism above is a claim about what happens during a failure, and an untested claim is a guess. Simulating real failure scenarios shows whether the system actually recovers and adapts the way the design says it will.

Chaos Monkey and Gremlin are tools for it.

PracticeWhat it protects againstWhat it gives up
Fault toleranceComponent failureCost of redundancy
Graceful degradationA dependency being downSome functionality
Retry with backoffTransient failuresA little latency
Error handlingSilent failuresNothing, this is table stakes
Chaos engineeringUntested assumptionsDeliberate risk, in controlled conditions

💡 If you propose retries in an interview, propose the backoff in the same sentence. Retries without backoff are a well-known way to turn a small failure into a large one, and interviewers listen for whether you mention it unprompted.

Key takeaway: Fault tolerance keeps a system working correctly through failures, using redundancy at the data, service and node levels. Graceful degradation keeps serving with reduced functionality instead of shutting down, using circuit breakers, timeouts and fallbacks. Retry strategies reattempt failed operations, and backoff spaces those attempts out so retries do not pile load onto a struggling system. Error handling makes failures visible, and chaos engineering injects failures on purpose to find weaknesses before they find you.

The next lesson, Fault Tolerance vs. High Availability, separates two terms that sound like the same promise and are not.

S

sidpssp

· 2 years ago

notes

Aastha Bist

Aastha Bist

· 2 years ago

Under retry and backoff strategies, I did not understand this particular statement: "This can increase the likelihood of successful operation completion while preventing excessive load on the system during failure scenarios."

Can someone please provide more context/examples related to what this means?

Show 2 replies

Reading Progress

0%


Vote for new content

On This Page

Fault Tolerance

Graceful Degradation

Retry and Backoff

Error Handling and Reporting

Chaos Engineering