IT Infrastructuur Architectuur Blog

Sjaak Laan's visie op infrastructuur architectuur

Performance concepts - Scaling

Scalability indicates the ease in with which a system or component can be modified, added, or removed, to accommodate changing load. A system whose performance improves after adding hardware, proportionally to the capacity added, is said to be a scalable system.

In general there are two ways of increasing the scalability of a system: vertical scaling and horizontal scaling.

Vertical scaling (also known as scaling up) means adding resources to a single node in a system, typically involving the addition of CPUs or memory to a single computer (“To make the system faster, just add more memory”). The problem with vertical scaling is that there is always a limit to the amount of scalability of a system. There is only so much memory that a system board can support. And the effect of adding more resources to a single system can quickly get very expensive.

An alternative to vertical scaling is horizontal scaling. Horizontal scaling (also known as scaling out) means adding more nodes to a system, such as adding a new web server in a pool of web servers or more disks in a disk array. These days low cost "commodity" systems can be combined to perform tasks that could in the past only be handled by supercomputers.

In general larger numbers of computers means increased management complexity, as well as a more complex programming model and issues such as throughput and latency between nodes. But while horizontal scaling is more complex to implement than vertical scaling, but it pays off in the long term, as the scalability is much higher.