?

Log in

No account? Create an account
entries friends calendar profile My Website Previous Previous Next Next
Ideas for EC2 and EC2-like systems - Mark Atwood
fallenpegasus
fallenpegasus
Ideas for EC2 and EC2-like systems
I was thinking that EC2 should have a machine size smaller than their existing smallest one, that truly ran on an "as available" basis, e.g. if the EC2 infrastructure is full up running these "smallest" size instances, and someone starts one of the regular sized instances, enough "smallest" ones will be summarily terminated to make room.

Then I started thinking about the fleet model for such images. The best way would be for me to tell EC2 the max number of these smallest instances I want, and it would constantly try to have that many running, constantly starting new ones as space becomes available. The current EC2 API starts your fleet up all at once, and if you later want more, you have to explicitly ask for more.

Then I started thinking about how Amazon should charge for these things. The simplest way would be to pick some flat per-hour rate, just like their other instances sizes.

But then I realized that the better way would be to do it as a continuous dutch auction. I would specify the most per instance-hour I was willing to pay, and EC2 works out the lowest price across the entire universe of currently outstanding bids that will completely fill the capacity available for these things. As more people come into the system and bid for capacity, my instance-hour price I am paying can rise or fall based on everyone else's bids, and I could have my instances shut down if the current market clearing price rises higher than my set max bid.


There is competition to EC2 coming online soon. Eventually, someone is going to try this charging model.

If I was to build an EC2-like system, it's the charging model I would use. It would most perfectly capture and monetize my value to my users, giving me the largest possible income for the value I am providing, which I can use to build more capacity. It would also give me a much better and smoother signal to how much my users like my system, other than "there is more capacity than is being used, I overbuilt" or "I'm oversubscribed, and at 100% utilization, I need to build out more".

Plus it would make money during off-peak time.
5 comments or Leave a comment
Comments
loganb From: loganb Date: May 30th, 2008 06:37 pm (UTC) (Link)
Have you heard of Location Based Marginal Pricing? You may find it an interesting corollary in another industry to what you propose. It's how many of the power grids in this country balance supply and demand (but sadly not in the Pacific Northwest). Basically, every 5 minutes power plants submit bids for power they're willing to produce, customers submit bids for power they're willing to consume, and an Independent System Operator (ISO) resolves the bids and sets the clearing price. (More detailed explanation: http://www.nyiso.com/public/webdocs/services/market_training/workshops_courses/marketplace_overview/lbmp_mktplc.pdf) It is very similar in design to the dutch auction model you describe for EC2.

Because the market for electricity is relatively inelastic, the price varies wildly (and is sometimes even negative!). Traditional heavy industries already practice "demand response" (i.e. reducing consumption when prices are high) as a way to cut energy costs and I thought it would be neat to extend that concept to the data center. The problem, though, is how many compute services have elastic demand?

The value a website derives from being up and responsive still significantly outweighs the cost to
run the servers, so most customers will demand compute instances (almost) regardless of price. Also, if I'm a customer and my load is completely inelastic, I have little to no incentive to be on a variable pricing schedule since it exposes me to considerable risk. Perhaps there are other large compute-intensive customers who do have elastic demand?
fallenpegasus From: fallenpegasus Date: May 30th, 2008 11:51 pm (UTC) (Link)
I think there are a lot of applications that have elastic demand that are not being built right now because there is no good source of smoothly elastic demand priced computation.

"Build it and they will come" applies to economic structures as well as for physical ones.

There are currently a number of elastic demand computation processes being done in EC2 already, just that the users are required to control their consumption and demand manually, its course and choppy, and there is an economic brick wall at 30c/hr.
awfief From: awfief Date: May 30th, 2008 09:03 pm (UTC) (Link)
Except that I can see a web 2.0 site that wants to be up given a certain amount of traffic. For instance, let's say I run mysocialnet.com or whatever, I'm willing to pay one price when there are fewer than 1k people online, but I'll pay almost anything when 50k people are online during my peak time.

Plus then you could basically spend enough money to put your competition out of business. Just routinely fill capacity to ensure that only the high bidders are allowed online.

This is Google's AdWords model, but that works because there's only one product -- you can argue that this works for any limited commodity, but you're talking about turning *off* someone's computational power.

I think people could pay for different tiers -- say "this is the max-per-hour I'm willing to pay for super-fast, this is the max-per-hour I'm willing to pay for fast..." and if capacity is filling, anyone who doesn't have the rate gets moved to "slow". More like "nice"ing the process, instead of killing it completely.
fallenpegasus From: fallenpegasus Date: May 31st, 2008 12:03 am (UTC) (Link)
It's not really the adwords model, because in adwords, you cant bid on all of Google's advertising display capacity, you can only bid on individual keywords. Each keyword is effectively a single very specialized very small very thinly traded market, and because of the small size of that market, its possible for a small payer to be outbid out of it by a big player.

This is almost completely the opposite situation, market-making-wise. The market much more generic (computation instead of a single specific word), and much deeper.

Plus, this is a dutch auction, not a regular auction. The price is not the most that the richest guy is willing to pay, or even slightly more than the most that the second richest guy is willing to pay (the eBay model).

It's instead the highest amount that everyone that can fit in the market is willing to pay. This is the model that Google used for their IPO, and the model that Rackspace is using for theirs. It's worth reading up about.

It would still be possible for someone super super rich to buy up ALL the capacity, but he would need to be using all that capacity to be generating more value than it's costing them, or else very quickly, he wont be rich, and the capacity provider will have all his money, which they can then use to expand their computation grid, which will lower the price and expand the capacity.

There isn't really a fixed amount of computronium in the world, this isn't a zero sum game It's very easy to turn dollars and euros into more computronium, and if i was the grid provider, I would be spending a significant amount of my income on expantion.

As long as *anyone* bids into the auction, for more than the equipment capital and power cost of running their jobs, and yet doesn't get any cycles, because someone richer has outbid them, that signals to me, the grid operator, that it will be worth investing in more grid.
awfief From: awfief Date: May 31st, 2008 04:27 pm (UTC) (Link)
As long as *anyone* bids into the auction, for more than the equipment capital and power cost of running their jobs, and yet doesn't get any cycles, because someone richer has outbid them, that signals to me, the grid operator, that it will be worth investing in more grid.

Yeah, this is the scenario I'm worried about.
5 comments or Leave a comment