Welcome from the Cloud
You might notice that this site is running a little faster. This is because I have decided to try out hosting my site from within Amazon's Elastic Compute Cloud (EC2). EC2 is part of Amazon's Web Services, which also include the popular Simple Storage Service (S3), SimpleDB, and Simple Queue Service. Briefly, Amazon has decided to open up the computing capabilities and bandwidth of its data centers to the world, and has been steadily adding services and features over the last couple of years. A couple of weeks ago, they added a feature to their EC2 service that made it practical to run a web site from their cloud.
Amazon's EC2 is a service where you can commission a virtual machine, typically based on a Linux distribution, and run it off of the shared resources of one of Amazon's data centers. They have several different performance levels for the various machines you can configure, starting at the equivalent of a 1.0 GHz Xeon processor and 1.6 GB of RAM. You have complete control over what is installed and running on your machine, as well as everything else you could configure on a physical server. For example, I am running CentOS 5, with Apache and MySQL installed and optimized to handle Drupal. In addition, I have a few other services installed, such as Subversion for when I'll be able to completely open the source on Molecules.
All of these virtual machines sit behind Amazon's data pipe, so you have massive amounts of bandwidth to play with. The entry-level machine that I am running this server on was tested via Siege and barely broke a sweat serving up 25,000 hits of a complex Drupal page in 10 minutes. If this instance was running on the next most powerful machine hardware configuration, I have every belief that it would withstand a direct hit by Digg or Slashdot without slowing significantly.
As far as pricing goes, Amazon charges based on the number of hours you have instances running. The smallest instance they offer costs $0.10 per hour, or about $72 per month. That's more than many shared hosting plans, but in line with good virtual private server or dedicated server plans. Bandwidth is billed at the same rate as for their S3 service, or $0.17 per GB transferred out (with even better rates if you go above 10 TB per month). This is incredibly cheap for anyone expecting significant traffic to their site, and there are no real caps on your total monthly data transfers.
You can see that the site is much more responsive than it was before. I feel bad leaving Media Temple, my previous hosting location, because the people there treated me well and they provided an excellent set of tools for managing your site. However, the MySQL performance on their Grid-Service platform left a lot to be desired. Occasionally, the site would slow to a point where it would take 8-10 seconds to load a page. The new EC2 site serves up pages at a consistent rate, as fast as 250 milliseconds per page, depending on the bandwidth of your personal connection.
I'm currently at the C4[2] independent Mac developer conference, but when I get back in town I'll post a full description of how I created and configured this new site. Many people here seemed interested, not just for high-performance websites but for how EC2 could be used to scale the server infrastructure of something like a social network on demand.
Comments
How is this working out for you? I hear so much about cloud computing but I have not felt like taking the leap myself yet. Would you consider doing a update post on this matter?
I'm sure you've seen my other post, where I provide more detail on the setup and unique capabilities of the service.
Performance and uptime has been excellent, far better than it was with Media Temple. I average around 500 hits per day, though, with a few traffic spikes to ~4000 hits per day, so I'm not really stressing the system much. The low latency on loads has been great, in any case.
The snapshotting of the persistent storage has allowed me to clone my entire server in a couple minutes, test new code or tinker with the layout, and either terminate the clone or switch over the IP to make it the live server. This is incredibly helpful from a development perspective, and the incremental backups add a safety net that is very reassuring.
Amazon just added a new web-based administration console that I've yet to try out, but I'd still like to take a stab at doing a Cocoa framework for talking to these services and wrapping that in a nice desktop and iPhone GUI. I just don't know when I'll have the time.