(NOTE: A lot of the information here has been updated for 2013 in this more recent post)
Shared web hosting vs. VPS or cloud providers
After migrating in a hurry from a terrible shared hosting provider (part 1) to a slightly-less-terrible host (part 2), I wanted to take my time in finding a more long-term home with the option of hosting some light development.
The most obvious idea these days is to simply get a complete virtual machine from a VPS provider such as Linode, or maybe use a “cloud” (ugh) service such as Google App Engine.
I’m not particularly interested in a VPS, because:
- I’m not an admin, and don’t want the responsibility of maintaining the OS, applying security patches, etc.
- Even the cheapest VPS is about four-times the cost of an acceptable shared hosting plan. To do anything serious with the Java Virtual Machine, you’ll need a much more expensive plan with more memory.
- I already do serious work with Java and Scala every day on the job, so in my personal time I would probably just be tinkering with Python or Ruby anyway.
Likewise, while I do have a Google App Engine account for private tinkering, that’s not suitable for my primary web host because:
- The main gist of this site is quasi-static content (i.e. WordPress).
- Currently, it seems that you’re permanently locked-in to the language you pick during sign-up. You can’t develop some things in Java and others in Python (without using dubious Jython hacks).
- I am not sold on Google’s proprietary datastore, compared to commodity options like PostgreSQL or MySQL with more robust and mature ecosystems.
- Google’s pricing model has already changed a time or two, and I’m not sure it’s finished baking. I probably wouldn’t exceed the free quotas, but I’d hate to get entrenched with a proprietary stack and then see those quotas changed.
- If I ever do need a “cloud-ish” platform for my personal Python development down the road, then there is a whole slew of new Python-focused players entering this space.
So basically, I was looking for a shared host offering good Python support with shell/cron access, a one-click installer for WordPress, and preferably a phone number for reaching a human if needed.
Buy one, get one at double price
Host review websites are legion, but have very limited value. Many of them are borderline-scams, set up by multi-level hosting companies to promote their reseller hosts. Of those that are neutral, their “advanced search” options are a joke. The things you can search on are very standard anyway (e.g. “email”, “cPanel”), while you can’t search on criteria that you would actually care about (e.g. “Python or Ruby support?, “shell access?”).
Not only must you check out hosting providers manually, but you have to sift through a lot of shady sales tactics.
- Misleading term lengths: The monthly price quote on the main splash page isn’t exactly “monthly”. It typically requires you to pre-pay 2 or 3 years in advance. This is usually revealed for the first time when you’re halfway through the checkout process.
- Automatic renewal: A few places still let you renew manually, but the trend is moving toward requiring automatic renewal. It typically takes 2-4 weeks notice to stop renewal, and some companies imply that your service will cancelled outright upon receipt of that notice. If this is literally enforced, then it would mean you don’t actually get the full term you paid for unless you keep renewing.
- Bait-and-switch price escalations: Very few hosts will simply tell you their rates flat-out. The normal approach these days is to hype a “promotional” rate instead. However, when your service is (automatically) renewed, it will be renewed at a much higher “regular” rate. Most outrageously, they often don’t even tell you what the “regular” rate is! You may have to use a site-specific Google search to find that information, buried on a customer support page somewhere.
(note: most of the companies who *don’t* do this bait-and-switch make up for it by changing a one-time “setup fee” instead)
Combining all three tactics, here are some typical examples from the web hosts I evaluated. These numbers represent the difference between how much you’re signing up for in the first year, vs. how much you would be automatically renewed for in the following year. This pricing assumes that you select a 12-month term:
- BlueHost or HostMonster: $83.40/yr to start, $107.40/yr renewal… 29% increase
- JustHost: $59.40/yr to start, $107.40/yr renewal… 81% increase
- FatCow: $44.00/yr to start, $107.40/yr renewal… 144% increase
You’re the one for me, baby (until someone better comes along)
Ultimately, I ended up going with a company called HostGator. At $66.72 for the first year, and $83.50/yr from there, the increase is only a “mere” 25%! However, if things go well I may move to a longer term length, and in sub-$5/month range I can’t complain too much.
They do require automatic renewal, but there doesn’t seem to be a requirement of giving notice too far in advance. At least not for web hosting, although they do want 30 days notice for domain name renewal if you use them as a domain registrar.
The main thing that drew me in was an actual support phone number staffed by humans, not easy to find in this price range. They also have a “live chat” link in the header of their website, and I was pleasantly surprised when testing it out with a pre-sales pricing question. Last but not least, their site has some very active customer-driven forums, where peers answer a lot of development questions with information specific to your actual server environment. To their credit, HostGator doesn’t seem to censor or filter any complaints in the forums. It feels like an actual user community.
I’ve only found two (mild) gripes so far:
- Only one domain: If you have “parked” domains, most shared hosts let you host them as aliases for your primary domain at no additional charge. A basic HostGator account doesn’t allow parked domains. For that you much upgrade to a mid-level plan costing about 50% more. In fact, extra domains is pretty much the only difference between the basic and mid-level plan! However, ultimately I found another way to setup my parked domain aliases for free, so this didn’t bother me much.
- Account activation hassle: Even though account activation was “instant”, I couldn’t really do anything in cPanel until after calling HostGator by phone to verify the account activation (or something). I’m not really sure what the point was, but it certainly wasn’t security. They only asked me for my domain name and my own name. With the domain name “steveperkins.net”, it’s not TOO hard to guess my name! If you’re going practice security, then do so. If you’re not, then why add the extra hassle? Still, it was only a 15-20 minute delay.
Still, neither of these were remotely deal-breakers when compared to other hosts I evaluated. My economy plan comes with every version of Python from 2.4 to 3.1 (with Django), unlimited database instances, every quick-install software package I would ever want, and no storage or bandwidth restrictions that I’ll ever realistically exceed. It’s been a big thumbs-up so far, and if that ever changes then I’m sure I’ll write an update about it.