What is Scalable System in Distributed System?
The Scalable System in Distributed System refers to the system in which there is a possibility of extending the system as the number of users and resources grows with time.
- The system should be enough capable to handle the load that the system and application software need not change when the scale of the system increases.
- To exemplify, with the increasing number of users and workstations the frequency of file access is likely to increase in a distributed system. So, there must be some possibility to add more servers to avoid any issue in file accessing handling.
- Scalability is generally considered concerning hardware and software. In hardware, scalability refers to the ability to change workloads by altering hardware resources such as processors, memory, and hard disc space. Software scalability refers to the capacity to adapt to changing workloads by altering the scheduling mechanism and parallelism level.
Need for Scalability Framework:
The scalability framework is required for the applications as it refers to a software system’s ability to scale up in some way when and where required because of the changing demands of the system like increasing users or workload, etc.
Examples include Spring Framework, JavaServer Faces(JSF), Struts, Play!, and Google Web Toolkit (GWT).
How to Measure Scalability:
We can measure Scalability in terms of developing and testing the foundation of a scalable system. However, precisely measuring a system’s scalability is difficult due to scalable systems’ vast and diverse environment. The general metric method in this process is to analyze system performance improvements by loading various system resources and system loads. The system has the best scalability when the workload and computing resources are increased or lowered by a factor of K at the same time while the average response time of the system or application remains unchanged.
Measures of Scalability:
- Size Scalability
- Geographical Scalability
- Administrative Scalability
1. Size Scalability: There will be an increase in the size of the system whenever users and resources grow but it should not be carried out at the cost of performance and efficiency of the system. The system must respond to the user in the same manner as it was responding before scaling the system.
2. Geographical Scalability: Geographical scalability refers to the addition of new nodes in a physical space that should not affect the communication time between the nodes.
3. Administrative Scalability: In Administrative Scalability, significant management of the new nodes which are being added to the system should not be required. To exemplify, if there are multiple administrators in the system, the system is shared with others while in use by one of them.
Types of Scalability:
1. Horizontal Scalability: Horizontal Scalability implies the addition of new servers to the existing set of resources in the system. The major benefit lies in the scaling of the system dynamically. For example, Cassandra and MongoDB. Horizontal scaling is done in them by adding more machines. Furthermore, the load balancer is employed for distributing the load on the available servers which increases overall performance.
2. Vertical Scalability: Vertical Scalability refers to the addition of more power to the existing pool of resources like servers. For example, MySQL. Here, scaling is carried out by switching from smaller to bigger machines.
Why prefer Horizontal Scalability?
Vertical scaling must opt for low-scale applications as there is a constraint of adding unlimited CPU, RAM, and storage to a single server. But in Horizontal Scaling, no such constraint exists. The number of machines or resources can be increased to handle the load.