Automating the management of Amazon EC2 using Amazon CloudWatch, Auto Scaling and Elastic Load Balancing
The Amazon Elastic Compute Cloud (Amazon EC2) embodies much of what makes infrastructure as a service such a powerful technology; it enables our customers to build secure, fault-tolerant applications that can scale up and down with demand, at low cost. Core in achieving these levels of efficiency and fault-tolerance is the ability to acquire and release compute resources in a matter of minutes, and in different Availability Zones.
Of course the best way to achieve efficiency and fault-tolerance while maintaining good performance is to fully automate the management of the Amazon EC2 Instances, such that you can optimize the use of the compute resources in different scenarios. Higher levels of automation allow your applications to quickly respond to changes in usage patterns and failure events in a pre-determined manner.
At Amazon we have tremendous experience with building our applications this way; we make sure that customers are getting consistent performance, even if whole datacenters are failing. To facilitate this we have built unique infrastructure technologies that help our engineers automate the scalability and fault-tolerance of the Amazon ecommerce platform. Core in those technologies is the ability to monitor and measure every possible resource and activity in real-time, and to automate new capacity deployment and the management of services and applications based on the information that flows through the monitoring system.
With the launch of Amazon CloudWatch, Auto Scaling and Amazon Elastic Load Balancing we are now making these unique technologies available to our Amazon Web Services customers. These features will help our customers to monitor their Amazon EC2 Instances, automatically scale them up and down based on the monitoring data, and to efficiently distribute requests to their applications over the different instances even if they are running in different Availability Zones.
These new infrastructure services consist of 3 core parts:
- Amazon CloudWatch enables you to monitor Amazon EC2 Instances and Elastic Load Balancers in real-time. It will aggregate and report on metrics such as CPU utilization, data transfer and disk usage, as well as requests rates and request latency.
- Auto Scaling allows you to automatically acquire and release Amazon EC2 Instances based on the metrics reported through Amazon CloudWatch. You can define the conditions under which this should happen and when these conditions are met, Auto Scaling will automatically add or remove compute resources.
- Amazon Elastic Load Balancing will distribute incoming application traffic over your Amazon EC2 instances that are running in a single or multiple Availability zones. It can detect the health of Amazon EC2 instances and will stop routing traffic to unhealthy instances until they have recovered and become healthy again.
These services will be of great value to Amazon Web Services customers to simplify the management of their applications and services. With the introduction of these services it will become even easier to optimize performance and fault-tolerance at low-cost.
You can find more information at the detail pages for Amazon CloudWatch, Auto Scaling and Elastic Load Balancing.
Also check out the blog post at the AWS developer weblog with more examples and details, the Rightscale blog with their experiences and my blog post in october 2008 for more background.