Question

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!

Was it helpful?

Solution

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!

OTHER TIPS

There are a few ways to address this question depending on a lot of variables:

  • go with a hosted solution
  • deploy virtual machines to have redundancy
  • use load balancing
  • raid array

All those combinations can help you.

If you decided to go with a hosted solution you would still want to do some of your own backups, in case your host goes down and you need to recover. If you deployed virtual machines you could also enforce some load balancing and have virtual machines prepared in case components go down.

Lots of redundancy, all the way to multiple data centres if you can never afford to be down.

You can also have a look at the different cloud services such as Amazon EC2 and Rackspace Cloud. You might then be able to pay only for the exact computing power you need ...

Also see:

http://www.2mhost.com/mission-critical-web-hosting.html

http://www.ihostxtremes.com/

http://www.netlocations.com/

http://www.mewebhost.com/

I personally highly recommend Azure App Service (which is a PaaS solution for building web apps).

img
(source: windows.net)

Also take a look at the following universal / isomorphic web application starter kit: https://github.com/kriasoft/react-starter-kit (disclaimer: I'm the author)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top