|
Typical multi-layered applications are
very complex, usually based on multiple components and technologies
that go from the user interface to the database and multiple layers
in between. These layers can be based on frameworks developed in-house
or third party offerings, either commercial or open source. Loosely
coupled architectures based on SOA create additional complexities.
Finding the perfect balance between performance and trade-offs for
all these layers can be a challenging experience.
Performance engineering
is integral part of the creative process of architecting software
solutions. As such it can be described as
the verification and validation of architectural design options,
where they are prototyped and tested so that a decision can be
made based on the priorities and constraints defined for the application,
thus finding the ideal balance and best performance.
Early and rigorous performance analysis of applications is a critical
step in software architecture to guarantee that the developed components
and their assemblies will satisfy their operational requirements.
In
general, performance engineering is an interactive process, where
the software architect works closely with the developers
and the
perfmetrix performance engineer to better understand the options
and improve the overall performance and security of the application.
The
investigative process the team goes through during the software
architecture stage allows it to gain a very close knowledge of
the behavior of the application, to the point that one of the
deliverables typically included is the most appropriate configuration
of the
multiple
components that make up the application, fine tuned for the
expected work load in the production environment.
|