The scalability meaning in dictionary states that, ability of system to expand to cope with increased use.
Scalability Definition -
In computer terminology it is referred as, the ability of a system to handle growing amount of work without degrading its performance.
Scalability of a system or application always depends on Hardware and software component that forms a complete system or application. For an application to be scalable first it should support distributed architecture.
The distributed application means complete application spans across multiple computers in a network and they work in conjunction by passing messages to each other. You application is based on distributable architecture means complete application can be deployed on many servers or computers and still it works well without any failure and malfunction. If your application is distributable then it can be scalable as well.
For achieving scalability Hardware Virtualization is always preferred. To understand hardware virtualization process in terms of cloud computing click on following link -
Vertical Scalability – Scale up –
Vertical scalability is also known as scale up.
To understand scale up, consider an example that, you have computer or laptop at home with RAM of 2GB and no graphics card. Now you wish to play the high graphics game on this computer. However you cannot play and install it as game requirement states the requirement as RAM should be minimum 8GB and Graphics card is mandatory. In such situation you increase RAM size and installs graphics card in your computer. This is nothing but scale up or vertical scaling.
Increasing the existing capacity of hardware by adding resources to computer is called as scale up. So in a way you add more processing power by increasing the capacity of a computer.
Pictorial presentation is as follows –
- Vertical scaling has limit on increasing the capacity.
- Scale up cannot go beyond a certain limit as it is practically impossible to increase the capacity indefinitely
- It is expensive.Therefore to overcome on these problems hardware virtualization became popular.
Horizontal Scaling – Scale out –
Horizontal scaling is also known as scale out.
Horizontal scaling or scale out refers to the addition of computers to the existing system.
For example, instead of increasing the capacity of same machine, have 2 machines of similar configurations doing the same work.
Pictorial representation is as follows –Advantages –
- You are not limited with the resource availability limitations as you can have any number of same configuration computers or servers to perform the job.
- You avoid the Single Point of Failure possibility of the system when you have more than one server used for deploying the same application.
- Single point of failure means - a part of the system; if it fails then whole system cannot function. This is avoided as you are not dependent on one of the server or computer and you have distributed the application across many. Hence you get High Availability for your application and zero downtime during hardware failures.
It is always recommended to use Scale out instead of Scale up approach.
Scalability is widely used these days in cloud computing hosted applications. One of the examples is Microsoft Windows Azure services. All of the services of Microsoft azure internally implements Scale Out architecture to provide scalability for your application.
Scalability can be configured on various metrics and rules. You can have scalability configured based on Scheduled times or you can have scalability configured based on CPU usage %.
For example these strategies are implemented by Microsoft Azure to configure scale out or scale down operation as shown below –
This screenshot depicts is how you can configure scalability in one of the cloud provider company that is Microsoft Azure.
Hope this helps in understanding Scalability concept.