Today marks my final move from uncool, mainstream shared hosting to the fantastic world of pay-what-you-need technology mash-ups.
I used to have shared hosting at Site5. They were OK. I really can’t complain much except that their dashboard functionality for hosting multiple domains on one account seemed archaic. I signed up almost exactly 5 years ago on their
Shared hosting has been such a smoke-and-mirrors industry designed to lure in inexperienced webbies with promises of “Unlimited!” and “One-click blogs!”. Sure, for many people, it’s perfectly fine for putting up some information about the local Habitat for Humanity or chess club, but even then, wouldn’t a free Tumblr or Google Sites account be just fine? Regardless, I decided to get more hands-on with my new setup.
Perhaps a VPS
I bought a VPS from ThrustVPS. That’s not the end of the story, because while I still have that VPS, it’s gone mostly unused. It hosts one domain that was never launched, and that’s about it. I got the VPS to play around with Ubuntu Server and try out some different ways of using nginx in a constrained-memory environment, and those experiments never turned into deployments. ThrustVPS was so-so. I don’t think I ran into any real performance issues, but many times they didn’t even meet 99% uptime even though many shared hosts promises three-nines uptime. I wouldn’t have known either, if it weren’t for Pingdom, but that’s what I get for $5/month, I suppose.
On an unrelated note, I found out that AlienVPS offers a $20/year VPS. With the right setup, that thing could serve thousands of hits per hour. I’ve yet to try them, but I probably will once my ThrustVPS plan expires. Also, you can run an Amazon EC2 micro instance free for a year with a new AWS account, and one of those is much more powerful than the smallest AlienVPS instance.
Cooler shared hosting
While I’ll probably keep around a VPS for new deployments (Scheme/Racket/Haskell web apps anyone?), I didn’t actually want the hassle of setting up PHP for my legacy sites. After all, PHP is the devil, and the fewer deals that I had to make with the devil, the better. But how to keep my Internet hipster cred?
NearlyFreeSpeech.NET offers minimalist shared hosting at pay-as-you-go rates. Unlike normal shared-hosting companies that profit on you not using what you “get”, at NFSN you only pay for your actual usage. That means that if you have a small, static site that gets low traffic, your bill will be measured in cents per month. If you have a 10 MB website, that’s $0.10/month plus bandwidth (as of writing). Domain registration, DNS, email forwarding, and databases are all priced separately as add-ons.
So that was all well and good. I ended up putting a static site and two PHP sites on there, and converted a third PHP site to a static site. They’ve been stable, with a no-nonsense interface and sensible settings, so I’ve been pretty happy.
As cool as NFSN is, $0.01/MB-month is not trivial when you’re hosting large files. I had accumulated a stash of videos, images, 3d models, and other miscellaneous data on a “files” subdomain that various websites have linked to for no good reason. I didn’t want to break all links that went there, so I decided to give those files the same pay-as-you-go treatment. I chose Amazon’s S3 as a data store, and the only hard part was transferring all of my files there. Since S3 bills for all actions, including transfers, I spun up a free EC2 micro instance to rsync files to Amazon and then send them to my S3 bucket (EC2 to S3 transfers are free). S3 buckets aren’t regular filesystems, but it’s one click to set up any bucket to serve files via HTTP. With proper redirects, you could serve your entire static website from S3 and cut your hosting costs to virtually nothing, but latency might be an issue.
At $0.125/GB-month, I estimate my storage costs to be less than two quarters each month. Better yet, AWS offers generous free usage for your first year, so I’m paying nothing right now.
Some of my domains have DNS hosted with 1&1, but in most cases I wanted more control over DNS settings. ThrustVPS’s “DinkyDNS” is just a CPanel account on some server, so it’s pretty awful, and for a while I used xname.org, a free DNS host. While the interface looked archaic, it worked, but it was annoying to keep all of my DNS settings on some other website that’s powered by generosity, and I did encounter a few hiccups along the way. I eventually ditched xname for…
I’m somewhat shocked that CloudFlare is free, because it’s amazing. Maybe they’re in the early-revenue stage and will collapse or jack up the prices someday. Either way, CloudFlare measurably saves me time and money.
CloudFlare acts as a caching layer between your website and your visitors—on one of my websites, it cut down my ping from home to 15 ms from 45 ms. CloudFlare also protects against malicious hits (although I’ve never really had problems from this) and downtime from DoS and servers errors. Of course, to do all this, it needs to handle the DNS, again, for free. So now I get free DNS service, free caching on their CDN, and free protection, but more importantly, it cuts down the actual number of hits to the servers by more than half, in some cases.
Pay-as-you-go has the risk of unpredicted surges in usage. If a million people hit my site, then the bandwidth costs at NFSN will drain all $7 in my account and get my websites disabled and Amazon AWS will charge me a hefty sum. (Of course, a traffic spike on your shared host would probably get you suspended too.) But with CloudFlare, I’m paying for half as much bandwidth as I normally would, which cuts costs even further.
Web hosting at NearlyFreeSpeech.NET: $2.40 / month
Static file hosting at Amazon: $0.40 / month (currently free)
CloudFlare: $0.00 / month
Domains: $3.33 / month