Death to the 3-tier architecture

machine_shopI was blog surfing this morning and came across a post at Bill de hÓra talking about web applications. I’ve suffered through too many software architecture meetings where 3-tier design was *absolute* only to be followed up a year later by software architecture meetings where our entire focus was on making our 3-tier solution *work*, *perform*, *scale*, etc. and addressing all of the customer issues we generated the year before.

Many large enterprise web applications tried really hard to implement a Physical Three Tier Architecture … The idea is that you have a physical presentation tier (usually JSP, ASP, or some other *SP) that talks to a physical app tier via some form of remote  method invocation (usually EJB/RMI, CORBA, DCOM) that talks to a physical database tier (usually Oracle, DB2, MS-SQL Server). The proposed benefits of this approach is that you can scale out (i.e. add more boxes) to any of the physical tiers as needed. 

Great, right? Well, no. It turns out this is a horrible, horrible, horrible way of building large applications and no one has ever actually implemented it successful. If anyone has implemented it successfully, they immediately shat their pants when they realized how much surface area and moving parts they would then be keeping an eye on.

The main problem with this architecture is the physical app box in the middle. We call it the remote object circle of hell. This is where the tool vendors solve all kinds of interesting what if type problems using extremely sophisticated techniques, which introduce one thousand actual real world problems, which the tool vendors happily solve, which introduces one thousand more real problems, ad infinitum…

It’s hard to develop, deploy, test, maintain, evolve; it eats souls, kills kittens, and hates freedom and democracy.

Source: Ryan Tomako (2005) quoted in a post on Bill de hÓra

image I can talk from experience that the more layers you have the more you will regret it in hardware costs and software costs but mostly in human costs. The ratio often is somewhere near 10:1 for the cost of people vs HW/SW - and that is just short term. The customization, maintenance, and administrative costs are insane. And the more people involved, the more oversight needed and the costs continue to go up. And the system is so complex that even a small amount of turn over in the staff can bring the solution to a halt so you need human redundancy which again adds to the cost.

So I agree with Ryan in that “it eats souls” and it may indeed have the blood of kittens on its hands. If not kittens, I bet more than a few heads rolled for the cost of a 3-tier solution. Unfortunately, the heads that chose 3-tier have long since been promoted and it is the workers left on the shop floor who have lost arms and legs to the 3-tier web application monsters.

Comments are closed.