Related Entries

Quick Ref: SVN command line
Git with Dropbox
Cisco's new urbanism
Portable development links
Wish I had this 10 years ago

« JDeveloper 10g - Look and Feel
» Oracle 10g launch

Good middle-tier architecture

Finally! Someone has the guts to say things that are not fashionable.

Satya Komatineni writes:

“ IT spends a considerable sum of dollars in creating company-wide frameworks as part of building their business applications. This is especially true for typed languages like C++, Java, and C#. The core of this spending goes towards coming up with an architecture for the middle tier. How does one know if the resulting architecture will serve the needs? This article examines the qualities of a good middle-tier architecture and answers how the well known middle-tier architectures that are in vogue today stack up against this analysis. The middle-tier architectures analyzed include stored procedures, SOA, EJBs, COM+, and SQLJ. ”

Several points raised in the article resonate very strongly with me.

It is only with trepidation that one could meekly suggest stored procedures as an effective model (not necessarily the ultimate physical implementation) for the middle-tier architecture.

Also, database servers have been around for a while and are amazingly stable and maintainable. Application Servers and EJB Servers are fashionable these days, but none of these are as mature and proven as, say, an Oracle database. If _all_ I need is to get data from a database and process it; and if I’ve already made a substantial investment in standardizing on a particular database engine, there is no good reason for me to add the additional complexity of a middle layer. Most of the time, it is not the engineering finesse that counts, but the time to market and what the users can use. Essentially, it is the benefits that matter, not the features.

Application Servers are very useful for scalable and distributable enterprise applications. A prime example of middle tier making things much more easier can be see in Oracle 9iAS Forms. Older version of Forms (2000 - 6i) used to follow classic Client/Server model. Rolling out these to enterprise users used to be such a pain - and 90% of that pain was in getting each desktop configured with Oracle client libraries. A standard solution was to deploy Forms on a terminal server. Now, with 9iAS (Application Server from Oracle), there is complete re-use of components among Forms and web applications.

However, efficient component design takes good project management environment. IT departments may not have enough resources and expertise to set up such environments. In a "normal" IT department, quick and small projects tend to rule. For such situations, even if developers and architects desire a complex architecture, they may not have enough resources --mainly time-- to implement it. So, people will tend to use quick solutions that take less time to code --as opposed to making a minimum of 4 files for each EJB:-)

Because of this overhead, most IT departments are moving away from in-house development towards outsourcing; just like how courier and concierge services are usually outsourced. This trend might result in tremendously over-engineered solutions, while every vendor tries to establish a foot-hold in the software as a service paradigm. As long as IT managers don’t have the guts to speak up to the vendors saying that they don’t want to spend exorbitant sums to re-engineer perfectly working solutions to reap intangible benefits in some distant future, this trend will continue.

The above observations lead me to predict that the future of EJBs and COM+ lies in "tierless computing." In my mind, they are heading there slowly; I believe COM+ is very close to being there. Let me elaborate: tierless computing states that a business component or a task can run independent of the logical tier in which it is embedded.

Satya goes on to list the points one need to consider for a good middle-tier architecture.

  1. hi satya,
    i hav read the middle-tier documents o ur site, i'm going to work in a good organization and there is a minimum need of knowing abt middle-tier and i have read that it solves some of the problems and more benificiary from client-server can u please send me a brief description of its advantages and how does it solve the performance issues . i'm using oracle db.

    pl.. make a note to send me a doc on
    middle-tier ?
    why middle tier?
    how do we access the middle tier?
    dir structure of middle tier?

    waiting for ur response

    bye then,

    Posted by: KIRAN on December 24, 2003 04:06 AM
  2. Hi.
    I work in a industry organization and we're using a software that implement middle tier.
    The problem is sometimes this software bring us an error of this middle tier. This software work with Client - Server Arquitecture. We are using MS SQL server 7.0.

    What would provocate this error?, is a patch problem ?, is a Net error ?

    Posted by: Gabriel Galvan on January 24, 2004 12:19 PM
  3. I want a brief explanation
    about the two tier architecture,three tier architecture,middle tier architecture....

    also the advantages and disadvantages

    Posted by: Manikandan on February 11, 2004 06:19 AM
  4. Can anybody tell me how a three tier applications works in a web based application

    Posted by: shazlee on April 23, 2004 10:36 PM
  5. Hi

    Could you please give me a good idea ( detain enough for a Project Manager to know about) - about a EJB component sitting at middle tier. How it constructed and how it works and how best we can use it?


    Posted by: K Venkateswaran on July 6, 2004 12:50 PM
  6. I want a brief explanation about the two tier architecture,three tier architecture,middle tier architecture....also the advantages and disadvantages of using these

    Posted by: srikanth on July 23, 2004 05:31 PM
  7. Hi,
    I would like to know the components of Middle Tier Architecture?

    Posted by: Sunil.Ganesh on September 1, 2004 11:52 AM
  8. i wanna ask about the processing, if there's a request from client and who will process the data from data base server? is it the database server itself, or the database server gives the requested data to the application server and then the application server will process it before giving it to the client? will it improve the performance or the speed of the response time to the client?
    can somebody help me by answering my question?
    and where can i get the literature about this?
    thank you so much...

    Posted by: Robin Suprapto on September 25, 2004 09:13 AM
  9. Hi
    Could you please send me a document on
    middle-tier ?
    why middle tier?
    how do we access the middle tier?
    directory structure of middle tier?
    the components of Middle Tier Architecture?
    difference bitween two tier architecture,three tier architecture and middle tier architecture?
    Advantages of middle tier?

    Posted by: lalitha on September 30, 2004 11:33 AM