Scalability is a measure of how well a system can grow in order to handle higher demands, while still maintaining the same levels of performance.
The demand may arise as part of a sustained growth in user uptake, or it may be due to a sudden peak of traffic (for example, a food delivery application is likely to receive more requests during lunch hours).
A highly scalable system should constantly monitor its constituent components and identify components which are working above a "safe" resource limit, and scale that component either horizontally or vertically.
We can increase scalability in two ways:
- Scale Vertically or scaling Up: Increase the amount of resources (for example, CPU, RAM, storage, bandwidth) to the existing servers
- Scale Horizontally or scaling out: Adding servers to the existing cluster
Scaling vertically is...