Over the years, we've hosted our websites with a variety of shared hosts, eventually moving towards hosting on a local T-1 on our own server. This had lots of advantages and was our most reliable solution. We went two years with literally no downtime at all, but then were hit by two eight hour plus T-1 outages which basically crippled us the first time. By the second time, I had some redundancy in place that prevented all of the sites from being out. But, because of expense, it was only used for our larger customers that were paying for increased redundancy.
About a month ago, I switched everything over to Amazon EC2. It's a little early to tell, but we haven't had any downtime and the service has worked flawless. In the past, I had some bad experiences where an Ubuntu update caused a major configuration change and once even a non-bootable condition. With this setup, I can just start another instance and volume and use it to test updates or run updates on the real instance and have the other as a standby. Last night, I ran updates without any worries of an outage. Right now the only downtime, is when I create my AMI image and it's only about a 10 minutes per week downtime.
When I get some time, I'll detail some of my setup.
