I started writing this post, but realized that it was going to be way too long. So I decided to split it into a series. Here goes part 1 of my series on Pricing in the Cloud.
Happy Birthday, Amazon EC2! You are 4 years old now - I wonder how many that would be in human years. In the blog post commemorating this milestone, Jeff Barr linked to a “really interesting developer position” open at EC2 right now. I clicked the link - looks like they are searching for someone to work on pricing models. This is indeed quite an exciting job opportunity, at the very intersection of my interests, but since I am not applying, I figured I may offer some thoughts on the subject here.
Since the very beginning of EC2, pricing was an important necessary condition of a successful IaaS cloud. Billing by the hour, instead of by month as was the standard in VPS land (which EC2 successfully disrupted), enabled a whole new set of workloads - such as now famous TIFF conversion by the New York Times or Animoto scale up event. Neither would make sense with monthly billing - and while importance of APIs in IaaS is well known, the role played by pricing is often not as obvious. It’s easier for technologists to focus on features, but not paying attention to pricing is a mistake - my former colleague Alexis Richardson was among the first to note (back in 2008), ”Virtualization is the technology, but cloud is a business model."
IaaS cloud is an excludable non-rivalous good. Excludable because one doesn’t get access without paying. Non-rivalous because its use by one customer does not usually prevent other customers from using it. From this perspective, the business of selling cloud is similar to selling tickets to fill a movie theater or selling seats to fill an airplane.
An individual instance slot (an airplane seat’s equivalent) is a persishable resource - if it’s not filled for a period of time, potential revenues it could have delivered during this time are lost forever. The discipline that studies pricing of perishable resources is called yield management (or revenue management) - a super interesting field which includes elements from economics, statistics, mathematics and psychology. Quoting from Wikipedia: "The challenge is to sell the right resources to the right customer at the right time for the right price."
Lessons from the Airlines
I once watched a documentary on CNBC called ”Inside American Airlines.” If I remember correctly, they would show an airplane full of passengers and say something like no two people on this plane paid the same price for their travel. Think about it - it’s fascinating: hundred people, nearly same seats, all paid different prices. This is a key insight to revenue management in the cloud - how to get each customer to pay the maximum they are willing to pay. The solution, based on years of experience of the airline industry, is to have a gazillion of pricing schemes and options selling from the same pool of nearly identical seats. How do they do it? You could buy a ticket from the airline’s web site, or from airline agent, or from a travel agent, or from a non-airline travel web site (such as orbitz.com where I used to work). You could buy a multi-segment itinerary, or you could buy each segment as a separate ticket (a segment is one take-off and one landing). You could buy in advance, or you could buy just a couple of hours before take off. You could buy with an option to cancel for refund, or you can buy a non-refundable ticket. And so on and so forth - the list of pricing options will keep growing and growing.
A given combination of options defines a product. Even though you may think you are buying a right to occupy a seat, in reality you are buying a product. Each product is designed to meet a specific need and compete for a specific type of customer - such as, for example, provide transportation to a family going on Hawaii vacation or accommodate busy schedule of a businessman willing to pay the first class fare at the last minute. The more products are offered, the more different kinds of needs an airline could satisfy, all from the same pool of seats!
Revenue Management in the Cloud
It’s not difficult to see that AWS have already started on this path (and sooner or later, other cloud providers will catch up and start doing the same). In the cloud, the more pricing models are offered, the more types of workloads will find their way into the cloud. Therefore, if I had to guess what kind of pricing they will unveil next, I simply have to look at what kind of workloads don’t yet fit into any pricing schemes today (more on that in future posts).
AWS initially launched EC2 with on-demand pricing for a single instance type (m1.small). Over time they increased the number of instance types - so that more CPU intensive workloads could run in the cloud. Then they offered reserved instances - so that log running workloads could find their way into the cloud.
But spare capacity still remained (I assume) - and so spot instances were introduced. In exchange for a very attractive price, they secured a right to terminate an instance - thus allowing more short-lived workloads to run in the cloud. And it’s an instant win-win for customers and cloud provider. If I can identify my workload as such that fits a spot instance (I do nearly all of my testing and some development at work on spot instances), I free up slots for on-demand instances, which EC2 happily sells to others - thus increasing the number of customers that they can support with fixed capacity and reducing the overall number of insufficient capacity errors.
This is price targeting at its best. For more on price targeting techniques, please read Tim Harford’s “The Undercover Economist” or see this blog post.
To sum up:
- attractive pricing is a necessary condition of IaaS
- pricing is often overlooked by technologists who naturally focus on features
- selling cloud resources is similar to airline selling seats on planes
- the more pricing schemes are offered, the more different classes of workloads can optimally run in the cloud
- sooner or later, I predict that other IaaS clouds will follow AWS lead and will start offering different pricing schemes