When discussing system design, several key characteristics emerge as essential for building robust, efficient, and adaptable systems.
Here's an overview of the most important ones:
1 Scalability
Definition: The ability of a system to handle increased loads – be it more users, data, or transactions – without sacrificing performance.
It can be done by various ways:
- Horizontal scaling: Adding more machines.
- Vertical scaling: Enhancing the capacity of a single machine.
2 Reliability
Definition: The system's ability to function correctly and consistently over time, even in the presence of faults or failure of any component.
It can be done through various ways:
- Robust error handling.
- Minimal downtime and quick recovery from failures.
3 Availability
Definition: The degree to which a system remains operational and accessible when needed. It is represented in 9's for example, 99.90% percent availability means downtime of some hours per year.
Key Points:
- Use of redundant components.
- Failover mechanisms to ensure continuous service even during partial system outages.
4 Efficiency
Definition: How efficiently a system processes tasks under various loads.
It is primarily measured by:
- Latency: Delay in getting the first response.
- Throughput: Number of operations handled in a given time.