Availability In System Design 🏋🏽 | SDE Interview

Ganesh Prasad
4 min readDec 27, 2022

--

Availability in system design refers to the ability of a system to function correctly and provide its services to users when needed. A highly available system is reliable and can handle a large volume of requests without experiencing downtime or other disruptions.

Factors Affecting the Availability of a System

Several factors can impact the availability of a system. One is the reliability of the hardware and software components that make up the system. If a system is built with high-quality components, it is less likely to experience failures that could cause downtime.

Another factor affecting availability is the system’s ability to handle failures or disruptions when they occur. This can be achieved by using redundant components, such as backup servers or power supplies, that can take over if a primary component fails.

How to improve Availability

Active-passive redundancy

One common approach to increasing the availability of a system is to use redundant components. For example, if a system has two servers, if one fails, the other can take over and continue providing service to users. This is known as active-passive redundancy, as one component is active and handling requests while the other is passive and ready to take over in the event of a failure.

source: gajshield

Active-active redundancy

Another approach is to use active-active redundancy, where both components actively handle requests and can take over if the other fails. This can provide even higher availability, as there is no single point of failure. However, it can also be more complex to implement and may require additional resources, such as load balancers, to distribute requests evenly between the two components.

Fault Tolerance

In addition to using redundant components, systems can also be designed with fault tolerance in mind. This means they can continue functioning even if one or more components fail. For example, a system might be designed to automatically redirect requests to functioning components in the event of a failure or to use alternative routes if a network connection becomes unavailable.

Load Balancer

Load balancing is another technique that can be used to increase the availability of a system. Distributing incoming requests evenly across multiple components allows a system to handle larger requests without overloading. This can be achieved through a load balancer, which sits between the client and the system’s components and directs requests to the appropriate component based on factors such as the component’s current workload and availability.

source: medium | Larry/Pang yang

Monitoring and Alerting

Designing a system for high availability also often involves implementing monitoring and alerting systems to ensure that issues can be detected and addressed quickly. This can include monitoring the status of components, tracking the system's performance, and generating alerts when issues are detected.

Source: Google Cloud

Conclusion

Overall, the goal of designing for high availability is to ensure that a system can meet the needs of its users consistently and without interruption. This can involve a combination of techniques such as redundant components, fault tolerance, load balancing, and monitoring and alerting systems. By carefully considering these factors, system designers can create highly available systems that provide reliable service to users.

Thanks 🤗.

Do you want to Hire/Connect? LinkedIn

P.S.: If you like this uninterrupted reading experience on this beautiful platform of Medium.com, consider supporting the writers of this community by signing up for a membership HERE. It only costs $5 per month and helps all the writers.

A clap would be highly appreciated if you liked what you just read. You can be generous in clapping; it shows me how much you enjoyed this story. And if you didn’t like it? Please do comment😋!

--

--

Ganesh Prasad
Ganesh Prasad

Written by Ganesh Prasad

Backend Developer at Appscrip | C++ veteran, 💜 Dart

No responses yet