Scaling for the Web
So far, all the scalability and concurrency techniques we discussed were involved with scalability within the confines of a single server or machine—in other words, scaling up. In real world, applications also scale by scaling out, that is, by spreading their computation over multiple machines. This is how most real-world web applications run and scale at present.
We will look at a few techniques, scaling out an application in terms of scaling communications/workflows, scaling computation, and horizontal scaling using different protocols.