Earlier in my career, I thought that innovation was solely about technology. If you wanted to address a new market or to increase sales, writing more code was always a good option. Having gained some wisdom and experience over the years, I've finally figured out the obvious — that innovation can also take the form of a business model!
Since I first blogged about Amazon EC2 in the summer of 2006, developers and IT professionals have found all sorts of ways to put it to use. Many of those have been covered in this blog ; we've written a bunch of case studies about quite a few, and I've bookmarked many more on the AWS Buzz feed. As our customer's use cases have grown, we've done our best to listen to their feedback, adding such features as additional instances types, multiple availability zones, multiple geographic regions, persistent disk storage, support for Microsoft Windows, and control over IP addresses.
The well-known pay-as-you-go EC2 pricing model is very similar to what an economist would call an on-demand or spot market. There's no need make any up-front commitment; you simply pay for your processing an hour at a time. This model has served us well so far and it will continue to be a fundamental aspect of our strategy.
We've learned that some of our customers have needs which aren't addressed by the spot pricing model. For example, some of them were looking for even lower prices, and were willing to make a commitment ahead of time in order to achieve this. Also, quite a few customers actually told us something even more interesting: they were interested in using EC2 but needed to make sure that we would have a substantial number of instances available to them at any time in order for them to use EC2 in a DR (Disaster Recovery) scenario. In a scenario like this, you can't simply hope that your facility has sufficient capacity to accommodate your spot needs; you need to secure a firm resource commitment ahead of time.
Taking these requirements into account, we've created a new EC2 pricing model, which we call Reserved Instances. After you purchase such an instance for a one-time fee, you have the option to launch an EC2 instance of a certain instance type, in a particular availability zone, for a period of either 1 of 3 years. Your launch is guaranteed to succeed; there's no chance of encountering any transient limitations in EC2 capacity. You have no obligation to run the instances full time, so you'll pay even less if you choose to turn them off when you are not using them.
Steady-state usage costs, when computed on an hourly basis over the term of the reservation, are significantly lower than those for the on-demand model. For example, an on-demand EC2 Small instance costs 10 cents per hour. Here's the cost breakdown for a reserved instance (also check out the complete EC2 pricing info):
|Term||One-time Fee||Hourly Usage||Effective 24/7 Cost|
Every one of the EC2 instance types is available at a similar savings. We've preserved the flexibility of the on-demand model and have given you a new and more cost-effective way to use EC2. Think of the one-time fee as somewhat akin to acquiring hardware, and the hourly usage as similar to operating costs.
All of the launching, metering, and billing is fully integrated. Once you've purchased one or more reserved instances, the EC2 RunInstances call will draw upon your reserve before allocating on-demand capacity. This new feature is available for Linux and OpenSolaris instances in the US now, with the same support to follow in Europe in the near future.
We've added a number of new command-line (API) tools to support the Reserved Instances. Here's what they do:
- The ec2-describe-reserved-instance-offerings command lists the set of instance offerings that are available for purchase.
- The ec2-purchase-reserved-instances-offering command makes the actual purchase of one or more reserved instances.
- The ec2-describe-reserved-instances command displays a list of the instances that have been purchased.
Of course, all of this new functionality is fully programmable. We've added a number of new EC2 APIs:
- DescribeReservedInstancesOfferings returns a list of Reserved Instance offerings that are available for purchase. This call enumerates the inventory within a particular availability zone.
- PurchaseReservedInstancesOffering makes the actual purchase of a Reserved Instance within an availability zone. Up to 20 instances can be purchased with a single call, subject to availability and account limitations. This is like "buy a vowel" from Wheel of Fortune, but you get a server (much more useful) instead.
- DescribeReservedInstances - returns a list of the instances that have been purchased for the account.
We're planning to give the AWS Console full control over the Reserved Instances. I expect to see other tool vendors add support as well.
If you have any questions about the new Reserved Instances, check out the entries in in the newly revised EC2 FAQ.
I'm looking forward to receiving your feedback on this new and innovative business model for EC2. Please feel free to leave me a comment.