|
Complete
We recommend Client/Server
Software Architectures as prerequisite reading for
this technology description.
The three tier software
architecture (a.k.a. three layer architectures) emerged in the
1990s to overcome the limitations of the two tier architecture
(see Two Tier Software
Architectures). The third tier
(middle tier server) is between
the user interface (client) and the data management (server)
components. This middle tier provides process management where
business logic and rules are executed and can accommodate hundreds
of users (as compared to only 100 users with the two tier
architecture) by providing functions such as queuing, application
execution, and database staging. The three tier architecture is
used when an effective
distributed client/server
design is needed that provides (when compared to the two tier)
increased performance,
flexibility,
maintainability,
reusability,
and scalability,
while hiding the complexity of distributed processing from the
user. For detailed information on three tier architectures see
Schussel and Eckerson. Schussel provides a graphical history of
the evolution of client/server architectures [Schussel
96, Eckerson
95].
The three tier architecture is used when an effective
distributed client/server design is needed that provides (when
compared to the two tier) increased performance, flexibility,
maintainability, reusability, and scalability, while hiding the
complexity of distributed processing from the user. These
characteristics have made three layer architectures a popular
choice for Internet applications and net-centric information
systems.
A three tier distributed client/server architecture (as
shown in Figure 28) includes a user system
interface top tier where user services
(such as session, text input, dialog, and display management)
reside.

Figure 28: Three tier distributed client/server
architecture depiction [Louis
95]
The third tier provides database management functionality and
is dedicated to data and file services that can be optimized
without using any proprietary database management system
languages. The data management component ensures that the data is
consistent throughout the distributed environment through the use
of features such as data locking, consistency, and replication. It
should be noted that connectivity between tiers can be dynamically
changed depending upon the user's request for data and
services.
The middle tier provides
process management
services (such as process development, process enactment, process
monitoring, and process resourcing) that are shared by multiple
applications.
The middle tier server (also referred to as the
application server) improves performance,
flexibility, maintainability, reusability, and scalability by
centralizing process logic. Centralized process logic makes
administration and change management easier by localizing system
functionality so that changes must only be written once and placed
on the middle tier server to be available throughout the systems.
With other architectural designs, a change to a function (service)
would need to be written into every application [Eckerson
95].
In addition, the middle process management tier controls
transactions and asynchronous queuing to ensure reliable
completion of transactions [Schussel
96]. The middle tier manages distributed database
integrity by the two phase commit process (see
Database Two Phase Commit). It provides access to resources
based on names instead of locations, and thereby improves
scalability and flexibility as system components are added or
moved [Edelstein
95].
Sometimes, the middle tier is divided in two or more unit with
different functions, in these cases the architecture is often
referred as multi layer. This is the case, for example, of some
Internet applications. These applications typically have light
clients written in HTML and application servers written in C++ or
Java, the gap between these two layers is too big to link them
together. Instead, there is an intermediate layer (web server)
implemented in a scripting language. This layer receives requests
from the Internet clients and generates html using the services
provided by the business layer. This additional layer provides
further isolation between the application layout and the
application logic.
It should be noted that recently, mainframes have been combined
as servers in distributed architectures to provide massive storage
and improve security (see
Distributed/Collaborative Enterprise Architectures).
Three tier architectures are used in commercial and
military distributed client/server environments in which shared
resources, such as
heterogeneous databases and
processing rules, are required [Edelstein
95]. The three tier architecture will support hundreds of
users, making it more scalable than the two tier architecture
(see Two Tier Software
Architectures) [Schussel
96].
Three tier architectures facilitate software development
because each tier can be built and executed on a separate
platform, thus making it easier to organize the implementation.
Also, three tier architectures readily allow different tiers to be
developed in different languages, such as a graphical user
interface language or light internet clients (HTML, applets) for
the top tier; C, C++, SmallTalk, Basic, Ada
83, or Ada 95 for the
middle tier; and SQL for much of the database tier [Edelstein
95].
Migrating a legacy system to a three tier architecture can be
done in a manner that is low-risk and cost-effective. This is done
by maintaining the old database and process management rules so
that the old and new systems will run side by side until each
application and data element or object is moved to the new design.
This migration might require rebuilding legacy applications with
new sets of tools and purchasing additional server platforms and
service tools, such as transaction monitors (see
Transaction Processing Monitor Technology) and Message-Oriented
Middleware. The benefit is that three tier architectures hide
the complexity of deploying and supporting underlying services and
network communications.
Three tier architectures have been used successfully
since the early 1990s on thousands of systems of various types
throughout the Department of Defense (DoD) and in commercial
industry, where distributed information computing in a
heterogeneous environment is required. An Air Force system that is
evolving from a legacy architecture to a three tier architecture
is Theater Battle Management Core System (TBMCS). Multi tier
architectures have been widely and successfully applied in some of
the biggest Internet servers.
Building three tier architectures is complex work.
Programming tools that support the design and deployment of three
tier architectures do not yet provide all of the desired services
needed to support a distributed computing environment.
A potential problem in designing three tier architectures is
that separation of user interface logic, process management logic,
and data logic is not always obvious. Some process management
logic may appear on all three tiers. The placement of a particular
function on a tier should be based on criteria such as the
following [Edelstein
95]:
- ease of development and testing
- ease of administration
- scalability of servers
- performance (including both processing and network
load)
Database management systems must conform to X/Open
systems standards and XA Transaction protocols to ensure
distributed database integrity when implementing a heterogeneous
database two phase commit.
Two tier client server architectures (see
Two Tier Software Architectures) are appropriate alternatives
to the three tier architectures under the following circumstances:
- when the number of users is expect to be less than 100
- for non-real-time information processing in non-complex
systems that requires minimal operator intervention
Distributed/collaborative enterprise computing (see
Distributed/Collaborative Enterprise Architectures) is seen as
a viable alternative, particularly if object-oriented technology
on an enterprise-wide scale is desired. An enterprise-wide design
is comprised of numerous smaller systems or subsystems.
Although three tier architecture has proven sound, the
supporting products implementing the architecture are not as
mature as other competing technologies. Transaction Monitors (TM)
are a valid alternative when reliability and scalability
requirements can not be fulfilled with existing multi layer
technology. Although TMs don't support modern development
paradigms like Object Orientation (OO) they are still quite useful
when massive scalability and robustness is needed.
Complementary technologies to three tier architectures
are Object-Oriented
Design (to implement decomposable applications), three tier
client/server architecture tools, and Database
Two Phase Commit processing.
For communication between potentially distributed layers some
middleware is needed. This middleware can be a Remote Procedure
Call (RPC) mechanism or a Message-Oriented Middleware (MOM),
depending on whether synchronous or asynchronous communication is
preferred.
The middle tier encapsulates business logic. Some of this logic
is application specific but a significant percentage is
organization or even domain wide. Domain Engineering and Domain
Analysis can be used to capture this inter-application commonality
and create a set of assets that can be effectively reused in
different application.
It should be noted that recently, mainframes have been combined
as servers in distributed architectures to provide massive storage
and improve security (see
Distributed/Collaborative Enterprise Architectures).
This technology is classified under the following
categories. Select a category for a list of related topics.
|
Name of technology
|
Three Tier Software Architectures
|
|
Application category
|
Client/Server
(AP.2.1.2.1)
|
|
Quality measures category
|
Maintainability
(QM.3.1)
Scalability (QM.4.3)
Reusability (QM.4.4)
Reliability (QM.2.1.2)
|
|
Computing reviews category
|
Distributed Systems (C.2.4)
Software Engineering Design (D.2.10)
|
|
[Dickman 95]
|
Dickman, A. "Two-Tier Versus Three-Tier Apps."
Informationweek 553 (November 13, 1995):
74-80.
|
|
[Eckerson 95]
|
Eckerson, Wayne W. "Three Tier Client/Server
Architecture: Achieving Scalability, Performance, and
Efficiency in Client Server Applications." Open
Information Systems 10, 1 (January 1995):
3(20).
|
|
[Edelstein 95]
|
Edelstein, Herb. "Unraveling Client Server
Architectures." DBMS 7, 5 (May 1994): 34(7).
|
|
[Gallaugher 96]
|
Gallaugher, J. & Ramanathan, S. "Choosing a
Client/Server Architecture. A Comparison of Two-Tier and
Three-Tier Systems." Information Systems Management
Magazine 13, 2 (Spring 1996): 7-13.
|
|
[Louis 95]
|
Louis [online]. Available WWW
<URL: http://www.softis.is>
(1995).
|
|
[Newell 95]
|
Newell, D.; Jones, O.; & Machura, M.
"Interoperable Object Models for Large Scale Distributed
Systems," 30-31. Proceedings. International Seminar
on Client/Server Computing. La Hulpe, Belgium,
October 30-31, 1995. London, England: IEE, 1995.
|
|
[Schussel 96]
|
Schussel, George. Client/Server Past, Present, and
Future [online]. Formerly Available WWW
<URL: http://news.dci.com/geos/dbsejava.htm>
(1995).
|
Darleen Sadoski, GTE
Santiago Comella-Dorda, SEI
Paul Clements, SEI
Frank Rogers, GTE
16 Feb 2000: Inclusion of multi-layer architectures and
net-centric systems.
10 Jan 1997 (original)
| Home | What's
New | Background &
Overview | Technology
Descriptions |
| Taxonomies |
Glossary & Indexes |
Feedback &
Participation |
The Software
Engineering Institute (SEI) is a federally funded research and
development center sponsored by the U.S. Department of Defense
and operated by Carnegie Mellon University.
Copyright
2007
by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/str/descriptions/threetier_body.html
Last Modified: 11 January 2007
|