Guidelines: Architectural Analysis for J2EE Applications
Topics
Introduction
Architectural Analysis is where
the Software Architect determines
how to best leverage the technologies provided by the J2EE
platform to meet both the functional and nonfunctional requirements
of the system. This guideline discusses some of those technologies.
J2EE Deployment Configurations
J2EE supports a number of
deployment configurations. Selecting a particular deployment
configuration is an important step in Architectural Analysis as it becomes
the foundation on which the initial architecture is based.
Selecting a J2EE deployment configuration drives the definition of the
initial Deployment Model. The
selected J2EE deployment configuration defines the configuration of physical
nodes (that is, machines) and logical nodes (J2EE
containers). This is where you decide whether or not you have
a separate Web server and an EJB server, and whether your clients are
browsers using HTTP or are fat application clients.
Each of these deployment configurations exhibits different characteristics,
so one should be selected based upon a number of factors. Some factors
that should be considered when selecting a deployment configuration include:
maintainability (how do you isolate changes in one tier so they don't
affect other tiers, how easy is it to deploy upgrades?), performance and
scalability (how easy is it to add additional computing resources?), and
reliability (what happens if one of the resources goes down?).
The selection of a deployment configuration constrains a number of other
architectural decisions regarding the architectural mechanisms that must
be defined, the application's concurrency (see activity:
Describe Concurrency), and the application's distribution (see activity:
Describe Distribution).
J2EE Mechanisms
The J2EE platform provides
a number of mechanisms that support the development of multi-tier enterprise
systems (persistency, inter-process communication, transaction management,
security, etc.). During Architectural Analysis, the Software Architect
defines what needs to be built, as opposed to what will be provided by
the J2EE platform.
Effective management of application state is an important aspect of designing distributed applications.
For an overview of some of the common design considerations and mechanisms for state management in a J2EE application, see
Guidelines: Designing State for J2EE Applications.
|