Economics of AWS Application Hosting
With Amazon Web Services (AWS) quickly becoming the de facto standard in Infrastructure-as-a-Service (IaaS), many companies perceive migrating their infrastructure to Amazon as an option more viable than creating and supporting their own data centers. Charlie Oppenheimer starts his new blog entry by saying:
I’m a huge fan of cloud computing in general and AWS in particular. But I’ve long had an instinct that the economics of the choice between self-hosted and cloud provider had more texture to it than the patently attractive sounding "10 cents an hour," particularly as a function of demand distribution. As a case in point, Zynga has made it known that for economic reasons, they now use their own infrastructure for baseline loads and use Amazon for peaks and variable loads surrounding new game introductions.
In order to evaluate economics of AWS usage, Oppenheimer created a model that allows analyzing different load profiles for both bandwidth-heavy and compute-heavy loads and any combination of those. The model is flexible enough to calculate cost of operating 100% on AWS, 100% self-hosted or any hybrid mixes in between.
The model is based on a daily distribution of a typical Internet application and computes the number of instances required for each hour of the day. It applies as many AWS Reserved Instances (capacity contracts with lower variable costs) as justified and fills in with on-demand instances as required. Charges are computed according to the progressive pricing schedule that Amazon publishes.
Oppenheimer summarizes the results of his modeling as follows:
The key point here is that a comparison of the cost of cloud hosting versus self-hosting needs to be based on the profile of your load. It is not that Amazon (or any other provider) is more expensive than self-hosting, as this is often not the case. Rather, it depends on the profile of your load. Moreover, it’s not so important where exactly your breakeven point is but rather it is most important to know the main sensitivities (e.g. bandwidth cost, CPU load, storage, etc.) for your situation so that you can understand which differences could flip the decision.
Oppenheimer reaches a conclusion:
The intuitive conclusion that the more spiky the load, the better the economics of the AWS on-demand solution is confirmed. And similarly, the flatter or less variable the load distribution, the more self-hosting appears to make sense.
Oppenheimer’s post caused quite a reaction from many people. According to Amazon’s Jeff Barr:
These analyses are always tricky to do and you always need to make apples-to-apples cost comparisons and the benefits associated with each approach. We're always happy to work with those wanting to get in to the details of these analyses; we continue to focus on lowering infrastructure costs and we're far from being done.
He pointed out several additional features including Lower Costs in Other AWS Regions, High Utilization Reserved Instances, No Administrative Costs and others.
Economics of AWS usage is a serious topic which is rarely discusses based on facts, not pure emotions and beliefs. Nothing is ever black and white. Oppenheimer’s post is a great step in the right direction. A lot more work has to be done to objectively assess all possible usage scenarios to evaluate when and where it is appropriate to use AWS and when self hosting is a better option.
No change in cloud pricing
I think cloud becomes economical only if:
1. You have a heavy load which require multiple machines
2. Your usage pattern is spiky so that you can add and remove machine instances
3. You do not need to consume too much bandwidth to move data in and out of cloud
However, for cloud adoption, there are reasons other than cost saving.
Re: No change in cloud pricing
Anyways I think economics of cloud also depends on the location - for instance, getting infrastructure setup in India is probably a bit more expensive than depending on cloud providers considering the cost of bandwidth here. Also we need to account for time saved actually maintaining the server, and in case of PAAS providers, even updating the platform software.
One could easily argue that third-party hosting is a better option than cloud, but my own experience has been something like AWS has been much more reliable and simpler to use (plus it comes with small increments, so its cheaper to get started even if you want to use it just as VPS).