by Jason Rexilius
This presentation is on the technical elements of the web transaction model that impact the design and architecture of a geographically distributed HA web cluster.
There are a number of approaches to building scalable, highly-available web applications. As with most things there are trade-offs between cost and goals and the nature of the application involved can have a significant impact on these choices.
Web applications today can be grouped into a few major categories:
Each of these, obviously, has differing demands and constraints. The bottlenecks and costs will change with each category as well as with the nature of the data and usage patterns. External constraints such as data intergity tolerance, performance tolerance, and integration can also alter the model quite a bit.
Typically one or more of the following approaches are used to achieve scaling, performance, and/or availability beyond a single node:
There are a few other cutting-edge or non-mainstream approaches such as DB connection clustering (RAIDb), high-performance caching, distributed file systems, and the like.
To clarify, the term transaction will be used loosely to describe a logical Input/Processing/Output sequence regardless of method, protocol, or application. So transaction can mean an HTTP Request/App Server Processing/HTTP Reply sequence as much as a SQL update in an RDBMS.
The sequence of events and elements involved in an atomic web transaction are as follows:
So the elements in this sequence are:
Additionally (although they are truly just another piece of application logic), there are concepts of (Access Control):
Given an application profile, requirements and constraints you can start to design a system that mitigates the choke points and break points in the elements of the web transaction model. A few other real-world considerations can come into play that should be accounted for in the design. A partial list follows:
common problem spots are highlighted in yellow..
dotted lines are implicit flow communications, solid lines are explicit..

Here are some really great presentations on existing approaches:
This is usefull background information to extending the above approaches:
The current state of art provides the ability to scale horizontally by adding nodes to a local cluster. By leveraging LVS and a few other platform technologies High Availability can be achieved as well as Scaling. And by following tuning and design best practices one can achieve reliable Performance.
But what about the constraints of the single data center. Bandwidth saturation, physical distance latency, facility outages, DoS, local disaster, fire, theft, ISP failures..
lions and tigers and bears, oh my..
To achieve extreme high availability, massive scaling, optimal performance and mitigate vendor issues it is desirable to go beyond a single data center or service provider.
This is where geographically distributed clusters of clusters comes into play.
It shares technical challenges and approaches with grid computing but it is largely assumed that grid computing means shared resources, which, is more of an organizational distinction.
And now for The Approach For A Globally Distributed Web Cluster