Big Step 1: Going Multi-Server

As products get successful, they grow. For client applications that run on someone’s computer, this doesn’t necessarily represent a huge challenge: just make more CDs. For network applications in general, and web products in specific, this presents a different challenge. There are two distinct points in the growth of a web application which represent step functions in the level of complexity. I call these points the Big Steps. Today, I’ll cover Big Step 1, going multi-server.

Big Step 1 is the moment where a web application outgrows the bounds of a single of a single host. The warning signs that this moment is approaching include the moment that you realize that you need to move back-end processes like your database, caching layer, or application server off your web front ends to keep the site together.

So, why does complexity spike at this point?

Up until this point, there are a lot of great shortcuts that you can use to make your application simple:
- You can count on having a single file system that’s always going to be there.
- IPC and shared memory work for tying together applications or systems.
- Your users always come back to the same web server process, so it is easy to use java or PHP sessions to store user data.
- There is no need to be concerned about network equipment like server load balancers.

Do any of your applications take advantage of any of the things mentioned above? Would you know how to re-engineer around them? Here are a few of the typical ways people deal with the above issues:

- Using NFS or some sort of other shared file system to try to maintain one single file system’s worth of stuff
- Moving from things like shared memory to network communication
- Using ’sticky’ load balancers to keep those users coming back to the same server

Most of these will allow you to expand to a second, third, or fortieth server. Eventually, however, most of them will hit their maximum as well. At very least, most of the interim solutions begin to cause problems when you reach Big Step 2, which I’ll discuss next time.

Leave a Reply