The cloud’s biggest promise is elasticity: running with just the amount of computing resources your workload demands at any given time. Of course, services like SimpleDB, SQS, and CloudFront scale automatically. But for some applications, you need to be able to dynamically scale EC2 capacity, or instances. And that is what Auto Scaling does. It allows you to define conditions for increasing or decreasing the number of instances.
According to AWS, “Auto Scaling is particularly well suited for applications that experience hourly, daily, or weekly variability in usage.” This is exactly what we need for Kulitzer. At peak hours, we want to increase our capacity to handle the load, and when it’s not so busy, we want to run idle.
You can also use Auto Scaling to make your application more resilient. Say you use Auto Scaling to monitor one instance; if the instance dies, Auto Scaling can launch a new one automatically. This same technique can be applied to multiple instances distributed over different availability zones. We basically apply elasticity in case of failure, automatically resizing the group to its required size.
Auto Scaling is designed to work on its own, but can be easily integrated with an ELB. You can’t use metrics of the load balancer as conditions for scaling. But it is convenient that the autoscaling group handles registration of instances with the load balancer.
Usually, it takes several minutes for an instance to launch and provision itself. Because demand ...