In IT systems scalability means the ability to increase a system's capacity (throughput) by adding resources like CPU, Memory, Disks and increasing Network capacity to support more users and / or more concurrent transactions.
The two main types of upscaling are
- Scale up – typically adding CPU's and / or Memory to one server
- Scale out – adding additional servers
The crucial questions are:
If I add a 2nd CPU (or even more) into the server or purchase a server with more CPU's
- can the application utilize the additional CPU's?
- will my single long running report or batch job utilize more than one CPU and finish in less time?
If I purchase a 2nd server
- Is the application designed for multi-server deployment?
- Would using an external workload balancer distributing requests to 2 servers end up in duplicate customer-ID's ?
You see that this is a complex topic....
To ensure that the application will scale according to your needs, the detailed requirements need to be carefully selected and formulated.
Our “Template for Non-Functional Requirements” dedicates one chapter to scalability-requirements.