Availability Guide for Application Design
Designing Applications for Change
Availability Guide for Application Design—525637-004
10-6
Considering Portability Requirements
particularly at the more complex lower layers, is normally the task of specialized
infrastructure subsystems that represent more compact porting challenges.
When implementing an application with a platform-specific version of a communication
subsystem, the greatest possible portability problem arises from the semantics of
asynchronous request mechanisms rather than the simple syntax of the API
commands. The use of signaling, messaging, or input/output synchronization facilities
specific to one environment for management of request availability or request
completion might require substantial redesign for platforms where an alternative
mechanism is needed. Therefore, direct access to the API should be localized in a
subcomponent isolated from the application logic that processes the content of the
received request.
Application Architecture
Application architecture must ensure the modularity of the application to maximize the
maintainability and adaptability of the application’s functional logic and to fully exploit
the architecture of the underlying platform. The architecture of an application has two
dimensions:
•
Vertical
•
Horizontal
The vertical architecture refers to the internal layering of an executing unit. Because
this is more closely related to engineering, it is considered in Application Engineering
on page 10-10.
The horizontal dimension, the focus of this subsection, includes:
•
The execution units that can be distributed across the processing resources of the
system
•
The interprocess communication mechanisms by which the execution units
synchronize
•
The associated shared resource management that coordinates usage between
concurrent executions of the application logic
The horizontal application architecture exploits the underlying platform architecture. It
is therefore necessary to understand the basics of the major platform architectures and
the requirements they place on developers.
Platform Architectures
There are three basic platform architectures:
•
Uniprocessor
•
Symmetric multiprocessor
•
Clustered