31 October 2006 - 22:30SOA and N-tier architectures
Later Edit: I would take what is written below with a grain of salt. It is not N-tier architectures which gave birth to SOA, but rather the drop in communication costs which made feasible connecting various applications which previously could not be connected. At about the same time EJBs were released and coincidentally they became the main way to connect applications. As time moved on the EJB complexity started to become the main cost of communication (once bandwidth became cheap the costs of communication moved up the stack onto the protocols used for communication) and competitors to EJBs (Spring, REST, etc…) started to appear and claim marketshare. As the costs of communication between nodes went down (first the physical costs, then the costs of connecting to the applications thru a thick stack) more and more applications started to get inter-connected and issues such as overlapping responsabilities between applications, release management in a distributed environment, etc… started to become the main costs of communication. SOA governance (a set of policies for interactions between applications and enforcement mechanisms for these policies) is the main attempt at solving these problems and at pushing these costs down.
The term N-tier architecture used below is a bit stretched: while most of N-tier applications consists of 3 tiers (presentation, business logic, data storage), I used the N-tier architecture term for an architectural style in which functionalities are assigned to a tier and each tier is hosted and developed on a dedicated application, a tier being more or less close to a node.
And now the original post:
The more I read about SOA the more I get the feeling that it grew out of N-tier architectures and that one its boosters was the so maligned EJBs.
When you are looking at an N-tier architecture you will probably notice the communication between various nodes providing various services to each other: this node gives you data on commodities, another one on users, another one on tax transactions, etc… The result of such an architecture is a proliferation of services on various nodes, services which have to be managed one way or another. In comes SOA to the rescue which manages the relationships between the services provided by various nodes thru governance (it is a lot more complex that this, but let’s keep things simple). It is the distributed nature of the N-tier architecture that created all these conversations between nodes, conversations which were then turned into services, services which started being managed with an SOA mind-set.
I think I am right when I say that SOA comes from distributed computing and that once the interaction between various computing nodes reaches a certain threshold it becomes mandatory to manage this interaction. If I was to look at the various distributed computing platforms I would pick EJBs as the ones which were dominant in the last 4-5 years, the ones with the greatest mind and market share. The built-in distributed nature of the EJBs has been frequently denounced as resource-hungry, backward, one-size-fits-all design. It would be ironic if this very nature played a part in the birth of the SOA paradigm, a paradigm that promises to start a whole new era in IT development.
What would be interesting to watch is if the various design patterns that the EJBs have spawned (business delegate, service locator, data transfer object, etc…) and that were sometimes denounced as band-aids to EJBs’ horrific problems will appear in one form or another in the IT environment which enables SOA. After all, the above designs patterns are mostly concerned with distributed computing.
Later edit: Communication between various systems existed long before EJBs, this is for sure. However, the EJBs increased the communication between various systems due to their distributed nature.
No Comments | Tags: Development