I have been spending quite a bit of time lately pondering how Drupal site builders can use "the cloud" to their advantage. I've been using some cloud resources for a while without giving the larger implications much of a thought. As traffic to my sites grows I've considered how to handle the challenge of maintaining (or even improving) performance while continuing to add features to my site.
So what I wanted to do was share a few ideas and links that I have found (and maybe even implemented) while pondering cloud computing in the context of my Drupal sites. Buyers please beware. I don't consider myself and expert on any of this stuff. But like many Drupal developers I'm curious and learning as I go.
Amazon Web Services
Amazon offers a number of interesting services through their Amazon Web Services division. Amazon S3 provides pay as you go, expandable storage for all kinds of files at a very reasonable price. I have an account on S3 and use the great S3 Fox add-on for Firefox to manage my files. I've been using S3 to host a variety of navigation images and icons for my sites. This strategy helps to improve performance since it balances the load of the site between the web server where you host your Drupal site and Amazon's servers. It is possible to use S3 to automatically store and deliver primary content, like photos and videos, uploaded to your site using the Media Mover module. I haven't tried the module yet but I plan to do so soon.
If you're interested in getting started with S3 please have a look at the Getting Started With Amazon S3 screencast.
One of the issues people have had with S3 is the fact that it is not a content delivery network (CDN). The files you send to S3 sit on a server at a static location and are not optimized for the fastest delivery to different locations around the world. Amazon solved that problem recently by introducing Amazon CloudFront. So if you're distributing media to the masses you can have it delivered via CloudFront and optimized for the location of the request for the file. The CloudFront pricing is very reasonable but will be added to the cost of Amazon S3 usage as well because files delivered by CloudFront are uploaded to Amazon S3. In very basic terms, when you upload a file to Amazon S3 you get two urls. One url is for delivering the file via S3 and the other is for CloudFront.
I'm using CloudFront to deliver the videos that power my recently added Learn By The Drop site guide. If you want to explore the possibilities of using CloudFront I suggest that you check out Getting Started With Amazon CloudFront.
More recently I've considered the merits of Amazon's EC2 elastic computing service. EC2 allows you to create an expandable server where you can run all kinds of web applications. This is definitely an option for more advanced developers who know how to setup servers and rock the command line. But it is getting easier to use and understand as companies race to offer user friendly tools for the EC2 service. EC2 is attractive because you can get a powerful server that can expand as your Drupal site expands and you only pay for what you use. It's unattractive because of the technical complexity and the fact that it's really not economical for smaller sites. My simple calculations estimate that a basic EC2 instance for Drupal will cost you about $60 per month plus bandwidth charges. I've no doubt that $60 is a great price for a server but most sites won't need the kind of horsepower EC2 offers.
Here are some links related to EC2 and/or Drupal that you can take a look at to learn more.
How To: EC2 For Poets | WorkHabit Drupal EC2 AMI Screencast | Drupal In The Cloud | CloudKick
Google Docs
I've been using Google Docs to replace some functions that would otherwise be handled by Drupal. Last year and this year I wanted to include a baseball schedule on my Mets fan site. With a csv file in hand I considered importing it to the Drupal database but decided to use a spreadsheet on Google Docs and embed the file in a page on my site. You can see the results here. I've also found Google Docs helpful for creating surveys using their "forms" feature. You can create an embeddable form whose data is saved to a spreadsheet on Google Docs. I'm using this technique to collect data from my Drupal Use Survey. What you essentially get from the service is a simple database that is hosted by Google.
There are always lots of questions about using 3rd party services to outsource your Drupal site functions. Some people have privacy concerns. Others worry about the reliability of the 3rd party service affecting their site performance. These concerns are valid. So I think it's smart to consider the Drupal-only way vs. using Google Docs when adding functionality. Google Docs is worth considering for collecting and/or displaying data if the content involved is not the primary content for your site. It keeps the size of your database down and (assuming Google's performance is solid) removes a bit of load from your web server.
Stop Sharing Spreadsheets, Start Collecting Information
Mosso: The RackSpace Cloud
I found Mosso only recently and I could see that it was a step in the right direction in helping the average Drupal developer to deploy their site on a powerful server. The service is billed as, "The fastest, easiest way to put sites in the cloud." It sounds like Mosso offers you the power of a dedicated server with greatly simplified setup and management. It differs from Amazon EC2 because what you get with EC2 is basically an empty space whereas your space with Mosso is filled with the goodies you need (MySQL, PHP, etc.) to run a Drupal site. Mosso's pricing starts at $100 per month, which is at least $40 more than the Amazon service. But there's definitely value in the simplicity of a managed environment where less technical ability is required.
Services like Mosso will appeal to those who want a high performance Drupal site but don't have the technical ability (or the desire to hire someone) to deploy a high powered web server. Cost could become a downside if your sites get popular. Mosso estimates that a top 1000 Technorati blog could cost about $800 a month on their service. Then again if your sites suddenly get very popular other hosts might shut you down (for exceeding bandwidth limits) while Mosso will allow you the room to grow in an instant.
If you're curiousity has been piqued then take a look at Installing Drupal 6 On Mosso.
Drupal And The Cloud
There are a lot of great tools and services that can help developers achieve benefits that were previously only available to those who could afford to spend thousands of dollars per month. It's an exciting time as competition builds in the race to bring the cloud to the average web developer. I have no doubt that Drupal developers will be able to take advantage of many of the things that come along.