Scalability
In telecommunications and software engineering, scalability indicates a system's ability to maintain quality performance or service under an increased system load by adding resources (usually hardware). A system whose performance improves after adding hardware (proportional to the capability added) is said to be a scalable system.In hardware, scalability is the ability to increase the size and processing power of an online transaction processing system by adding processors and devices to a system, systems to a network, and so on, and to do so easily and transparently without bringing systems down.
In a database, scalability is when performance remains unchanged despite the number of queries or transactions , or a server performance remains unchanged despite the number of ports or users connected.
In routers, scalability is the capability of a product (hardware or software) to function well as it scales up or down to meet a user's needs. For example, a router (hardware) with one WAN port is said to be scalable if it can be scaled up to support more than one WAN port or down (back to one WAN port) through the addition or removal of WAN modules.
In routing protocols, the scalability of a method measures its capability to perform efficiently, as parameters of the network increase to large values. As a typical example, a routing protocol is considered scalable with respect to network size, if the size of the necessary routing table on each node grows as O(log N), where N is the number of nodes in the network.
In general systems, scalability is the measure of a system's ability to increase or decrease in performance and cost in response to changes in application and system processing demands. Examples would include how well a hardware system performs when the number of users is increased, how well a database withstands growing numbers of queries, or how well an operating system performs on different classes of hardware. Enterprises that are growing rapidly should pay special attention to scalability when evaluating hardware and software.
To scale vertically or scale up, means to add resources to a single node in a system, such as adding memory or a faster hard-drive to a computer. To scale horizontally or scale out, means to add more nodes to a system, such as adding a new computer to a clustered software application.
It is often advised to focus system design on hardware scalability rather than on capacity. It is typically cheaper to add a new node to a system in order to achieve improved performance than to partake in performance tuning to improve the capacity that each node can handle.
See also: