Introduction
Architectural Analysis is where the Software Architect determines how to best leverage the technologies provided by the Java 2 Platform Enterprise Edition (J2EE) Overview 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 J2EE 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 Task: Describe the Run-time Architecture), and the application's
distribution (see Task: Describe Distribution).
J2EE Mechanisms
The Java 2 Platform Enterprise Edition (J2EE) Overview 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 Guideline: Designing State for J2EE Applications.
|