Published on

Elasticity vs Scalability vs Agility vs High Availability vs Fault Tolerance vs Disaster Recovery

Authors

SCALABILITY

  • Manual increasing/decreasing resources to meet the predictable workload.
  • Scalability is long-term planning and adopted just to deal with an expected increase/decrease in demand.

VERTICAL SCALING -  

Scaling-Up:  

  • Adding more compute power (CPU or RAM) to support the increased workload.

 

Scaling-Down:

  • Reducing Compute Power (CPU or RAM) to support the decreased workload.

 

HORIZONTAL SCALING-

 

Scaling-In:  

  • Adding Virtual Machines(VMs) to support the increased workload.

 

Scaling-Out:

  • Reducing Virtual Machines(VMs) to support the decreased workload

ELASTICITY 

  • Ability to automatically acquire resources as you need them and release resources when you no longer need them. (AUTO-SCALING)
  • Helpful when the resource requirements fluctuate up and down suddenly for a specific time interval.
  • Most cloud service providers, provide elasticity.
  • It is not practical to use where persistence resource infrastructure is required to handle the heavy workload.

Example of Elasticity:

  • Consider an online video site on an IaaS cloud service provider like AWS, Azure, etc.

  • Generally, the website is unpopular and a single machine is sufficient to serve all web users.

  • As a video on the website went viral, it suddenly becomes popular. Now due to flash crowds, a single machine is no longer sufficient to serve all users.

  • Based on the number of web users simultaneously accessing the website and the resource requirements of the web server, it might be that ten machines are needed. An elastic system should immediately detect this condition and provision nine additional machines from the cloud, so as to serve all web users responsively.

  • But after some time, the website becomes unpopular again. The ten machines that are currently allocated to the website are mostly idle and a single machine would be sufficient to serve the few users who are accessing the website. An elastic system should immediately detect this condition and remove nine machines and release them to the cloud.

DIFFERENCE BETWEEN ELASTICITY AND SCALABILITY

The distinction between scalability and elasticity is that the latter is always done automatically to meet sudden bursts in capacity demand, while the former addresses more predictable and even planned demand and workload requirements.

AGILITY:

  • Speed and flexibility in allocation and deallocation of required resources. 
  • Ability to the deployment of required resources and services in minutes without manual administration of provisioning or de-provisioning processes.

Example of Agility:

  • In the cloud, it takes a minute or two to create a Virtual Machine(VM) that is up and running.
  • On the other hand, it takes days or weeks when we submit a request to purchase a physical server, and by when it gets delivered & time is also required to physically set up the server.

HIGH AVAILABILITY(HA):

  • Ability to keep resources and services functioning for long periods of time with very little (planned or unplanned) downtime.
  • Cloud service providers typically offer a service level agreement (SLA) that guarantees HA or uptime of resources and services as a percentage.
  • Availability = uptime/(uptime + downtime) = Uptime/Lifetime

FAULT TOLERANCE:

  • Ability to maintain system uptime while physical and service component failures happen.

Example of Fault Tolerance:

  • For example, if you have an application hosted on a VM or any other compute service, we want that it should always remain up and running even if underlying server hardware fails.

  • A fault-tolerant system will be able to manage to quickly shift to another copy of the server whenever any failure is identified.

  • For example, if a virtual machine (VM) in Azure fails due to a hardware failure on the physical host, the Fabric Controller moves that VM to another physical node based on the same hard disk stored in Azure storage. Azure is similarly capable of coordinating upgrades and updates in such a way as to avoid service downtime. So, Azure is fault-tolerant.

DISASTER RECOVERY:

  • Ability to restore cloud services in wake of catastrophic loss(natural or human-induced disasters).