
Durgesh Tiwari
Author
Modern applications such as Amazon, Netflix, Google, and Paytm serve millions of users every day. Users expect these applications to be available even when failures occur. However, in distributed systems, failures such as server crashes, network issues, hardware failures, and software bugs are inevitable.
To handle these failures, distributed systems rely on resilience and reliability. These concepts help applications continue operating even when failures occur.
Although they are closely related, they have different goals. Reliability focuses on delivering correct and consistent results, while resilience focuses on recovering quickly from failures and keeping the system running.
Reliability is the ability of a system to perform its expected functions correctly and consistently without failures for a specified period.
A reliable system processes requests accurately, protects data, and delivers consistent results under normal operating conditions.
In simple words, reliability means a system performs its intended tasks correctly and consistently every time.
Consider an online banking application. When a customer transfers ₹10,000 to another account, the system should:
Transfer the correct amount.
Update both account balances correctly.
Save the transaction successfully.
Prevent duplicate transactions.
If these operations are completed correctly every time, the system is considered reliable.
Delivers accurate and consistent results.
Builds user trust.
Reduces system failures.
Improves business continuity.
Increases customer satisfaction.
Resilience is the ability of a system to recover quickly from failures and continue providing services with minimal disruption.
Unlike reliability, which focuses on delivering correct and consistent results, resilience focuses on recovering quickly from failures and keeping the system running.
In simple words, resilience means a system can recover from failures and continue running with little or no impact on users.
Suppose you are watching a movie on Netflix. If one streaming server becomes unavailable, Netflix automatically redirects your request to another available server, allowing the movie to continue playing without interruption.
This automatic recovery is an example of system resilience.
Although reliability and resilience are closely related, they focus on different aspects of a distributed system.
Reliability | Resilience |
|---|---|
Focuses on delivering correct and consistent results. | Focuses on recovering quickly from failures. |
Aims to prevent failures whenever possible. | Assumes failures can happen and handles them effectively. |
Ensures the system performs as expected. | Ensures the system continues operating during failures. |
Measures how consistently a system performs. | Measures how well a system recovers from failures. |
Fault Tolerance is the ability of a system to continue operating even when one or more components fail.
Instead of stopping completely, the system detects failures and continues providing services using alternative resources.
In simple words, fault tolerance means a system continues working even if some of its components fail.
Suppose an e-commerce application has three payment servers.
If one payment server fails, the Load Balancer automatically redirects requests to the remaining servers. Customers can continue making payments without interruption.
Reduces service interruptions.
Improves system availability.
Increases user satisfaction.
Supports continuous business operations.
High Availability (HA) is the ability of a system to remain accessible and operational with minimal downtime.
Its goal is to ensure that users can access the application even when some components fail.
In simple words, high availability means a system remains available to users most of the time, even during failures.
High availability is commonly measured as a percentage.
Availability | Downtime per Year |
|---|---|
99% | About 3.65 days |
99.9% | About 8.7 hours |
99.99% | About 52 minutes |
99.999% | About 5 minutes |
Many modern applications aim for 99.99% or higher availability to minimize downtime.
Load balancing
Redundant servers
Data replication
Automatic failover
Continuous monitoring
Redundancy is the practice of keeping duplicate copies of critical system components so that a backup can take over if one component fails.
In simple words, redundancy means having backup resources to keep the system running during failures.
Backup Servers
Duplicate Databases
Multiple Network Connections
Extra Storage Devices
Secondary Data Centers
Suppose a company stores customer data in two data centers. If one data center becomes unavailable due to a power outage, the other data center continues serving user requests without interruption.
Improves system reliability.
Increases availability.
Reduces downtime.
Supports fault tolerance.
Failover is the process of automatically switching from a failed component to a backup component to keep the system running.
In simple words, failover means automatically replacing a failed component with a backup to minimize service interruption.
The primary server handles user requests.
A monitoring system continuously checks its health.
If the primary server fails, the backup server automatically takes over.
Users continue using the application with little or no interruption.

Suppose the primary database server fails. The system automatically switches to the standby database server, allowing users to continue using the application without interruption.
Health Checks are automated tests that continuously monitor whether a service or server is running correctly.
In simple words, health checks verify that a service is healthy and ready to handle requests.
Health checks commonly verify:
CPU Usage
Memory Usage
Database Connectivity
Network Status
API Response
Server Availability
If a service fails a health check, it is temporarily removed from the Load Balancer until it becomes healthy again.

Suppose a Load Balancer sends a health check request to each web server every few seconds. If one server does not respond, the Load Balancer automatically redirects new requests to the healthy servers.
Graceful Degradation is a design approach in which a system continues providing its core functionality even when some non-essential features become unavailable.
In simple words, graceful degradation means a system continues working with reduced functionality instead of failing completely.

Suppose an online shopping website has a product recommendation feature. If the recommendation service becomes unavailable:
Customers can still search for products.
They can add products to the cart.
They can complete the payment.
The website continues working normally, but product recommendations are temporarily unavailable.
Improves user experience.
Keeps core features available.
Reduces service disruption.
Improves system resilience.
Disaster Recovery (DR) is the process of restoring systems, applications, and data after a major failure or disaster.
In simple words, disaster recovery is the process of bringing a system back to normal after a major disruption.
Disasters may include:
Earthquakes
Floods
Fire accidents
Cyberattacks
Data center failures
Power outages
The goal of disaster recovery is to restore business operations as quickly as possible.
Common disaster recovery strategies include:
Regular Backups: Create copies of important data so it can be restored if data is lost.
Data Replication: Store the same data in multiple locations.
Secondary Data Centers: Maintain backup infrastructure in different geographical regions.
Recovery Testing: Regularly test backup and recovery procedures.
Disaster Recovery Plan: Prepare a documented plan for restoring systems during emergencies.

Companies such as Amazon, Netflix, and Google use multiple data centers, redundancy, automatic failover, health checks, and load balancing to keep their services available even during hardware failures or network outages.
These techniques help them build reliable, resilient, and highly available systems that serve millions of users every day.
Resilience and Reliability are essential concepts in System Design because they help applications continue operating even when failures occur. While reliability focuses on delivering correct and consistent results, resilience focuses on recovering quickly from failures and keeping the system running. By using techniques such as Fault Tolerance, High Availability, Redundancy, Failover, Health Checks, Graceful Degradation, and Disaster Recovery, developers can build systems that are more reliable, resilient, and easier to maintain.