Skip to content

There’s no place like

July 7, 2010

As I anxiously wait for my Polish design company to create a suitable template for my site, I’ve started spending some cycles comparing hosting providers.  Ideally, I’d like a company that I can grow with; cheap prices up front for a single server to run the beta on, and the resources to scale out if and when the site becomes more popular.  Since my site uses an enormous amount of RAM (creating graph DBs in memory, caching, and indexing ingredient names), as well as depends on a queue service to perform various tasks, any sort of shared hosting solution is pretty much out.  This means I need root access on the machine and must be able to connect directly to the box.  A dedicated managed server would probably run around $300-$400/mon, so cloud solutions utilizing virtual machines are something I’m very interested in.  Today’s virtualization platforms, be it VMWare ESXi or Citrix XenServer, are becoming increasingly performant even for tasks such as running database servers.  Plus, it’s probably still cheaper to buy a bunch of virtual machines instead of leasing an entire server you may or may not use.  I doubt you’d want to run Facebook on VMs, but for my purposes they should be fine.

One conclusion I’ve come to is I need to stick with a Windows solution for now.  Though I’ve tested the site on Mono, I just don’t really trust it yet for production use and would like to do a lot more testing.  My current plan is to find a cloud hosting solution that supports Windows virtual machines and use that for the Beta site.  In the mean time, I’ll setup my own UNIX servers at home and do some more in-depth testing with a Mono build of KitchenPC where I can do things like remote debug, stress test (looking for memory leaks and performance bottlenecks), and isolate any Mono runtime specific problems.  Since the Mono project is one I’d really love to see succeed, I’d like to be able to give back to the open source community by helping out with this project.  Testing KitchenPC on this runtime will hopefully generate a few bug reports and testing data that might be helpful to the Mono team.

In this blog post, I’ll compare a few Windows cloud hosting solutions.

I first ran across when I was shopping around for dedicated managed servers and their sales staff impressed me with their knowledge and helpfulness.  Though they came across somewhat bitter, as half of their sales pitch was about how much Rackspace sucks.  Nevertheless, I believe they’re a great hosting company and have a lot of offer.  However, I think their cloud hosting solutions are not quite there yet to really be competitive in today’s industry.  First off, they don’t seem to really know the definition of “elasticity.”  If I provision a new virtual machine, it can take up to 24 hours for the machine to be provisioned and online.  What the heck are they doing?  This task should be completely automated and machines should be available within minutes.  Unlike most services, they do have the ability to upload a VMWare virtual disk image and provision a machine based on that, but the feature is rendered almost useless due to a few limitations.  When you upload the image (which is most likely several gigs), the machine can take up to a day to become available, and once it is, the file you uploaded is deleted!  This means you can’t store a “base image” of your server online and provision new nodes as traffic increases.  To make this even more ridiculous, last I checked they had no ability to backup or checkpoint virtual machines, so there’s no way to “clone” a machine.  Imagine the scenario where you want to add new node to your website because you got Dugg and millions are coming to your site.  You’d first have to upload a image of several gigs, wait 24 hours for the machine to come online, and then of course run any other configuration scripts needed for the machine.  I do believe they have the ability to instantly “resize” a machine, but it just doesn’t seem to me that understands the elastic cloud computing world.  On the plus side, they do support Windows and their pricing is fairly competitive at $139/mon for 1.2GHz virtual CPU, a gig of RAM and a terabyte of traffic included.

Amazon EC2

Everyone loves Amazon!  Their Elastic Computing services have been the subject of many news headlines over the past year or two, so I’d be silly not to dig in to their offering a bit.  Amazon just started offering Windows virtual machines recently, which works by allowing you to lease the cost of a Windows Server license by the hour.  The first thing I noticed about EC2 is their pricing reads like an obscure legal contract and reading it will usually result in a headache.  They totally lost me when they started talking about “compute cycles” or some such thing.  However, from what I understand, a small instance (which equates to a single virtual core with 1.7GB of RAM and 160GB of storage) will run about 12 cents per hour for Windows instance.  However, if you’re running to pay $227.50 up front, you can “buy down” the price for the year making it 5 cents per hour.

In other words, at 12 cents per hour you’d be paying (0.12 x 24 x 365) $1051.20 per year, or about $88 bucks a month.  If you wanted to pay up front, you’d be paying (227.50 + (.05 x 24 x 365)) $665.5 per year, or about $55 bucks a month.  This of course does not include bandwidth, which is 15 cents per gig, the first gig being free.  They also don’t charge for incoming data, though this will be changing in November.

Another thing I like about EC2 is they have built-in load balancing solutions (at 2.5 cents/hour), which can actually direct traffic intelligently to geographically convenient servers.  After checking into this technology, it was revealed that this is simply software load balancing which one could just setup themselves on any host.  Now if they threw some BigIP hardware in front of their cloud, man now they’d have something!  Even so, having load balancing at the click of a button sounds pretty nice.

Amazon most likely has the best developer resources as well.  They have a library of machine images to choose from with all sorts of stuff pre-installed, and you can even make your own and upload them.  Their API is rich and well documented, and you can scale up and down as needed automatically.  The idea of being able to detect high server load and automatically provision a new machine and add it to a web farm is very intriguing.

One thing I don’t like is I don’t really feel I’d get good customer support with Amazon.  They have forums and a very well documented API, but I can’t talk with a human 24 hours a day without paying at least $100/mon extra.

Windows Azure

Being a Microsoft employee for 11 years would result in a bit of guilt if I didn’t look into my old employer’s solution.  Though this service has been re-invented many times and is still in beta stages, it does look promising.  They do a lot of interesting things like allow services in the cloud to interact programmatically.  For example, I could write a stock price lookup web service, then allow other services in the cloud to call into my APIs, all internally within their network.  This creates an interesting ecosystem where new cloud features could be written and sold by third parties.

Azure has a huge advantage for the KitchenPC Beta, as the current Community Technology Preview is free.  They have announced their pricing, however it appears to be fairly competitive with Amazon EC2 at about 12 cents per hour.

In typical Microsoft fashion, the system is extremely closed.  To me, it seems designed only to work if you want to live and breath the Microsoft world.  This means using Windows servers, Visual Studio to develop everything (though I’m sure there’s manual ways to deploy), and SQL Server to run your database on.  Only applications that are built on the common language runtime can be hosted on Azure at this time.  Since I’m using PostgreSQL, I believe this fact would be a deal breaker.  However, watching a Channel 9 video on Azure, it appears they do have plans of giving people root access to individual leased machines which might make Azure more of an option at some point.  Overall, I think if Microsoft gets its act together, this might turn into the first real cloud based operating system.

Rackspace CloudServers

Rackspace has been my favorite hosting company for ages now.  They’re the best of the best, have an amazing track record, have an impressive portfolio of clients (such as and YouTube, before being acquired by Google that is.)  Every time I call them, they’re friendly and helpful and completely dedicated to providing awesome customer service.  I’m fully confident KitchenPC would be in good hands with Rackspace.

Their cloud solutions are somewhat new, after purchasing a company by the name of SliceHost for their virtualizing technology.  Their API is well documented and rich, and machines can be modified or provisioned by calling RESTful web services.  Machines can also be checkpointed and backed up, and new machines can be provisioned from existing backups.  At this time, they don’t have the ability to upload a virtual disk (they use Citrix Xen which might make this less than straight forward), but this probably isn’t too important if you can store your images online.  They also have probably one of the most advanced server farms ever built.  Virtual disks run off a SAN and can actually float to another disk array in case of any hardware failure, without even interrupting the machine state.  The last sales person I talked to was quick to point out that if Amazon suffers any sort of failure, your virtual machine is probably toast.

Rackspace just recently announced Windows CloudServers, which has secured their place in my list of finalists.  However, since this service is in Beta, it’s not “recommended” for production use and is limited in several ways.  For example, I can’t backup a disk image yet.  Backing up my database would require me to push the data off their network, which would be somewhat of a hassle.  Rackspace does have my trust that if anything were to go wrong, even in their beta stages, they’d be all over it and address the issue as soon as possible.  Plus, the service should be fully featured and backed up by their SLA within months.

The pricing is also competitive.  I can get a single virtual CPU machine with 512MB of RAM and 20 gigs of space for 4 cents an hour, or a gig of RAM and 40 gigs of space for 8 cents an hour.  Data per gig costs 22 cents out, and 8 cents in.  Their selection of machine choices (all the way up to around 16gigs of RAM) is much more diverse than other providers I’ve looked at.

I have a feeling that Rackspace would be a great choice for the beta version of KitchenPC, even with their limited Windows hosting features.  Furthermore, if I were to switch to Unix hosting or even dedicated servers, Rackspace would by far be my first choice.  This means that as my company grows, I’d be able to stick with the same hosting company as my requirements changed.


At this point, I’m leaning towards Rackspace as my choice for the KitchenPC Beta.  I trust the company, admire their customer focus, and believe they have the resources to take care of me now and in the future.  For the beta version, I’ll probably just need a single virtual machine and can backup the data nightly over a secure channel to either my home server or one of the many file backup solutions on the Internet.  With prices starting around $30/mon, they’re among the cheapest solution and would of course allow me to resize the machine within minutes as needed.

Now if only the Polish designers would hurry up with my site so I could get the thing online!


From → Business, Technical

Leave a Comment

Leave a Reply

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

You are commenting using your 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 )

Connecting to %s

%d bloggers like this: