From the article:
Scaling a three-tier architecture is not an obvious task... To paraphrase Amdahls's Law, a system scales only to the degree its weakest link scales. As more clients access the presentation tier, if those presentation requests must also access the business logic tier, the business logic tier must also scale along with the presentation tier. And if the business logic relies on data stored in the database, then the database must scale up in tandem with the presentation and business logic tiers.The solution might be found in Javaspaces, a specification that's been around for quite some time but has only recently really found any traction in the marketplace. Part of the justification for a grid model can be found in applications that require access to a large amount of data quickly: "...they must perform often compute-intensive processing on that data fast. To allow such systems to scale, it is advantageous to place the computation as close to the data as possible. Placing business logic in a separate tier from the database layer, especially if that tier corresponds to physical separation, prevents such systems from scaling. Instead, these applications require breaking down the barriers between the various architecture tiers."
The result is an architecture that provides a data grid with a JavaSpace-based interface that allows reading and writing data to and fro the data grid. Clients of this grid can belong to a presentation layer, such as Web servers allowing one to submit jobs and present the results, or even other data grids that coordinate work in support of a common operation. Such data grid elements can even be federated into a larger grid.What do you think of the concept? (Editor's note: It's unclear to me whether Mr. Sommers actually meant to "wither" the tiers in the title - as in, make them dry up and blow away - or if he was asking "where the tiers were," which would mean using "whither the tiers" instead. I like word games, so I appreciated the title regardless.)
Data grid clients access the grid only through proxy objects. JavaSpace proxies are Java objects that can incorporate logic to route requests for data access or data input to the appropriate node, although such dynamic transaction routing is not part of JavaSpaces. Taking advantage of Jini's dynamic code mobility feature, such application logic does not occupy its own architecture tier, but is instead downloaded to JavaSpace clients at runtime.
While the space-based paradigm has proven to scale both the analytic and data-flow models, it requires a unique programming model that developers may not be familiar with. In addition, JavaSpace nodes must be installed and configured correctly. Several commercial JavaSpaces implementations help solve these challenges...