What is scalability?
Thanks to scalability, software can function with more resources or in a new environment according to the additional performance available. This is essential not only in the private sphere, but also for companies.
In short, scalability is the ability of a system to grow. The performance of a system increases with the addition of additional resources, but the definition also encounters difficulties here.
Anyone who has already replaced their CPU or RAM independently knows that the performance of software does not increase to the same extent as that of upgraded hardware. The addition of scaling factors makes it so clear that practical scalability is a difficult interaction. In addition, a distinction must be made between different forms of scalability in information technology.
Vertical and horizontal scalability simply explained
Scalability is the ability of software to grow with a larger, more powerful plant. Accordingly, the application should not simply continue to work despite improved hardware conditions, it should also work better. This change takes place in scalable software without changing a line of code.
The use of better hardware or the upgrade of a computer or node is called vertical scaling. When we speak of vertical scalability, we generally mean primarily upward scalability. In rare cases, however, there is also talk of downward scalability, in these cases the software continues to function, but with reduced performance.
Of course, software can never be scaled up or down at will. Rather, there are physical performance limits under which software cannot run at all and hardware whose functionality and speed the software cannot exploit – for example because it was not even designed at the time of release .
An example of this would be installing a ten year old application on a modern PC. This will run significantly better, but not improved by the factor by which the hardware is faster. Many factors play together here that make easy-to-calculate scalability impossible. Vertical scaling always reaches its limit when the currently fastest and best hardware is installed.
Horizontal scaling, on the other hand, relies on the stringing together of more computers and nodes and can theoretically be thought any further. The performance limit here is more on the software side, since the parallelization of software is not suitable for every type of application. An example of horizontal scalability is, for example, server farms or data centers.
The different types of scalability
- Load scalability:Load scalability is understood to mean a system that shows no delay either with very low or very high loads. The system behavior is described here as constant.
- Spatial scalability: The most relevant factor for the term spatial scalability is the acceptable increase in storage requirements. This should be done sub-linearly, which is usually done through higher compression or the use of a sparse matrix.
- However, this sub-linear increase in storage requirements comes at the expense of load scalability, since higher data compression rates also require more computing power and time.
- Temporal-spatial scalability:An example of temporal-spatial scalability can be found in the form of modern indexed search engines (such as Google). The increase in data does not lead to a linear increase in search time at Google because the sorting of the data allows the necessary scalability. As a result, high performance does not affect performance.
- Structural scalability:With structural scalability, the number of objects in a defined area can be increased without adversely affecting the system’s performance. So the system does not hinder high utilization.
The four forms of scalability cannot be viewed independently of one another, since different forms of scalability, depending on the implementation and system, can, but do not have to, interact with one another.
Understand scaling factors in terms of linear growth
The scaling factor was already mentioned above; this describes the actual increase in performance (speed up) when adding a power unit. A distinction is made here between super-linear, linear and sub-linear growth. This is illustrated by the addition of a processor core and the scaling performance of software.
- Linear growth:The scalability grows in line with the available resources, a second processor core increases the performance by 100 percent.
- Sub-linear growth:The scalability decreases with the resources, here a second processor core, for example, would only bring an additional 75 percent performance.
- Super-linear growth:The scalability increases with additional resources and is getting bigger and bigger, a second processor core could increase the performance by around 125 percent.
- Negative scalability:A special case in which the performance does not increase with more resources, but rather decreases. This can be the case in systems when the additional system resources cannot be used but system management has to manage them.
Scalability in the context of new hardware and software
For privately used software, scalability is usually an additional plus point. Many users assume that applications with a new graphics card perform better than before to a certain extent, but it nevertheless increases satisfaction with a product that performs as expected.
Scalable software is often much more decisive, however, at company level, where functionality must be guaranteed over many upgrades and software should remain operational and reactive even after several expansions of the company, the server capacities or the database .
However, software and hardware are not only scalable in interaction with one another, but contextual use (such as an update or change of the operating system) can have a lasting effect on performance.