Pranav Kulkarni

Implementing Distributed Systems: Concepts

Reliability

The system should continue to work correctly (performing the correct function at the desired level of performance) even in the face of adversity (hardware or software faults and even human error), “continuing to work correctly, even when things go wrong.”

Reliability is achieved by removing every failure point and introducing components and data redundancy.

Scalability

Scalability is the property of a system to handle a growing amount of work by adding resources to the system.

Horizontal scaling can be achieved by adding more servers to the pool of resources.

Vertical scaling can be achieved by adding more resources (CPU, RAM, storage, etc.) to an existing server. This approach comes with downtime and an upper limit.

Availability

Availability is when a system remains operational to perform its required function in a specific period.

Efficiency

Efficiency indicates how the system uses the inputs. It measures productivity, i.e., the output against the information.

Maintainability

References:

  1. System Design Cheatsheet

  2. System Design Interview

  3. Designing Data-Intensive Applications