When you are planning for a web application system architecture, there are a few things that you have to take note of.
So there are 5 common server setups as follows:
- Everything on one server
Having everything on one server is the most traditional way of having a web application done. This is the easiest method to get things done compared to the rest of the setups. The down side of this is that scalability is almost impossible.
- Separate database server
Separate database server means splitting up the web application from the database, where the database will reside on a standalone server and the same goes for the web application. This way you are able to scale the database server if you are getting way more traffic than you could have expected.
- Load balancer (reverse proxy)
The purpose of a load balancer is to balance the load of the incoming traffic to your web application. So having a load balancer can help you balance out the incoming traffic to the army of servers that you have. This also mean that you have to deploy multiple servers of your web application.
- HTTP Accelerator (caching reverse proxy)
This setup works very similar to the previous method, but the catch to this setup is that the load balancer actually caches the responses from the web application. So eventually if the same request occurs again, the load balancer is able to return the response in a shorter amount of time possible.
- Master-Slave database replication
This setup involves the database layer of the system architecture, where you have to two copies of your database on different servers respectively. There will be a master database and a slave database, where the master database is able to process both read and write operations and the slave database only able to process read operations. You must be wondering so how do we get the data synchronised across both databases? Thats where the key word master-slave database replication comes into the picture. Having this setup means, for every write operation on your master database, the changes will be replicated directly on to the slave database.
For more detailed information, do refer to the following link.