I'm working with an existing web application developed in Ruby with a MySQL back-end, but I think the generic hardware topology question will apply to a wide variety of server architectures.
I'm looking for a document / web resource explaining and detailing current best practice relating to organising the hardware within a server farm for delivering a web based application with a database back-end.
The current architecture is as follows;
HTTP Server (Apache)
|
Application Servers x 8 (Unicorn / Ruby-on-Rails)
|
MySQL Back-end (Master)
\
\
MySQL Slave (primarily for performing backups)
The proposed architecture needs to be more scalable than the above, including a load balancer in front of multiple HTTP servers, splitting the app servers between the HTTP server(s), multiple MySQL slaves to server read only requests (which will be controlled by changes within the application software)
The main aim is to have a more resilient system, using current best practice, and this is what has been suggested so far.
But, if anyone can suggest a resource for best practice within this type of environment, or propose an architecture which will give the resiliency, performance and scalability that we are after, I'd be most grateful :)
Dave