I do wonder about building services on top of services on top of services. Since you have to multiply their availability, you get an overall level of service that's lower than each of its components. I think the answer for high reliability built on top of services will be to have each layer run off of multiple services (for example: storage on S3 AND local servers AND someone else's cloud disk) with seamless failover between them. Lots of work, but if you can't stand to be down, them's the breaks.