I don’t really like the terms “the cloud” or “cloud computing.” They’re not very descriptive, and I hate cloudy weather. Give me sunshine and blue skies any day. Please. Regardless, most of my websites, including the blog are now living “in the cloud.” I flipped the switch to move my blog over about a week ago, and so far so good.
Everything here is running on Amazon Web Services. The web server is an EC2 instance running the Amazon Linux distribution (I’d have preferred FreeBSD, but it doesn’t seem to be a viable option right now). The data is stored in SimpleDB and S3. The images and videos are served by CloudFront. These days, it looks like AWS is a solid platform for personal web hosting, especially since they launched the incredibly cheap “Micro” instances. If you’re considering VPS hosting, I think it’s an option worth considering.
The biggest thing I like about this whole solution is that it’s much more scalable than my previous setup (shared hosting on Dreamhost with a MySQL database behind it). My blog gets almost no traffic. Even when CNN linked to me, it was really tiny. Sad, even. I’m not likely to get Fireballed any time soon. So, scalability doesn’t really matter in practical terms. But if I’m going to do something, I want it to be scalable. It’s in my blood. Anything less makes it hard for me to sleep at night. So, here we are. The AWS data backends scale well (even though the latency is higher than I could get from MySQL), the performance of each instance is pretty good and I can trivially add more instances if necessary. I can also now run Memcached and do whatever config tweaks I want to make things run fast, which can be hard in a shared hosting environment. I’m truly drunk with scalable power. Bring it on, Gruber.
There are, of course downsides. The massive one, the proverbial elephant in the room, is the sysadmin workload. I have been a sysadmin. For systems much more interesting and complicated than this one. There were a lot of things I enjoyed about those jobs. But it’s not the kind of thing I want to do when I get home from work at night. No, taking on the sysadmin tasks for my personal web hosting is not something I really wanted to do. But in this case, I decided to give it a try and see if it could be an acceptable tradeoff for the benefits. I’m a pretty experienced SA, so I can usually get things taken care of quickly and without a lot of fuss, and so far it hasn’t been bad. If you’re not an experienced sysadmin, you should think carefully before using a hosting setup like this. If you want to learn and are willing to put in the work, great — just be aware of what you’re signing up for.
AWS prices are really reasonable, and it’s a pay-as-you-go setup, so you don’t end up having to pay for anything you don’t use. The downside to that is that the costs aren’t as predictable as those in a flat rate hosting arrangement. If you get an unexpected huge amount of traffic, your costs can be a lot higher than you expected. On the other hand, you at least have a very good opportunity to be able to actually service all of that traffic, unlike what might happen if you’re hosting elsewhere. When you’re looking at AWS prices, remember that the EC2 hourly price isn’t all you’ll be paying for. At a minimum, you have to pay for the storage and i/o for your boot volume (assuming you’re using an EBS image, which I think most people would for web hosting) and data transfer in and out. For tiny sites like mine, those costs are minuscule (less than $4 so far this month), they shouldn’t be forgotten.
Finally, if you use the new tantalizingly cheap Micro instances, remember that they have CPU throttling. That makes performance under load a lot less predictable. I hit one of my instances with JMeter and it was cranking along handling a very impressive amount of traffic until the CPU throttling kicked in. Then I started having responses take 60 seconds or more. Ouch! I’ve also discovered that it’s a horrible idea to compile or do anything else CPU-intensive on a Micro instance, especially if it’s one that’s serving live web traffic. I’ve taken to firing up a separate small instance to do builds and stuff. It’s also easy to temporarily make a Micro instance into a Small, but it does require a reboot.
I’m really happy with how this migration has worked out. It’s fun to play with new technology, and having the freedom to configure things exactly how I like them is something I’ve really missed in the years I was on shared hosting. Time will tell if the sysadmin grind gets to me and pushes me to another solution. For now, I’m content.