Mike is a server and systems guru. He used to be a support technician for Allaire and Macromedia. After that, he helped found Webapper. When it comes to things like JVM tuning, advanced server configuration, application bottleneck troubleshooting and a lot more, few come close to Mike's capabilities.
I am really trying hard not to make this blog post boring and as a died in the wool server engineer, that is fairly difficult for me. In reality though, this is a fairly important topic, in fact very important to anyone thinking about High Availability (HA). In reality all deployed websites have to have some aspect of HA. By the essence of what they are and do, they need to be available when needed. So need to be "highly-available".
What I am considering in this post are two related yet different overall concepts. The first is called "N-Tier" and here is a simple diagram showing a possible HA infrastructure...
The first point of conjecture or thought here is how many tiers actually are there? My view is that where data passes from one device-segment to another we can class that as a tier. This is marginally inaccurate though as in the public Internet, there can be many tiers by that token. In this case and because we do not know exactly how many hops data will take in passing to and from End Users we can really only consider the Internet as a single tier. Here is some explanation of each tier as I have encountered them in the work I have done over the years.
So in this illustration we have looked at a typical High Availability (HA) environment in an "N-Tier" paradigm. This is the most typical kind of HA infrastructure and mostly varies only in having more or less hardware. There is no doubt that lots of equipment like this offers good levels of availability although that comes with challenges, some of which I have listed above. One thing that is certainly impacted by this sort of infrastructure, in my experience, is performance. The more pieces of hardware that data has to pass through the less efficient the performance. I realize that this sounds somewhat counter-intuitive to others in this series of articles, this is not my intent if so.
There is another school of thought emerging which is another way of looking at application-data architecture and flow. This is called "N-Layer" and in essence concentrates on the kind of data or state of data as it passes through an application. That will the subject of my next post in this series and it introduces some controversial notions and concepts.