Web optimizations - part 1 - What is a cluster?

I'm not going to talk about a star cluster obviously, (although I'd like that :) ) but about a server cluster. Basically we're talking about a bunch of servers that work together to perform certain tasks.

These tasks can vary from doing file operations, running databases, to doing some sort of complex math calculations.

Whenever you have too much work for one single server and you think about adding another server to help handle the problem faster, before you know it, you've just started your own cluster. A server cluster is not a well defined term that you can look up in a dictionary and get a mathematical equation that defines it, but rather a general reference to "team work" when you talk about servers.

Are there types of clusters? I would separate a few usage scenarios to explain some different ways in which you can look at the architecture of the whole system, just remember, those are my classifications so don't take them literally .

The most important thing in designing a cluster is whether you need real time synchronization or not. Let's consider the following 2 examples:

1. You have a file backup system in place.
The main system submits the backup file to the cluster entry point which in turn would save the file on multiple servers for data redundancy. You wouldn't care normally to see those files on all the backup servers simultaneously very fast. You can leave the system do it's job and eventually, 3 months later, when your main hard-drive would crack, you would query one of those servers for the right backup. You're probably more worried about the system being able to push backups fast if you constantly have a high backup file queue.

2. A stock exchange website handles visitors with multiple entry servers. An operation done by one user should be, most likely, simultaneously available to all the others.
I don't think it's a good idea to show a graph of some share price evolution and on each refresh you would see it differently depending on which server you ended up. This is a case where you badly want real time synchronization.

After considering this division aspect, then you can define cluster types based on how many types of cluster tasks you can think of, like: file server cluster, database cluster, web server cluster, video streaming cluster, cancer cell study cluster, asteroid path calculation cluster, etc.

It is important to know from the start that there is no wonder cluster solution to suit any task out there. You need to plan for what you need and acquire or build the right cluster technology accordingly.

Technology: 

Add new comment