I am seriously considering to move my host to the Amazon Elastic Cloud Computing (aka EC2) service. Amazon is revolutionizing the way virtualization will become a mass product. It uses Xen (for the I-life-under-a-proprietary-rock-people: think an opensource paravirtualisation version of VMWare on steroids; faster, better) to deliver a "Linux" instance which you have complete control over and that is billed by use, the ultimate pay-per-use model (or in Dutch Pay-per-duur :-) ). The cool this about EC2 is it is truly elastic, you can have more or less CPU power depending on the need of your application and you can even roll out new servers on the spot within minutes.
Classic ASP models are using "eye to server" communication for this, a sysadmin or sometimes the customer can roll out a new server via a browser. The cool thing about EC2 is that this doesnt have to be restricted to "eye to server" communication but due to use of API's it can be "server to server". This is big! If a human has to roll out a new server, it means he has to know that the current capacity id too low. And humans will mostly find out so by paging from a server or some other communication, but always triggered by reading output from a server! So why not let the server / application decide it has to use more capacity? Server to server communications via an API.
EC2 is also reliable, as reliable as Amazon.com is itself. And most of all, it is rather cheap. If you utilize a full blown "instance" (1.7Ghz x86 processor, 1.75GB of RAM, 160GB of local disk, and 250Mb/s of network bandwidth) you will pay around 70 dollars. But most likely you will have some peak ond low hours, so you will pay less per server in most cases.
As Roland said, it was only a matter of time before someone successfully used EC2 for a Drupal site and sure there is one. In fact only one month after Rolands prediction, there was a Drupal site at EC2 ... about EC2! with a cool name as well: elastic8.com/.
Yes, Elastic8.com is running on AWS:
[root@tug ~]# whois `host www.elastic8.com | grep "address" | awk '{print $4'}` | grep -i netname
NetName: AMAZON-AES
Now here is where it gets interesting. Drupal -the leading CMS- has something we call throttle-ing. It means that if your site's load has exceeded some parameters, the site becomes more static and you loose some functionality. This way your site has a better probability it will survive a temprary huge increase of users. However, it does so by giving more pages with less functionality. This is good but not the best option. What one wants (pending budget) is that more resources are available when under load so you can deliver more pages with the same functionality!
Think about it; using the thottle API not to have less functionality but more servers! It wouldnt be very hard to make this I think. Would be a great feature request and a big hit fro Amazon if this gets in.
You could for example use 1 server with both Apache/PHP/Drupal and MySQL running on it and when the load increases dynamicaaly roll out a server, migrate the database to it, make a new connection and continue serving pages. I dont know however how -if at all- this would scale to n-frontend webservers and n-MySQL clustered server. But it sure is nice to dream about: "reverse throttling!"