Subscribe by Email

Tuesday, November 15, 2011

What does Scalability in software applications mean ?

Scalability can be defined as the ability of a software application, network, process or program to effectively and gracefully handle the increasing workload and carry the specified tasks properly. Throughput gives the best example for this ability of a software application. Scalability as such is very difficult to define. Therefore, it is defined based on some dimensions. Scalability definition and handling is very much needed in communication areas (like in a network), in software applications, in handling large databases and it is also an important concept in routers and networking. Software applications and systems having the property of scalability are called scalable and they improve throughput tremendously after addition of new hardware devices of need in and in proportional to the workload. Such systems are known as scalable systems.
Similarly if a design, network, systems protocol, program or algorithm is suitable and efficient enough and works well when applied to greater conditions and problems in which either the input data is in large amount or the problem or situation has got several nodes, then it is more scalable. If, while increasing the quantity of input data the program fails, the program is not said to scale. Scalability is much needed in the field of information technology. Scalability can be measured in various dimensions. The dimensions in which scalability can be measured effectively are discussed in detail below:
1. Functional scalability: in this measurable dimension new functionalities are added to the software application or the program to enhance and improve its overall working.
2. Geographic scalability: this measurable dimension deals with the ability of the software application or the program to maintain its performance and throughput, and usefulness irrespective of distributing of working nodes in some geographical pattern.
3. Administrative scalability: this measurable dimension deals with the increment of working nodes in application software, so that a single difficult task is divided among smaller units making it much easier to accomplish.
4. Load scalability: this measurable dimension can be defined as the ability of a divided program to divide further and unite again to take light and heavy workload accordingly. In other words, the program can change itself according to the changing load.
There are numerous examples present for scalability today. Some are listed below:
1. Routing table of the routing protocol which increases in size with respect to the increase in network.
2. DBMS (data base management system) is also scalable in the sense that more data can be uploaded to it by adding new required devices.
3. Online transaction processing system can also be stated as scalable because one can upgrade it and more transactions can be done easily.
4. P2P or peer to peer transfer protocols are scalable. Load on each peer increases in proportion to number of peers available and thus dividing the work. Best example of such kind of system is bit torrent system.
5. Domain name system is a distributed system and it works efficiently even when the hosting is World Wide Web. It is largely scalable.
Scaling or addition of resources is done basically in two ways. These two ways have been listed below:
1. Scale out or scale horizontally: this method of scaling involves addition of more nodes or work stations to an already divided or distributed software application. This method has led to the development of technologies like batch processing management and remote maintenance which were not available before the advent of this technology.
2. Scale up or scale vertically: scaling up or scaling vertically can be defined as the addition of resources to any single node of the system. The resources can either be CPUs or memory. This method of scaling has led to the improvement of virtualization technology.

Amazon: Book on scalability

No comments:

Facebook activity