Let’s say that we are about to build an web application where high availability is top focus. Our customers are companies, so downtime are equal to loss of revenue for everyone involved.
To sum it up, we need to be online at all times to keep everyone happy. So, from a very basic perspective, what techniques should we be looking at to do this?
We have pretty much no preferences besides that we will be using PHP to keep developing speed high, so we’re totally open for new platforms of data storage and what else is out there to make it happen.
Your answer is very appreciated! Thanks a lot!
You need to consider both hardware and software for this.
Regarding hardware, your best bet is probably to pick a hosting provider with the necessary experience, like Rackspace (I have made good personal experiences with them, but there are lots of others). This will not come cheap. You will need fully redundant hardware to survive the failure of any one component – multiple servers (at least two), each with multiple disks, network cards, fans, power supplies – you get the picture.
Regarding the software – make sure you build it with scalability in mind. If it’s your run-of-the-mill web application, using the MVC paradigm and keeping the separation clean will go a long way in ensuring that you can scale your application across the multiple servers you will need to run.
The hardest part is usually the database, since you can’t just run two. So look into a master-slave setup with automatic failover, or even a cluster.
A number of books are available for this topic, here’s just one of them. Good luck!