Tuesday, February 19, 2013
This handshaking progression kept changing until we reached a point where shaking hands was more of a secretly coded series of gestures using fingers, knuckles, fist bumps, elbows, toe nails, shoulder taps, and pinky swears. OK, I made that last part up. Still the complexity of saying "nice to meet you" has overwhelmed my fine motor skills.
Complexity has infected application architecture as well and I'm wondering if it is it time to declare the death of the three tiered, or n-tiered architecture? Has it become too simplistic?
There is an architectural discussion going on that says that although the three-tiered design continues to be a sound conceptual model, in a very practical sense it has been replaced by models represented by many-to-many end points. Gartner Research has a wonderful article out on this.
Consider that a modern application is comprised of a web application that may be divided into static web parts and one or more application server parts. These applications tend to be front ended by browsers, mobile devices, B2B process engines, social applications, and other devices such as voice response units.
These same server-side business applications may have as their back-ends, a relational database, CICS transaction, BPM processes, flat files, document repositories and / or other B2B process engines. Conceptually, these are three-tiered applications, but practically these are dynamic, multipoint, event-driven, processing environments.
I am willing to bet that since the one tiered / monolithic architecture is still used today (defined as a single application that processes as a batch the records in a flat file), that two and three, and n-tiered applications are going to be around a long time. In fact, my retirement strategy is counting on having endless part time work fixing these apps, so please don't kill them off just yet.
I’m not prepared to declare the death of the three-tiered model (Please, please - I’m going to need the work), but reality suggests we embrace the newer paradigms, which should translate into better development methodologies, QA processes, and real-time monitoring to say the least.