Our service needs to be highly available, so our infrastructure reflects this. Basically, we have a hosting provider that has 3 geographically separated datacenters within the same IP subnet. We have a clustered loadbalancer solution, with one loadbalancer in each datacenter, that monitor each other. When one loadbalancer goes down, another one picks up the same IP address of the one that went down, and the whole thing fails over to another datacenter.<p>Of course, the load balancers have a lot more webservers behind this, but this is what we consider a pretty highly availalbe solution for the front-end.<p>The problem is in the backend: how do you handle databases going down ? Do you make a master/slave setup like the loadbalancers I just described? Or a multi-master that sync periodically ? It all depends upon your requirements. So in the end, there is no best practice, there's just a good practice for your problem.