Over on the Jackson Fish link blog Hillel comments on this post about how companies increasingly need to compete on their ability to maintain complex hardware systems that “As best I can tell this is only true for an ever-shrinking category of very large software companies. The virtual hosting companies are scaling to larger and larger heights and making even very large deployments more cost-effective to outsource. I donâ€™t know that this trend will stop any time soon.”
Hillel, Walter and I were talking about this over lunch the other day and it feels like a pretty interesting topic, partly because the industry is in such flux over these issues.
Maybe its a cop out, but I’m going to fall back on “it depends”. It depends on the technology you want to deploy, it depends on the business requirements and costs of your situation. Just as some people make a mistake in approaching web-development in a “do everything with some specific approach and a relational database” mindset, a one-size-fits-all approach to hosting is a mistake, at least at the moment (its possible that technical and business progress will change this eventually).
If your business needs only require mostly static web-sites, heck, you will probably be fine with one of the $10/month hosting accounts. On the other hand if you need a very dynamic environment where for one reason or another you potentially need to host multiple things in different virtual machines with the ability to scale things up (storage in addition to CPU), I’m not sure that any of the existing hosting solutions will meet your needs. My experience with them is that they tend to have some degree of inflexibility, either in storage or in adding additional compute resources. If they do let you scale up your needs, are they as cost effective once you are using the whole box instead of a time-slice of it? Can they support load-balance across more than 1 machine when you need more resources than a single box can handle?
Furthermore, its fairly important to look at these things in terms of the business situation. What’s the cost of being down for 8 hours? What’s the cost of having to do a few extra days of development to fit into the constraints of a hosting system? What’s the cost of hiring the ops guy to run your own machines? How much ops support are you really getting from the outsourced host? These factors can go either way- if you have a good hosting provider that matches your technology stack pick, that can be a big help. Or Hillel and some other friends have even pointed out that it often is a good business decision to pick the technology stack based on what you can host efficiently. Realistically development for whichever stack is mostly similar (at least in efficiency- there are plenty of other issues) today, so pick the one you can run well.
Let’s analyze some cost issues. I had a cheap low-end hosting account but have moved most of my services over to a rack-server that I own in a data-center. My server cost me $1600 initially and I pay $60/month at the moment for my co-location service. This server is currently a 2×2ghz Woodcrest system with 2gb RAM and I’m running 3 virtual machines on it for various ventures/web sites. I look at hardware investments are depreciating over pretty much 2 years. By 2 years from now its pretty hard for the hardware to be worth the space in the rack (at least the way I’m paying for it- once you have a bunch of machines the math can work out slightly differently). However I did fairly carefully pick out a system where for an additional $1000-$2000 I can increase my CPU capability by 4-6x, RAM to 6GB pretty easily and I can put in 4TB of disk space. So the depreciation isn’t straight, but I’ll still write-off (in this model) $800 cost to the box this year. So my total monthly cost is $125.
Walter was pointing out that you can get shared space on a virtual server for probably $35/month. This gives you 1/16th of a box that is probably much less powerful than the one I’m running on and fairly limited RAM and storage (I think 256mb and 20GB. I need to double check with him on these stats). I’ve seen others that give similar capabilities for more like $75/month. BUT (a) if you aren’t using the extra capability, it doesn’t matter. My box is probably averaging less than 5% utilization, so there you have it. (b) if the hosted box isn’t fully used by the other people sharing it, you get to burst CPU higher than your 1/16th. So one of the nice things of my overcapacity on my box is the response time of my sites tends to be very good because the machine isn’t busy doing other things. Its one of those interesting things with networking technology that once a machine is loaded requests queue up and they all slow down just like a traffic jam. Both of these situations can benefit from this, although in the shared hosting situation you don’t have control over it- if other people max out their 1/16ths, your machine is under load, tough.
The other difficult factor for analysis is of course the human costs. My solution only costs $125/month (including hardware depreciation). But to get it setup I had to build the machine, go down to the data-center, and install it. I have to manage OS updates (security patches and similar fun), although conversely I get to manage OS updates and don’t need to worry about someone else destabilizing my machine with a new version of something that I’m not expecting. It doesn’t take a lot of hours of work to make the economics look much worse. But just because someone else is doing the hosting doesn’t mean that you won’t get stuck with this- I’ve spent way more hours messing around with the 1and1 servers than with my own- I’m happy to say that since I put my data-center server up last December I’ve never seen it in over 6 months and only very rarely have I had to touch it.
Some other questions to consider if you are relying on someone else for hosting. What’s their backup plan? I’m not saying that mine is great. But if the CPU hosting your service dies, what happens? Are they actually going to be able to get you back online in less than 24 hours? Do they have redundant storage? Do they actually test the backups? Do they have the excess capacity?
The thing is- I’ve never seen one of these hosting outfits that really explains clearly their procedures for all this stuff. Look, you are paying them less than $100/month. Sure they all say they backup. They have redundancy. But to be clear, without a detailed technical document explaining how they manage all that stuff and/or some form of financial arrangement where they compensate me for downtime (which would be unheard of in this price bracket), I just don’t believe it.
Now, the big disclaimer on all the above. This is a space where the technology and business framework is changing rapidly. Its pretty easy to imagine how services like Amazon’s EC2 and other grid compute services will evolve into a space where they can really provide automatic, flexible, scalable pay-per-use computing that can be used to host commercial web-sites and web-services. I’m just saying it smells like its a couple of years away from this stuff being really ready for many commercial applications.
Until that magic service really gets perfected another alternative suggests itself for small companies, although I’ve never seen it work. I could imagine a bunch of the Seattle area startups getting together, investing in a 1/4 rack, 4-6 machines, and a half or quarter time ops person. With virtual machines, a bunch of folks that trust each other, and the right smart design you could pull of something that is both inexpensive, but also really robust, flexible, and safe. Just a thought.