Horizontal vs Vertical scaling – Azure Autoscaling

Scale up Vs. Scale Out

What is Auto-Scaling?

Auto-Scaling is a way to automatically scale-up / Scale-out the number of resources size or instance count that are being allocated to application / server. In past years it was very difficult to manage scaling your application / server. Now a day with Cloud computing it’s become very easy to automatically as per requirement it will get scale up / out or vice versa. In on-premises environment when you decide to do scale-up your server you require long down time, man power, hardware, security, cost etc. which involves many hours / days process.

Why Auto-scaling?

As you know any process which don’t require any manual activity or users interfere.  which don’t depend on any person activity. Is called Automation. Now a day every field in this world trying to go with Automation process. Like Automation in Banking services, Testing services, Hotel Management, Security etc. Automation basically saves your time, cost, manpower, effort and other lots of things.

Suppose you have your own shopping portal like E-Commerce website. Where you are selling your and other providers multiple products. End users search products -> add cart -> Payment -> delivery. This is simple process flow of this website. Now suppose next week is Christmas and you got to know this coming weekend you will have lots of customer on your website. Your current on premises server isn’t capable to handle all huge no. of request same time. You know it will get crash after certain time. Now You want to scale up your application. What you will do here? Just think? Here auto-scaling comes in pictures.

 There two type / workflow of Scaling:

  • Scale Up (Vertical Scaling)

Make it bigger. Its means Get More size of CPU, Memory, Disk space etc. You scale up by changing the pricing tier of the App Service plan that your app belongs to.  Ex: Increase the RAM size from 2 TB to 10 TB.

  • Scale out (Horizontal Scaling)

Add more Instances. It’s like upgrading the capacity of the app / server by creating/ adding more instances of same size. Using Load balancer, you can manage all request coming from end users. Suppose your Sever has 10 GB RAM, 200 TB HDD space, 10 core etc. so while scaling out this server you will create more instances of servers with same configuration.

Horizontal scaling Vs.  Vertical Scaling

Here are few points which are important when we think about going with Horizontal scaling or Vertical Scaling.

  • Scaling up require down time, in this case you need to upgrade server’s configuration like RAM, memory, CPU etc. so while upgrading this configuration your server require downtime. Once you are done with update, restart of server is required.
  • Scaling up will Increase performance but not availability, because its only one instance if it can go down anytime.
  • Scale Out not require down time, in Scale out its crates new instances of server it don’t touch to existing instance so no downtime require.  
  • Scale Out, Increase performance and availability as well. When you increase no of instances and handle load / request using load balancer it’s increase performance of server but also increase availability as well.

Important points to remember:

  1. Not all workloads will benefit from bigger instances. Scaling up will not work for specific type of work loads.
  2. Multiple smaller instances may operate at a higher performance than a single instance on the same total resource.
  3. Multiple instances increase resiliency for planned and unplanned events.
  4. In the cloud scale-out is the preferred approach but where required very large instances are available.