The Five Stages of Hosting

Posted on Mon 18 June 2018 in DevOps

(Originally from http://blog.pinboard.in/2012/01/the_five_stages_of_hosting/)

As a proud VPS survivor, I thought it might be fun to write up five common options for hosting a web business, ranked in decreasing order of "cloudiness." People who aren't interested in this kind of minutia would be wise to pull the rip cord right here.

1. The Monastery

You run your site on an "application platform" like Heroku, Azure, or Google App Engine. You design your application around whatever metaphors and APIs the service lays out, and in return you are veiled from all the mysteries of implementation. You never interact with the computer directly, but upload your code to the platform with the proper incantations and it runs. The orders vary in strictness, with GAE requiring that you purify yourself of all worldly design habits before writing your app, Azure insisting you renounce the demon Unix, and Heroku somewhat more welcoming to the fallen. On all three platforms, when your application needs more resources, you press the 'more resources' button. A lot of fancy sandboxing, monitoring and administration tools come standard, and it's very easy to deploy and test different versions of your app.

Good: Skilled beardos toiling behind the scenes make sure everything Just Works. As long as your application obeys the commandments, you can have faith that it will endure any trial. Prototypes are fast and easy to build, and all you have to do to turn them into production services is add money. You don't have to spend any time worrying about backups, load balancing, configuration, hardware, or anything except your app.

Bad: You have to design your app in a very specific way, and learn the holy texts by heart. If you decide to convert to another service, or become an apostate and run things yourself, you'll find yourself having to rebuild from the foundations. Of course, being a programmer it will be more tempting to just create your own application platform instead. All this abstraction is expensive, and it can be hard to estimate cost ahead of time. It's also easy to rack up significant fees if you don't pay attention. You are vulnerable to sudden changes in the pricing model.

2. The Dorm Room

You lease a virtual server from a company like Linode, prgmr, Slicehost or Amazon. You get to pretend like you have your own computer, and nobody can tell you what to do, man! In reality you inhabit a small slice of a giant shared resource, but the hosting company does a good job of making it feel like a standalone machine. You're assigned a certain amount of memory, disk, and CPU, and can do whatever you want within those bounds. You can put up your Bob Marley posters and even build a loft!

Good: You are isolated from a lot of real responsibility. If a disk goes bad, people will fix it and you may not even know anything happened. For small servers, the cost of virtual hosting is pretty low. Pricing is straightforward and transparent, and you can usually add resources just by asking. If there is downtime, it's likely to be brief, as your virtual machine can move to another server. Most of the time you won't notice the neighbors.

Bad: Sometimes you will REALLY notice the neighbors, and can't do anything about it. I/O performance in particular can be awful. Your operating system will lie to you about performance because it lives in the Matrix and can't see all the way down to the hardware. And if you test the boundaries, you'll discover you can't actually do whatever you want. Deviate too far from expected behavior (by churning through millions of files, for example) and the R.A. will come knocking.

The larger tiers of virtual hosting are expensive compared to equivalent dedicated servers. There's often no way to choose the ratio of CPU to disk to RAM.

3. The Apartment

You lease a dedicated server from a company like Leaseweb or ServerBeach or a thousand others. This is just like (2), except now you really do have full control over an actual, physical computer that is not shared with anyone. You get a wider choice of operating systems and hardware, and you can custom-order all kinds of extras for your server. The machine still belongs to the hosting company, but you pay by the month or year for exclusive use.

There is a subtype of this arrangement known as "managed" hosting, where for additional money the hosting company takes care of general housekeeping and holds your hand if you get scared. Think of it as renting a basement apartment from your parents.

Good: Extensive configuration options. If any hardware breaks, the hosting company will fix it. It's easier to diagnose and characterize performance problems. Frequently you'll get an "out of band" console, so you can reboot or monitor your server from the outside. Sustained and random access I/O speed is much higher and performance in general is predictable and consistent.

Bad: The cost of rental will quickly exceed the amortized cost of just buying hardware, particularly if you require a lot of RAM or hard disk space. It's hard to evaluate the quality of tech support until you actually need it. Pricing is opaque and highly variable. If something breaks, it can be quite a while before the host can replace it.

4. The Condo

You buy your own computer and rent space for it in a colocation facility. This is just like (3), except now the machine sitting in the data center physically belongs to you. You buy it, you set it up, you run it, and it's your job to fix it if it breaks. The hosting company provides electricity, cooling, physical security, and some minimal "remote hands" service if you need someone to press a button or look at your blinkenlights. But ask not for whom the pager beeps — for sysadmin, it beeps for thee.

Good: You can fit your hardware to the exact needs of your application. If you use it long enough, you will save substantial money over rental. You can run your own routers, switches, and storage appliances - whatever fits in the rack. You have total control over everything.

Bad: You have total control over everything. Hardware is hard. You pay a lot of money up front. If something goes wrong, expect to either travel or FedEx heavy packages back and forth while under great stress. Pricing is even more opaque and variable than with rental, and you may have trouble finding good options if you need less than a full rack (room for about a dozen big servers).

5. The Stately Manor

Your own datacenter.

Good: No need to take hosting advice from blog posts.

Bad: God help you.