Performance Engineering

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.