Amazon EC2 Auto Scaling helps you maintain application availability and allows you to dynamically scale your Amazon EC2 capacity up or down automatically according to conditions you define.
Amazon EC2 Auto Scaling helps you maintain application availability and allows you to dynamically scale your Amazon EC2 capacity up or down automatically according to conditions you define.
Customer Reviews
Administrator in Marketing and Advertising
Advanced user of Amazon EC2 Auto ScalingOnce you have an application that is working, a few more clicks can allow you to scale up and down according to load, optimizing your costs and providing a great user experience. The easiest way is creating an AMI off the existing instance that provides your service and then configure the corresponding AutoScaling Group to use it to launch new instances when specific metrics are reached or remove instance when they drop below specific thresholds. And that is just the beginning, you can continue to optimize for both performance and costs the more you learn about this service.
If you are just starting, there are a lot of caveats as to how to best implement proper autoscaling with what you already have. You need to be very careful with stateful services/requests and your architecture needs to allow for servers to appear and disappear. You will also need to review your deployment processes to make sure that all your instances are running the same code or instrument more complex workflows to update AMIs or configure instance as they are created (using Puppet/Chef/Ansible)
Don't try to take advantage of all its features and integrations at the same time. Implement some basic usage first and then iterate on that to add more and more functionality as you test and confirm that everything is working as you expect. You also need to make sure that you document and - as much as possible - automate your setup, so that it is reproducible in case you need to start over or need to make a very invasive change. You can always create a completely new AutoScaling Group that is independent from what you currently have, test whatever change you want there and still integrate it with your existing AutoScaling Groups as you see fit.
You can accommodate your infrastructure according to expected/measured load on your service. There is no need to have a lot of servers running idle "just in case" you have a spike of traffic. And once you have a basic setup that works, you can continue to refine it and tailor it to your service and use case. There are a lot of other AWS services that can integrate with AutoScaling to take your infrastructure to the next level: Spot Instances, Fleets for mixed instances, CloudWatch alarms, etc.