Comparing Public Cloud Pricing – Part 2

In Part 1 we talked about how public cloud pricing from different providers compares for a very simple sample configuration, and then we saw how that comparison changes when the storage requirement is increased.  We also talked about the importance of pressuring public IaaS providers to continue lowering prices and pass on the benefits of falling hardware costs to customers.  And we noted that reserved instances may be cheap enough to make them economical for large Windows shops, even when applications can’t automatically release instances to lower the time billed for to less than 100%.

This time I’m going to go into more detail on the providers’ offerings so that you get a real sense of what’s involved in doing a comparison.  If you look at the configuration table provided last time, you’ll see some significant differences, including the fact that the compute instances aren’t the same across all four providers. For example, for Google to meet the requirements we had to use instances with significantly more RAM.  So what would happen if, say, we increased the memory requirement to 8 GBs on the small instances and 12 GBs on the bigger ones?  Have a look:

picture-3
Figure 3

That’s a huge difference compared to Figure 1 (the first chart from Part 1)!

  • The Google price curve hasn’t moved because the configuration we priced the first time already had enough RAM to meet the new requirement.
  • The Amazon price curve shifted upward because we had to use larger compute instances (t2.large and c3.2xlarge instead of t2.medium and c3.xlarge).
  • Azure pricing shifted up for the same reason, but not as far as Amazon’s did, since going to D2 and D3 from A2 and A3 instances had a smaller impact.
  • Now look at SoftLayer. When you configure the virtual servers from them you don’t pick a preset instance type.  You just tell them how many cores and how much RAM you want, so you can get the exact amount you need.  That resulted in a much smaller price shift than for Amazon or Google, and since we’re still using only 1000 GBs of storage here, the higher storage pricing isn’t having much of an impact.Just making a simple change to the memory requirement, often the critical resource when sizing compute instances, completely changed the pricing comparison!  Before, the lowest price for most usage levels was AWS.  With this new configuration it’s Google or SoftLayer, but you have to keep in mind that we had to over-provision slightly on AWS and Azure to meet the memory requirements.  And there’s more to consider – way more.
  1. SoftLayer’s monthly billing option gives you 250 GB per month of free outbound data transfer per virtual server. The other three are going to charge extra for that.
  2. Performance can and will vary from one provider to the next and possibly even from one data center to the next. You may need to spend more money on an underperforming solution to get it to meet your performance requirements.
  3. You’re going to want support, and the cost of that isn’t factored into our charts. Amazon and Google have similar pricing schedules for “Business” and “Gold” level support, depending on what your total monthly spend is, but Microsoft’s Professional Direct is a simple, flat $1000 per month (great if you’re paying for a lot of usage, not so hot if you only a couple instances) and SoftLayer’s support is “free” with your purchase.  For large accounts those may only represent differences of a few percent, but they do matter, and if you need higher levels of support you generally have to negotiate the price.
  4. Sometimes, as with AWS reserved instances, the provider publishes the volume discounts that apply, but often it’s negotiated, so those discounts aren’t factored into these results.
  5. Microsoft’s discounts on Azure for existing Windows customers can be substantial, and they aren’t factored in either. If you’re a big Microsoft customer you must find out what discounts you qualify for and, importantly, which prices they apply to and how long they last.  Microsoft can essentially forgive you for the cost of some of your Windows investment when you move from locally installed Windows to Azure, similar to how you pay less for a Windows upgrade than for a new purchase.  No other provider is in a position to do that, and the cost of Windows can be a significant piece of the compute instance price.
  6. Other unique options are available, such as Amazon’s spot instances and Lambda, Google’s pre-emptible instances and custom configurations, Microsoft’s “basic” instances for low-traffic applications and SoftLayer’s bare-metal server hosting. Any of these could potentially save you money if they are suited to your needs.
  7. You will very likely need a lot more than just the simplistic configurations we’ve looked at here. What about database services, VPN, load balancing, advanced monitoring, directory services, etc., not to mention specialized services like High Performance Computing?  Any one of those can change the price comparison significantly.  You may even run into some providers that simply can’t give you what you need for a specific application at all.
  8. Last, but not least, two of these providers give you per-minute pricing, which is up to 60 times more granular than per-hour pricing. That can have a major impact on what you actually pay, but I’m going to have to leave the details of that until next time.

Conclusion:  If you haven’t modeled the resource requirements thoroughly, you don’t know what it will cost to put your application in the cloud, and you certainly don’t know which service option from which provider will save you the most money.

Next time – per minute pricing!  Read Part 3.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s