In the area of software, scalability is defined as the capability of a network or system to handle or accommodate increasing quantity of work. That is, system’s ability to increase the overall output under amplified load conditions when added the required resources (hardware). The same are principle is also applied to various other areas, for example, database, computer networks etc. Some of the most common aspects used in the field of software systems are discussed below.
A scalable system is variously defined according to variety of functions the system is intended to fulfil. An administrative system needs to accommodate increasing number of organizations or individuals who are sharing a distributed resource without any degradation in the performance. This is called Administrative Scalability. Functional Scalability is something where a system can be enhanced simply by addition of some new functionality with least resource and effort. If the system is able to perform at required levels of function when expanded from limited geographic location to distributed and wider geography, then the system is said to have Geographic Scalability. Load Scalability is when a system (generally a distributed system) expands or contracts effortlessly according to the user traffic or inputs. Another characteristic for the same would the ease with which a system, or a component of the system, can be modified, added or removed according to the fluctuating load.
This can also be defined as Vertical Scalability and Horizontal Scalability based on the hardware configuration of the system. In vertical scalable system, capacity of a system is increased or decreased by upgrading or downgrading the hardware in order to meet the changing system load. Horizontal scalable system is one which has a network of hardware and system performance can be decreased or increased by increasing or decreasing the hardware network.
Scalability is one of the most important aspects of the software design and one of the least understood. System stakeholders need to precisely estimate the scalability requirements. Tools like Goal-oriented Requirement Analysis can be employed to correctly predict the scalability requirement. Accurate identification of the scalability requirements of a system can save any organization a lot of effort and money.