Category Archives: Virtualization

Updated Virtual Hosting Buyer’s Guide

I updated the virtual hosting buyer’s guide that I’ve been maintaining for a while now; I also gave it its own permalink so I wouldn’t have to keep looking at old posts on this blog to figure out where the data resided. It now lives at

Today’s big news is Amazon’s announcement of EC2 Micro instances, which for the first time gives them price leadership at the very important (to us) low end of the product line. Being able to spin up a server for $14.40 a month is going to be very useful; I’m thinking that instead of provisioning student accounts for certain types of CodeLesson courses, we will just provision student servers, one per student, and let everybody abuse their own instance.

It’s also terrific that you can get a Windows server at this size too (for an extra $0.01 an hour or $23.10 a month). Since we unfortunately still have some Windows hosting requirements it’s likely we’ll be using this at some point this year.

Updated VPS Hosting Price Comparison (June 2010)

Update: There’s a more recent version of the data below at

Linode announced that they’re increasing the amount of RAM by a lot (like 40%) on all of their virtual server products today. I’ve been watching pricing for a few of these services for about a year now and I’ve made a few posts comparing pricing. Today, for most servers under 8GB of RAM, Linode is a better value among the services we’re tracking. Here are the details:

RAM (MB) HD (GB) Bandwidth (GB) Price/Month Cost/RAM Notes
Amazon EC2 Large 7680 850 1024 248.88 0.0324
Amazon EC2 Extra Large 15360 1690 1024 497.76 0.0324
Amazon EC2 Small 1740.8 160 1024 62.22 0.0357 Maybe buy Linode 1536 instead
Linode 512 512 16 200 19.95 0.0390 Best value for this size
Linode 768 768 24 300 29.95 0.0390 Best value for this size
Linode 1024 1024 32 400 39.95 0.0390 Best value for this size
Linode 1536 1536 48 600 59.95 0.0390 Best value for this size
Linode 2048 2048 64 800 79.95 0.0390 Best value for this size
Linode 4096 4096 128 1600 159.95 0.0391 Best value for this size
Slicehost 15.5GB 15872 620 2500 800.00 0.0504 Buy Amazon EC2 Extra Large instead
Slicehost 8GB 8192 320 2500 450.00 0.0549 Buy Amazon EC2 Large instead
Slicehost 4GB 4096 160 2500 250.00 0.0610 Buy Linode 4096 instead
Slicehost 3GB 3072 120 1800 190.00 0.0618 Buy Linode 4096 instead
Slicehost 2GB 2048 80 1200 130.00 0.0635 Buy Linode 2048 instead
Slicehost 768 768 30 450 49.00 0.0638 Buy Linode 768 instead
Slicehost 384 384 15 225 25.00 0.0651 Buy Linode 512 instead
Slicehost 1.5GB 1536 60 900 100.00 0.0651 Buy Amazon EC2 Small instead
Slicehost 1GB 1024 40 600 70.00 0.0684 Buy Linode 1024 instead
Slicehost 512 512 20 300 38.00 0.0742 Buy Linode 512 instead
Slicehost 256 256 10 150 20.00 0.0781 Buy Linode 512 instead

The chart is sorted according to best value, defined in terms of cost per megabyte of RAM per month.

This time rather than placing the data in a chart like I did last time, I calculated it in a spreadsheet so I could come up with a total cost per megabyte of RAM per month. I also included pointers to which product is the better value choice at each price point, so, for example, if you’re thinking about getting the smallest Slicehost machine, you’d actually be better off with a Linode 512, which provides twice the RAM for $0.05 less per month.

As in the past, I’ve stacked up two VPS hosting providers (Linode and Slicehost) against Amazon EC2. (I didn’t do Rackspace Cloud this time because I have yet to hear much about the reputation of that service, and they charge for bandwidth and storage separately so it’s more difficult to do an apples-to-apples comparison. Amazon EC2 charges for bandwidth/storage separately, too, but they provide a handy calculator for that and I couldn’t find anything comparable for Rackspace. Also, Slicehost is owned by Rackspace now.)

As in the past, everyone’s battling for supremacy at the low end but Amazon is still a better choice if you a) need a larger machine, b) need a guaranteed level of CPU, or c) need some of Amazon’s programmability features such as the ability to spin up new virtual machines automatically or if you’re going to use their automatic load balancing feature.

I’d been thinking about using Linode for a while and today’s pricing changes compelled me to sign up for an account for a few upcoming projects we’re working on. So far, so good — I like that Linode’s control panel is a little more granular than Slicehost’s, although I was initially tripped up by the fact that they don’t automatically boot a new instance for your when you provision it.

It’ll be interesting to see what Slicehost does in terms of pricing now, since they haven’t done anything significant there in the year since I’ve been paying close attention to these products.

Price Points for VPS Hosting Services

Over the past few years I’ve done a few posts highlighting the differences between various virtual hosting services, including Slicehost (which we use today and are happy with) and Amazon EC2 (which we’ve used on behalf of consulting clients and also like quite a bit). But as more virtual hosting products with different price points come to market, it’s getting more difficult to know where the value is. So every so often I go through list prices for various services to see who’s most competitive.

As I’ve noted in these posts before, Amazon EC2 has gotten much more competitive on price for medium-sized servers. They have no true low-end offering; they’ve ceded that to providers like Slicehost and Rackspace (which are now the same company). Last week Slicehost added new intermediate-sized virtual servers with more granular pricing (such as 384MB and 768MB). But as you can see in the chart below, they’re still not competitive with other hosting providers; even the corresponding Rackspace offering is about half the price at the smallest size available, and the value gap becomes more pronounced as the virtual machines get bigger:

Hosting Price Comparison Chart

(You can click on the chart to see it full size.)

You can make value comparisons between similar products on this chart by comparing points that are proximate. For example, if you’re thinking of getting a 512MB Slicehost virtual machine, it may be more cost-effective to go with a 720MB Linode machine (to get more than 50% additional RAM for an additional $1/month) or the 512MB Rackspace VPS (to save $20 a month).

It’s hard to fathom why Rackspace and Slicehost have such different price points since they’re the same company now. I’m sure there must be some kind of genius marketing strategy at work here, or maybe they just thought that nobody would ever plot this out. There’s also the inertia factor (it’s not worth it to us to migrate several web apps off of a $38/month Slicehost machine just to save $5/month on hosting). Anyway, at $21.90/month, the 512MB Rackspace Cloud virtual server seems like a spectacular deal, even though you only get 20GB of storage with that (same as the corresponding Slicehost product).

But once you get to the point where you need a decent amount of RAM (1.7GB or more), the Amazon EC2 offering becomes very competitive, even if you use an on-demand instance. If you pay for a year up front with a reserved instance, EC2 is an even better value. However, this chart doesn’t factor in the cost of storage and I/O, which for Amazon EC2 machines is metered and billed separately and will be different depending on what you’re doing.

In this comparison, I’ve added Linode pricing for the first time. I’ve never used these guys myself but their offering seems to be comparable to what Slicehost and Rackspace Cloud do, and I know people who swear by them.

Of course, this graph doesn’t compare other factors such as local storage and CPU because I wanted to keep the graph reasonably simple. I typically go with RAM as a basis for comparison because it’s the biggest differentiator in terms of performance for most web-hosting scenarios. CPU comparisons for virtual hosting are also challenging because nobody but Amazon EC2 gives you a firm guarantee as to what kind of processing power you’re paying for (which, to me, is scandalous — the VPS hosting industry needs some standard performance benchmarks, pronto). Suffice it to say that if your application is CPU-bound, you should be looking at some of the high-CPU EC2 machines (which aren’t represented on this chart).

I should also repeat the apples-to-oranges disclaimer: EC2 has capabilities and features that the competitors listed here don’t have, such as the ability to create machine images that you can spin up programmatically. Amazon also has a commodity load-balancing service (which is very reasonably priced, only $0.008 per hour) which we’re planning to use on a client implementation soon. Also, Rackspace charges separately for bandwidth, as EC2 does.

At the same time, the other providers have features and services that Amazon doesn’t have, such as included durable storage, free online support (the main reason why we stick with Slicehost for the low-end stuff) and free DNS hosting (which we used to pay for separately; now it seems as if everybody in the world except Amazon provides this).

Comparative Pricing for Virtual Hosting Providers

Rackspace just launched a new suite of cloud computing (really virtualized hosting) products. We use a bunch of these products from different companies. We also have a consulting practice dedicated to Amazon’s EC2 offering, so I wanted to take a closer look at how the different offerings stack up in terms of price and features. I also compared the new Rackspace offering to Slicehost, which we’ve used for a while and are very happy with. (Slicehost was acquired by Rackspace in October of last year, so they’re the same company, but very different products. It looks like they’re continuing to run Slicehost as an independent brand, which I think is smart.)

Anyway, here’s my comparison. Bear in mind that this is not an apples/apples comparison (the details are below):

Rackspace Cloud Slicehost Amazon EC2 Small
256 256 1700
10 10 160
Some vaguely-defined fraction of a quad-core server Some vaguely-defined fraction of a quad-core server Equivalent to a single-core 1.0-1.2Ghz 2007 Opteron
$10.80 $20.00 $72.00
$61.20 as of Nov. 1 2009
Bandwidth Out/GB
$0.22 100GB fixed pooled $0.17
Bandwidth In/GB
$0.08 100GB fixed pooled $0.10

So it looks like the Rackspace-branded offering significantly undercuts the Slicehost offering on price in every category as long as your bandwidth is less than about 42GB per month. If your site uses more bandwidth than that, Slicehost would be a better value, particularly if you run more than one instance, since Slicehost pools bandwidth allocations across all the virtual machines you run on their service. Rackspace Cloud is also cheaper than Amazon EC2 across the board except in one area (bandwidth out).

The chart doesn’t reflect this, but Amazon extends volume discounts on outbound bandwidth starting at 40 terabytes. We refer to this as “the Smugmug discount”; I suspect that not too many of their customers beside Smugmug hit this limit in practice (and we certainly never have), so it didn’t factor into my analysis here.

I included Amazon EC2 in this comparison because they get so much attention in this area. To be fair, Amazon has never positioned EC2 as a low-cost offering, instead emphasizing flexibility and the ability to pay as you go. But this comparison shows that the Amazon offering has a weakness in terms of price points (as opposed to price in an absolute sense). There’s no such thing as a “tiny” EC2 instance; their “small” size doesn’t correlate to the Rackspace/Slicehost offering, so they’re missing out on the low end (which in this case is a single-processor virtual machine with under 1GB of RAM). The smallest virtual machine you can run on Amazon’s EC2 has 1.7GB of RAM and 160GB of storage. This makes Amazon EC2 unappealing for a lot of developer use cases, such as temporary staging servers for QA, private/small workgroup collaboration servers (low-traffic blog hosting, file shares and version control servers), and so forth.

(You can pay for a year’s worth of EC2 service in advance and get a pretty significant discount on the per-hour charge; Amazon calls this a “reserved instance“. This might make economic sense depending on what you were looking to do, although it’s not going to beat Rackspace for on-demand scenarios. Again, the problem with the Amazon’s EC2 offering isn’t with price per se, it’s with the price point — they just don’t offer a low-end virtual machine.)

It’s also worth noting that the offerings differ in another area: the ability to spin up and manage machine instances programmatically. Amazon EC2 is far and away the most robust provider in this area, with a web services API that enables users to control most aspects of their virtual machine instances. Slicehost has a rudimentary API, while Rackspace Cloud’s programmable API offering is “coming soon”.

Slicehost also has one feature that we really like: they provide DNS hosting for their customers at no extra charge (their DNS service is also part of their API). Amazon doesn’t appear to provide DNS (although they do generate a DNS name automatically when you create an instance — if you want to designate a host name of your choice, you’re on your own).

Amazon EC2’s large library of machine images (including the ability to create and publish your own machine image) is a big strength and one that many developers have taken advantage of. It’s probably the most compelling feature of their offering in a world in which they are not particularly competitive on price.

Finally, it’s worth noting that of these, only Amazon EC2 offers Windows hosting (which Microsoft will make you pay through the nose for). The Slicehost and Rackspace offerings only contain operating system images for Linux (although they support a bunch of distributions).

I’m spending a lot of time thinking on this as I figure out how to create a hosted service out of the Tinypug project we’ve been working on. For now, we plan to continue to use Slicehost and Amazon EC2 to host client sites as we evaluate the Rackspace Cloud offering in more depth.

Windows on Amazon EC2

Back in February I suggested that Amazon and Microsoft should figure out a way to provide Windows Server on Amazon’s EC2 hosting service. Three weeks ago, Amazon announced a private beta of their Windows hosting service on EC2; today they are opening EC2 on Windows up to everyone.

Their pricing is interesting. It’s slightly more than what you’d pay for a Linux distribution, which is no surprise, but if you’re paying for dedicated Windows hosting today, you will still probably save a significant amount of money with EC2 (particularly if you have spikey traffic and need to spin up and take down servers in response to load). A small EC2 instance running Windows Server 2003 will set you back about $91/month ($0.125 per hour). That’s less than half of what we’re paying per dedicated server at our Windows hosting provider today (ServerBeach) (however, see note below).

Note, however, that you only get that price if you don’t need SQL Server Standard Edition (the non-crippled version of SQL Server that lets you use all your RAM and hard disk space — that is to say, the only edition you’d ever want to actually use in a production environment). Running SQL Standard on an EC2 instance will set you back $1.10 per hour — more than $800 per month for a single server. Ouch.

It gets worse from there — if you need more than five Windows user accounts, you need to use something called Windows Authentication Services, which costs used to cost a lot more (see update 2 below). A standard EC2 instance running Windows Server, SQL Server Standard and Authentication Services will set you back something north of $980 per month. I’d be interested to know what kind of user is going to shell out for this package — the pricing seems almost punative.

So it sounds like Windows on EC2 is a great deal, as long as you just use it to run Windows and bag all that other stuff. Bear in mind that you can create spectacular data-driven Web applications without SQL Server. For .NET developers, the ease of programming is the same (since it’s all ADO.NET). Setting up MySQL on Windows is not difficult, and it runs quite well on Windows.

We’ve been doing MySQL on Windows (as well as Linux) for a couple of years now. You might have caught my talks on using MySQL on Windows at the MySQL conferences (both this year and last year) and at the VSLive conferences over past year and a half. If you have or are planning to build a Windows application and host it on EC2, we would love to help you as part of our Amazon Web Services consultancy.

Update: I pointed out to ServerBeach that Amazon EC2 was undercutting them significantly on Windows Server hosting, and after some back and forth they agreed to match Amazon’s price, which means that at least one part of the economy is still working the way it’s supposed to.

Update 2: I am guessing that a lot of other people did the same pricing arithmetic that I did and stayed away from the “Authentication Services” product, because Amazon/Microsoft just bagged that pricing tier. Now Windows Servers that require logins are billed at the same rate, which has the happy side effect of simplifying the product offering considerably. Kudos!

New Platform Consulting Products: Amazon and Facebook

Just posted three new categories of consulting practices over on the consulting web site:

  • Facebook (application strategy, corporate presence and application development)
  • Amazon Web Services (focusing on their S3 storage and EC2 hosting products)

The Facebook and Amazon practices actually aren’t new, but we’ve packaged them up in the form of consulting practices and put them on the web site for the first time.

We’re launching these practices at the same time because they’re somewhat related. The Facebook/Amazon EC2 in particular is powerful mojo; we’re just about to release a Facebook application for a client that uses Facebook and EC2 together.

Google App Engine: Fish or Foul?

We’ve been paying attention to the launch of Google App Engine over the past day and a half and we will continue to keep an eye on it on behalf of our consulting clients. As is often the case with paradigm-challenging products, people often try to characterize the new thing in terms of what they already know. But we don’t believe that Google App Engine is directly competitive with Amazon EC2 today, although it could be in the future. We also don’t believe, as a few people have asserted, that it’s competitive with social networks like Facebook either. Here’s why.

Amazon EC2 is one of the most open platform products in existence today. When you spin up an instance of an EC2 server, you get to make all the choices regarding operating system and software. You log in as root. You can write applications on an EC2 instance using any language and tools you want. You pay only for what you use.

Google App Engine, on the other hand, is a walled garden. In the words of Tim Bray, if you go the App Engine route, particularly if you choose to use Google authentication, you are essentially a sharecropper, working on Google’s farm. You write the application, but Google owns the infrastructure and, more importantly, they own your users.

Ah, you say, but it’s certainly true that closed platforms can be spectacularly successful, at least some of the time. Look at Facebook, for example, one of the most popular walled gardens in existence today. Facebook exerts a great deal of control over what applications running on its platform can do through frequently-changing terms of service and rules enforced in its technology stack. But the difference here is that Facebook asks you to trade off openness and control of your application in exchange for something valuable — its users’ attention. The deal you make with them goes something like this: give me access to your millions of users, and in exchange I’ll adhere to your terms of service and accept your proprietary application framework — I’ll even go so far as to learn the only programming language that you really support well (which in Facebook’s case is PHP).

Google App Engine is neither fish nor fowl. It requires developers to write to their framework without the commensurate benefit of access to a huge built-in audience of users.

Google is providing access to App Engine for free for now, although traffic and storage is limited and we haven’t seen information about commercial licensing, which is troublesome and probably a deal-killer for all but the most trivial applications. It’s true that in many cases “free” can trump “open” or “complete”, but in the case of Google App Engine we believe that “free” won’t make a huge difference. It may attract experimenters and people writing demonstration applications, but virtual hosting (through EC2 or fixed-price virtual hosting providers such as Slicehost) is so close to free today that the “free” part of Google App Engine should not make a difference to anyone who is looking to write a non-trivial application.

The design choices that Google made with this product are pornographically good news for Python developers, who now have their own dedicated application server and a way to build web applications using their language of choice. This may well put Python on the map (as the second language of choice alongside Java, PHP and C#) as one of the Languages That Matter. But it’s also important to remember that consumers don’t use Python (or any other programming language), they use applications. In this respect, Google App Engine is one of many Google products that seems to have been created with technologists, as opposed to consumers, in mind.

On the consulting side we’ve been getting a ton of inquiries from customers regarding strategies and tactics for virtualization on platforms like Amazon EC2, and we’re in the process of adding a formal software development practice dedicated to supporting Amazon’s EC2 and S3 products. That doesn’t mean that we wouldn’t support something like Google App Engine if a client asked us to and there was a good reason to, but for the reasons we’ve described here, we’d prefer to take a wait-and-see attitude towards this and carefully weigh the drawbacks and limitations before devoting serious time or development effort to the platform.

All that having been said, we still believe that Amazon has missed an opportunity by positioning EC2 as a developer product as opposed to a hosting product. If the Google App Engine product were to make a dent in EC2’s momentum, we’d recommend that Amazon provide better support for multi-server scalability scenarios. Amazon recently started moving in this direction with the release of new features intended to give administrators the ability to assign IP addresses and machine instances to specific data centers, but providing explicit support for an adaptive clustering package like Scalr would give EC2 a vital edge, particularly for professional applications.

Make Windows Server’s Licencing Virtualizable

I’ve been doing a lot of work lately on behalf of clients who are looking to deploy applications to virtual data centers. When I first started working as a technology consultant in the ’90s, it was a given that if you wanted to have a web application, you had to buy a bunch of servers and rent out a cabinet in a data center somewhere. Now the notion of spending all that money on hardware that will go obsolete in a few years seems like insanity most of the time (particularly when the size of the audience for your application is completely unknown). When I first started a hosted web service in 1999 people judged us by how many servers my company owned. Now when I tell them “we don’t own any servers at all” they nod knowingly.

It’s great that we have more cost-efficient virtualization options today than we had ten years ago. Unfortunately, though, virtualization is a disruptive technology, which means that there are incumbents (including hardware and software vendors) who are digging in rather than adapting their technology and business models to the new realities of the marketplace. If the economy of 2008 dictates that IT managers put more emphasis on cost-containment as they did in the recession of the early 1990s, the pressure to do more with virtualization will only increase.

Microsoft in particular is far behind the curve on virtualization — maybe not with respect to its own virtualization products, but with respect to its one-CPU/one-license business model for its software products and operating systems. Rather than seeing virtualization as an opportunity to charge a lucrative toll for dialtone computing, Microsoft’s first response was to make their license terms more restrictive (by preventing users from deploying Windows Vista to desktop virtual machines unless they pay for the bloated, expensive version). I know that they’ve relaxed this restriction for Vista in the last year, but that doesn’t matter to me since Vista will not likely touch any computer I own for at least a year or two, if ever. (When I do my own development work today or do .NET demos at VSLive, I run Windows Server 2003 in a virtual machine under Parallels on my Mac.)

But the desktop is neither here nor there. I’m more concerned about the way that Microsoft is missing the boat with respect to server licensing. They are getting their butts kicked by LAMP, particularly here in Silicon Valley, but also internationally, and their poor virtualization story is a big reason for this.

We’re currently working on an out-of-band innovation project for one of the world’s largest companies. The company went with us specifically they wanted an outsider’s perspective on what they wanted to do — but also because they didn’t want to deal with a bunch of bureaucracy and institutional hurdles to shipping the application.

We could have written the application in .NET (which I am a world-renowned expert with) or in PHP (which I am just now coming up to speed on). Paying for Windows Server licenses would not have been an issue for this client. So given that, you’d think that that free operating system would be at a huge disadvantage (particularly since the developer who’s going to write this application is operating outside of his area of expertise).

But we came to the conclusion that it would be more efficacious to write and deploy the application using Ubuntu and LAMP mainly because the story with Windows virtualization is so totally ridiculous. After looking around, it does not appear that there is a product out there that supports Windows Server on a virtualized basis in a manner similar to Amazon EC2 (giving us the ability to spin up many instances of a cloned server configuration quickly) or Slicehost (which also provides virtual hosting based on several different Linux operating system configurations at low cost — less than EC2, actually — and can spin up a new server instance within a minute or two).

None of these hosting options really work with Windows because of Windows’ licensing model.

What would Windows support for an EC2-style virtualization product look like? Microsoft would provide a preconfigured machine image of Windows Server for use on EC2. Users would be able to spin up one or more instances of the server in less than a minute (no waiting for 40 minutes for the operating system to copy its files onto the virtual machine and no running Windows Update five times with a reboot each time). Just providing something like that would be a huge benefit in and of itself.

But — and this is the important part — you’d be able to pay for your operating system license by the minute instead of by the CPU. If you do the math on this (a $400 license for the web server edition of the Windows Server OS, divided by 8,760 hours in a year, factoring in the expected period of amortization for an operating system product which is three to five years), it should be possible for Microsoft to offer a bare-bones utility computing edition of Windows Server through Amazon EC2 for no more than one or two cents an hour. If users wanted other stuff (like a version of SQL Server that doesn’t artificially throttle the amount of memory you can utilize), you could pay another few cents per hour. (Or you could just run MySQL which works quite well on Windows.)

I should reiterate that this is not a matter of “your operating system costs money” versus “their operating system costs nothing”. Businesses are always willing to pay more when the value is there. This is really a matter of who is more of a pain in the ass to do business with. Or not do business with, as the case may be.

Update: Read/Write Web suggested that Microsoft is at work on their own utility computing initiative, called Red Dog. I have high hopes, but my expectation is that it will be similar to Microsoft’s other online offerings — 80% of the feature set that people need combined with enough franchise-protecting restrictions that it won’t be a serious threat to EC2. It would be much easier to buy in to the whole thing if Microsoft just found a way to virtualize their software licensing and left the hosting to others.

Amazon Rolls Out New EC2 Server Types added some beefier server configurations to their EC2 virtualization product (and some new price points). You can now get a virtual 64-bit server with 7.5 GB of RAM and 850 GB of storage for $0.40 for hour or a big burrito with 15GB of RAM and 1,690 GB of storage for $0.80 per hour. These are a step up from the basic offering which still costs $0.10 per hour.