We host a lot of sites. Most are PHP / MySQL sites, most of those are Drupal and WordPress sites. There are a few outliers like a big ColdFusion intranet, and some Ruby and Python stuff. Some are huge sites for a national audience, some are much smaller sites with a more local focus.
We’ve been using Amazon Web Services to host all of them for the last few years. With the new year underway, we’re evaluating our web hosting options and I thought I’d share some findings.
AWS has everything you could ever want…
Amazon’s AWS has it all. Want a new server? Simply go to the console and start a new instance. In less than a minute, you’re logging in and setting it up. Want a bunch of disk space? Create a new EBS volume that’s as big as you want, mount it, and you’re done. Want to put stuff on a content delivery network for a big launch, make an S3 bucket, set permission, and load your stuff any one of a dozen different ways.
For large launches and sites with special needs or sites that draw a lot of traffic, Amazon is an excellent provider. An expert sysadmin can easily allocate and configure resources for a large on-line effort in a minimal amount of time.
In AWS, no one can hear you scream…
Sure, there are unlimited resources available. But, when you need more memory or more CPU on a busy server, you can’t just turn the dial from “less server” to “more server”. You have to allocate more instances, install Linux, configure Apache, setup your sites, remount EBS volumes and copy stuff.
Another difficulty we’ve encountered is that Amazon is really built for big sites that require more than one server to run. Our typical situation is the opposite, we need to run many sites on one easy to maintain server. In the past year, the growing need for SSL protected sites has meant we need to run many sites, each with a unique IP address, on one server. Unfortunately, a standard Amazon instance only allows one IP address per server. Working around that limitation to hosting many sites per server has been difficult.
We’ve been using load balancers to route multiple public IP addresses to our servers for the time being. It’s a solution that works but is complex to set up and troubleshoot. Using Amazon’s new VPC system, it is now possible to host multiple public IP addresses per instance. But, it’s new and requires some advanced setup to accomplish what’s a mundane support request with many other managed hosting providers.
Then, there’s the dreaded degraded hardware notice… Earlier in the last year, we had one of our instances suddenly show up with a notice that it was “running on degraded hardware” and scheduled to be terminated. Unfortunately, that instance had been set up before EBS volume storage was available, so we had to migrate the files from instance storage to EBS, then restart the server in a new instance. This unforeseen task took about an afternoon of system admin work, at an inconvenient time, to avoid an interruption in service.
Worst of all, we’re dealing with this with nearly no tech support. While there are many helpful posts on the AWS forums, there isn’t anyone to file a support request ticket with in the middle of the night when something is down. Most support plans offered cover just getting your instance up and running, and infrastructure issues. No one is going to log into your machine and fix things for you when they need fixing.
Amazon’s AWS is awesome for big sites and supporting national or global launches where tons of people are viewing your content all at once. It’s also a great solution or oddball projects that have unusual technical requirements, where setting up a server and tweaking everything by hand is desired. With a competent LInux sysadmin on hand, anything is possible.
For smaller projects and agencies that do a lot of work on smaller sites, the administrative time and costs can multiply quickly, leaving the agency working hard to keep up with server configuration and setup work. For a regular Drupal or WordPress site, commodity hosting with support that takes care of things for you is cheaply available elsewhere. There are a wide range of managed hosting services that eliminate the need for a capable system admin for all but the largest and most complex sites.