Most cost-effective method of achieving physical redundancy
lsc: 1. is the cheap way.   as someone else said, you can use BGP instead of dns for failover to improve downtime, but then it's no longer cheap.Personally, this is my preferred solution.  keep as much as possible in MySQL cluster and have the rest built on a central dev server and pushed out when there are changes.San is not cheap, and it's pretty easy to screw up the whole san.  It's still a single point of failure.  (I ran prgmr.com on a san for the first few years, and I switched away from SAN not because of cost, but because of reliability.  With a san, it's really easy for the new guy to accidentally trash everything.)so yeah, I'd do #1.   if you can use a active-active VPS, that's best, if you want to save money, run a smaller active-active site with ec2 images standing by (remember to test weekly)  -  the problem with 'cold' backups is that they are usually broken.  active active means they are up all the time.