There are many, many options for cloud server hosting nowadays. EC2 pricing alone is so complex that quite a few pages have been built to help sort it out. Even so, while comparing costs for various scenarios — on demand vs. reserved instances, “light utilization” vs. “heavy utilization” reservations, EC2 vs. other cloud providers — we here at Scalyr recently found ourselves building spreadsheets and looking up net-present-value formulas. That seemed a bit silly, so we decided to do something about it. And so we now present, without further ado: the Cloud Cost Calculator.
With this tool, you can:
- Compare prices across cloud providers (currently Amazon, Digital Ocean, Google, Linode, and Rackspace).
- Compare hourly and reserved / leased options on an apples-to-apples basis.
- See your true monthly cost, amortizing any up-front payment across your expected lifetime for a given server.
- Account for the resale value of EC2 reserved instances.
- Display and sort by value metrics such as “GB of RAM per dollar”.
- Restrict by region, provider, lease type, cost, and server size.
The combination of the true-monthly-cost computation, with “units per dollar” value metrics, enables you to ask interesting questions with just a few clicks. For instance, you can see which server gives you the most SSD storage per dollar, or find the cheapest way to run a 4-core server 8 hours/day for a year.
To determine monthly costs, you specify how long and how heavily you’ll use the server (e.g. 8 hours/day for 12 months). You also specify your cost of capital, which is used to convert upfront costs into a monthly equivalent. Finally, for EC2, you specify your assumptions regarding the resale value of a partially-used reserved instance on Amazon’s Reserved Instance Marketplace. (We automatically take Amazon’s 10% resale commission into account.)
Fun with data
Exploring this data was kind of fun. Unsurprisingly, Amazon’s specialty monster machines (cc2.8xlarge for CPU, cr1.8xlarge for RAM, hs1.8xlarge for disk, hi1.4xlarge for SSD) turn out to be very competitive on cost-performance for their respective specialty… though for RAM, Amazon’s m2.2xlarge instance is actually somewhat cheaper, per GB, than the cr1.8xlarge. However, Digital Ocean gives Amazon a real run for their money. Digital Ocean’s smallest offerings have outsized SSD and CPU allocations, and come out cheaper than the Amazon monsters on both terms, even for a three-year period that can take advantage of EC2 reserved instances. (Take the CPU comparisons with a grain of salt; see Notes and Caveats.)
If we limit ourselves to mid-sized servers, say 4GB to 32GB of RAM, the picture changes a bit. Digital Ocean and Rackspace both beat Amazon on SSD pricing, and Digital Ocean stays on top for CPU. Amazon still wins for RAM and spinning disk, in part because some competitors are moving entirely to SSD for direct-attached storage.
If you’re not willing to purchase a reserved instance, Amazon’s hs1.8xlarge still beats all comers for spinning disk prices, but Digital Ocean comes out on top everywhere else.
EC2 Reserved instances are under-appreciated
If you’re using Amazon, reserved instances are a great deal. Two things people don’t seem to take into account: a “light utilization” reserved instance gives you most of the benefit of a “heavy utilization” instance, with a much lower up-front cost, even if you’re planning to run the server 24 hours per day. And, the ability to resell instances on Amazon’s marketplace means that a reservation can make good financial sense even when you only need the server for a few months, or aren’t sure how long you need it.
In fact: if you’re going to run a server 24 hours a day, then on paper it’s cheaper to buy a reserved instance even if you only need the server for one month. (You’ll resell the reservation at the end of the month.) Of course, this assumes you have the working capital to purchase the reserved instance, and can risk an Amazon price drop or other marketplace setback. Don’t try this at home.
Let’s take a concrete example. Suppose you need an m3.xlarge server (15GB, 13 ECUs) for one month. An on-demand instance will cost $365 (assuming one month == 1/12 year). If you buy a one-year light-utilization lease, and resell it at the end of the month, your cost comes out to $299, even on mildly conservative assumptions (Amazon’s 10% resale commission, another 10% loss because no one will pay you the full pro-rated price, and 10% annual interest on your capital that was tied up for a month). On the same assumptions, a three-year light-utilization lease comes out even better, at $293.
Of course, if you plan on running a server for longer than one month, the benefits of a reservation increase rapidly. At 5 months, you save 50% by using a reservation.
Notes and caveats
We specify the number of CPU cores for each offering, alongside RAM and storage sizes. Most of these figures are fairly objective, but “CPU cores” are a squishy unit at best, and quickly become squishier in a multi-tenant service. We’ve followed this StackOverflow answer and translated EC2 Compute Units (ECUs) and Google GCEUs as 1 core == 2.75 ECUs == 2.75 GCEUs. We arbitrarily treated Google’s “f1-micro” instance as offering 0.5 GCEUs, and translate “1x priority” on Linode as equalling 0.5 cores. Finally, Rackspace advertises “vCPUs” which they say are a “physical CPU thread”; that sounds like a hyperthread, which we count as 0.5 cores. Take all this with a grain of salt.
Linode advertises monthly prices, and we compute costs on that basis. In practice, they will apparently pro-rate your bill if you run a server for less than a complete month. The calculator cannot currently take this into account, as there is no field to specify usage for partial months.
Digital Ocean charges for at most 672 hours (28 days * 24 hours/day) per month, which means the hourly rate is a bit lower for full-time usage. Our amortized cost computation handles this correctly.
There are many other differences between service providers. Some will affect your costs directly (several providers include some free bandwidth; GCE instances can be leased in sub-hour increments). More critically, there may be large variations in reliability and network quality, to say nothing of the availability of associated services like S3. This tool is all about price, but price is only one of the metrics you should be considering.
We only report pricing for basic Linux; Windows, RHEL, and other platforms are not covered.
EBS Optimized Instances are not listed.
We’d love to have data for more providers, including some traditional non-cloud providers. To contribute data, just put together a JSON file and submit a pull request on our Github repository. The readme file describes the format, and you can see an example here.
Other improvements are welcomed as well. If you have feedback, drop us a line at firstname.lastname@example.org.
- Thanks to Blairo on StackOverflow for showing how to retrieve EC2 pricing data. (Eran Sandler posted some nice code for this, though we wound up rolling our own.)
- Like so many side projects nowadays, this page was thrown together using Bootstrap, AngularJS, and jQuery.
If you’re interested in quantitative analysis of cloud performance, you might like our older post, A Systematic Look at EC2 I/O. And you might also be interested in our server monitoring and log analysis service. We’ve built a highly efficient universal storage engine for server logs and metrics, enabling you to manage all your server data in one place with amazing performance — click the link to learn more or try the online demo.