Application Architecture...
Applications architecture is one of several architecture domains that form the pillars of
an enterprise architecture or solution architecture. Note that the term "application
architecture" (without the s) is commonly used for the internal structure of an
application, for its software modularisation.
Applications Architecture is the science and art of ensuring the suite of applications
being used by an organization to create the composite application is scalable, reliable,
available and manageable.
One not only needs to understand and manage the dynamics of the functionalities the
composite application is implementing but also help formulate the deployment strategy
and keep an eye out for technological risks that could jeopardize the growth and/or
operations of the organization.
The applications architecture is specified on the basis of business requirements.
This involves defining the interaction between application packages, databases, and
middleware systems in terms of functional coverage. This helps identify any integration
problems or gaps in functional coverage. A migration plan can then be drawn up for systems
which are at the end of the software life cycle or which have inherent technological risks.
Applications Architecture means managing how multiple applications are poised to work
together. It is different from software architecture, which deals with design concerns
of one application.
Strategy by definition is a stance and does not involve
any action. Application Architecture Strategy involves ensuring the applications and the
integrations align with the growth strategy of the Organization. If an organization is a
manufacturing organization with fast growth plans through acquisitions, the application
architecture should be nimble enough to encompass inherited legacy systems as well as
other large competing applications.
Applications can be classified in various types depending
on the Application Architecture Pattern they follow.
A "pattern" has been defined as: "an idea that has been useful in one practical context
and will probably be useful in others”.
To create patterns, one needs building blocks. Building blocks are components of software,
mostly reusable, which can be utilised to create certain functions. Patterns are a way of
putting building blocks into context and describe how to use the building blocks to address
one or multiple architectural concerns.
An application is a compilation of various functionalities all typically following the same
pattern. This pattern defines the application’s pattern.
Applications typically follow one of the following industry-standard application architecture
patterns:
- Client-Proxy Server: Acts as a concentrator for many low-speed links to access a server.
- Customer Support: Supports complex customer contact across multiple organisations.
- Reactor: Decouples an event from its processing.
- Replicated Servers: Replicates servers to reduce burden on central server.
- Layered Architecture: A decomposition of services such that most interactions occur only
between neighboring layers.
- Pipe and Filter Architecture: Transforms information in a series of incremental steps or
processes.
- Subsystem Interface: Manages the dependencies between cohesive groups of functions (subsystems).
- Self-Service: Users accessing transactions on a 24x7 basis (a.k.a. user-to-business)
- Collaboration: Users working with one another to share data and information (a.k.a. user-to-user)
- Information Aggregation: Data from multiple sources aggregated and presented across
multiple channels (a.k.a. user-to-data)
- Event-Centric: Data events (which may have initially originated from a device, application,
user, data store or clock) and event detection logic which may conditionally discard the event,
initiate an event-related process, alert a user or device manager, or update a data store.
- Enterprise Process-Centric: A business process manages the interactions between multiple
intra-enterprise applications, services, sub-processes and users.
- Bulk Processing: A business process manages the interactions between one or more bulk data
sources and targets.
- Extended Enterprise: A business process manages the interactions between multiple
inter-enterprise applications, services, sub-processes and users.
The right application pattern depends on the organisation's industry and use of the component
applications. An organisation could have a mix of multiple patterns if it has grown both
organically and through acquisitions.
An application architect is a master of everything application specific in an organization.
An application architect provides strategic guidelines to the application maintenance teams
by understanding all the applications from the following perspectives:
- Interoperability capability.
- Performance and scalability.
- Reliability and availability.
- Application lifecycle stage.
- Technological risks.
- Number of instances.
The above analysis will point out applications that need a range of changes – from change in
deployment strategy for fragmented applications to a total replacement for Applications
at the end of their technology or functionality lifecycle.
Understand the system process flow of the primary business processes. It gives a clear
picture of the functionality map and the Application Footprint of various applications
across the map.
Many organizations do not have documentation discipline and hence lack detailed business
process flows and system process flows. One may have to start an initiative to put those
in place first.
Every organization has a core set of applications that are used across multiple divisions
either as a single instance or a different instance per division. One should create a
solution architecture template for all of the core applications so that all the projects
have a common starting ground for designing implementations.