Monday, December 14, 2009

Spot on, Amazon Commoditizes The Cloud

The consensus found in the more traditional areas of commerce is the longer your products are sitting in your warehouses the less money you're making off them. (This is also known as carrying costs) Over the years retail focused companies such as Walmart and Amazon have strived to keep these carrying costs to a minimum by implementing various just-in-time (JIT) inventory strategies. (A technique that was first used by Henry Ford at the Ford Motor Company in the early 20th century).

The philosophy of JIT is simple: inventory is waste. The idea behind a JIT strategy is to improve a business's return on investment by reducing the associated carrying costs associated with under utilized assets, this could be a toaster sitting in a warehouse or a hosting company's unused server. The Data Center business is in a lot of ways is very similar, the more unused rack space the less you are making. Cloud centric data centers make this problem even worse, not only do you need to have excess data center space, you now need to have physical hardware in place, just in case your demand spikes. For a lot of larger players this means un-utilized compute capacity is making you nothing.

The folks at Amazon Web Services have come up with a very interesting approach to solve the problem of DC carrying costs by implementing a spot pricing scheme for unused EC2 instances. In case you're not familiar with the concept, wikipedia describes the spot price of a commodity as the price that is quoted for immediate (spot) settlement (payment and delivery). In securities, the term cash price is more often used.

The new service is called Spot Instances and allows you to bid for one or more EC2 instances at the price you are willing to pay and more importantly the minimum price AWS is willing to accept. The Spot Instance request consists of a number of parameters including the maximum bid that you are willing to pay per hour, the EC2 Region where you need the instances, the number and type of instances you want to run, and the AMI that you want to launch if your bid is successful. It's a kind of cross between an arbitrage, auction and on demand web service.

The concept of spot pricing does have some challenges. Depending on the item being traded, spot prices can indicate market expectations of future price movements in different ways. For a security or non-perishable commodity (e.g., gold, Compute Capacity), the spot price reflects market expectations of future price movements. It will cost more in December because there is more demand, then it will in July, so you buy at July prices and Sell it in December. In theory, the difference in spot and forward prices should be equal to the finance charges, plus any earnings due to the holder of the security, according to the cost of carry model. In finance this is known as arbitrage -- the practice of taking advantage of a price differential between two or more markets: striking a combination of matching deals that capitalize upon the imbalance, the profit being the difference between the market prices. It's complicated, let's just say this is how Enron made it's money.

This new spot pricing approach may open the door to EC2 capacity squatters who buy up all the excess compute capacity and in turn sell it to at a higher cost, but still lower then the market cost for a traditional EC2 instance. This would be a practical approach for the costly larger instance types.

The potential for misuse does seem to be something Amazon has already put some thought into saying in a recent blog post. "As requests come in and unused capacity becomes available, we'll evaluate the open bids for each Region and compute a new Spot Price for each instance type. After that we'll terminate any Spot Instances with bids below the Spot Price, and launch instances for requests with bids higher than or at the new Spot Price. The instances will be billed at the then-current Spot Price regardless of the actual bid, which can mean a substantial potential cost savings versus the bid amount." To me this says they will have a preference toward higher bids.

The post goes on to outline; "From an architectural point of view, because EC2 will terminate instances whose bid price becomes lower than the Spot Price, you'll want to regularly checkpoint work in progress. (Meaning you may lose your EC2 instances if a better rate comes along) Many types of work are suitable for this incremental, background processing model including web crawling, data analysis, and data transformation (e.g. media transcoding). It wouldn't make much sense to run a highly available application such as a web server or a database on a Spot Instance, though."

So what does Spot pricing mean to the IaaS world? For one, we may for the first time start to see compute capacity treated in the same way traditional commodities are with the emergence of an active secondary market for compute capacity. Very exciting times, lets just hope we don't see another Enron.

Check out the new EC2 spot instance service here >

#DigitalNibbles Podcast Sponsored by Intel

If you would like to be a guest on the show, please get in touch.