In one of my previous answers, I mentioned that when designing a cloud service to connect to IoT devices, it would be best to make the servers redundant in some way so that if one data centre or server fails, the whole system still works.
Sean Houlihane pointed out that having true redundancy would probably double the costs for a provider, making it technically infeasible.
So, I'm interested to know how a cloud service (perhaps like the service used for the Nest thermostat, which went down in the S3 outage) could be made more reliable without duplicating every component, in a way that would be less disruptive to a company's business model.
The sort of device I'm thinking of is something like a smart thermostat that needs to synchronise data from a phone app (outside the home's local network) to the thermostat itself, and stores the state in cloud storage like S3.
What can I do to ensure that the cloud servers have a high availability without running two copies of every server in different locations?