How would it be more complicated with redundant hardware? Also, it might not be more expensive if you use something like Linode. Linode is not supposed to be "cloud" AFAIK -- those VMs sit on a single "statically allocated" box. AWS is supposed to be "cloud" in the sense that VMs can migrate between physical machines automatically.
I am searching for "aws automatic failover", but some sites seem to be down, probably due to the AWS outage :)
http://www.quora.com/What-is-the-best-automated-single-serve...
My setup just involves an autoscaling pool of web front ends connected to a mysql instance in the back and two micro instances running gluster.
Migrating to another zone involves promoting a mysql slave in another zone, creating a new web front end pool and spinning up the gluster instances. This is all in scripts I wrote. But having those redundancies available on demand at no cost when they are not used is very handy.
I do have a linode for some other projects and I may rather have this site on linode. I am not sure about having linodes spinning up and down on-demand when traffic spikes. Do they support hourly charges for short term use like this?
My primary problem at linode is getting lots of storage space. In one of my linode sites I have an s3 bucket mounted over fuse in write only mode and redirect requests for them to the s3 url. This works well in limited circumstances.
Real redundant hardware may not be more complicated, just more expensive. I do that too.
But it isn't something built-in with regard to fail-over handling, etc.
I have a highly available application running in EC2 and I have multiple instances ready for failover and scripts triggered by monitors to move into another zone if the whole zone goes bonkers. This would be much more expensive and complicated if I needed to have dedicated redundant hardware in two geographically separated datacenters.