What use is of a technology if it is not utilized properly? We are discussing the technology of the era, Cloud computing. As defined by Amazon Web Services, “Cloud computing is the on-demand delivery of compute power, database storage, applications, and other IT resources through a cloud services platform via the Internet with pay-as-you-go pricing”.
Say, your company decides to leverage the benefits of the cloud for one of your application and deploys it in an AWS EC2 instance in an Availability Zone (think data center). What happens when the traffic for your site spikes suddenly? What happens when there is no web traffic? Is it possible to handle planned high incoming traffic without downtime for your application? Is it possible to do all the above without human intervention? If a high performing instance is chosen in the first place, it may handle heavy incoming traffic but what if there is not so much traffic as expected, you will be paying for idle resources. If a medium or small sized instance is used, it will not handle heavy traffic and can create dissatisfied clients which means losing business.
Even though after you have chosen a cloud services provider such as AWS, you are still facing the demerits of hosting your application in a traditional data center with physical hardware. This is due to not utilizing the underlying platform fully, in this case the application is not allowed to scale based on demand/traffic. How do you maximize the benefits of hosting your application in the cloud?
This is where Auto Scaling comes into play. With Auto Scaling, you will always have the correct number of instances so that your application handles incoming traffic with ease. The application must be stateless to be deployed using Auto Scaling. Stateless is a design principle where the user’s session or any data is not maintained by the server in which the application is hosted.
Benefits of Auto Scaling:
With Auto Scaling in your application architecture your application has better fault tolerance, auto scaling does this by terminating unhealthy instances and launching new instances to replace it. You can deploy instances in multiple Availability zones so that failure of an entire Availability zone does not affect your application availability. Auto Scaling saves you money by adjusting the number of instances dynamically based on demand. Auto Scaling does not come with additional costs, you will be only paying for the resources that you use such as EC2 instances.
We will discuss in detail the steps involved in setting up your application using Auto Scaling in another article.