Engineering applications for performance is no trivial task and am sure you will agree with me on that. It all starts with the basic fundamental set of questions at design –
- Do you have an understanding of the overall Non Functional Requirements
- Do you have an understanding of the system as a whole
- Do you have an understanding of the tools, processes and people capability required to meet the documented Non Functional Requirements
Have said all of the above it’s of paramount importance that Performance Engineering be built into the delivery processes as a proactive approach to engineering performance into the system as compared to the traditional reactive approach of trying to retrofit performance into the system when the system is nearing go live by tuning and testing the system and struggling to meet the Non Functional Requirements.
In our experience a lot of performance problems stem from the fact that most professionals tasked with delivering systems that performance have an inadequate understanding of the overall system and how the application interacts with the environment it is deployed into. Something we have always recommend to our customers is to create a performance “statement” or vision for every core application in your IT portfolio. Think of this as describing the characteristics, footprint and touch-points of an application which should provide a summary of the system within a few paragraphs. This should ideally include:
Design: A summary of the underlying system design and interaction. Key to understanding the infrastructure workload.
- The way an application uses memory, CPU and I/O
- The various physical and virtual resources consumed by the the various application components
Operations: A summary of the deployment model for the system.
- How the application has been instrumented
- How the application has been monitored
- What are the various SLA’s that need to be tracked
KPI’s: Key Performance Indicators that help understand the various metrics that need to be tracked to stay on top of performance.
- What metrics need to be collected to monitor performance, application and infrastructure?
- What thresholds should be set so that infrastructure and application KPI’s are correctly aligned?
Interaction: 3rd party and internal services that the system interacts with
- What services the application interacts with, external and internal
- What other applications this application interacts with
Business: A summary of the various business metrics that help summarize the overall business workload
- What are the business outcomes that the delivers
- What are the business metrics that can be used to measure these outcomes
- A typical usage profile, day to day and peaks for the various key business workload drivers
With this information at hand it becomes a much easier task to determine if you application is behaving normally or has regressed in terms of performance and/or capacity. In other words you minimize the false positives and negatives. For example It may be a conscious design decision that an application grabs as much memory as it can at the application server layer. This means that for this application, generic memory usage KPI’s may have completely inappropriate thresholds and generate redundant alerts.
A little knowledge can be a dangerous thing but not when it comes to maintaining application performance!
Ian Molyneaux (LinkedIn) has over 35 years of experience in IT, Ian brings unique insights into the world of IT in general as well as the issues of IT performance. Ian has held senior positions for vendors like Microfocus and Compuware. In 2009, O’Reilly Media published Ian’s book, “The Art of Application Performance Testing”, which has been well received as a much-needed guide on the right approach to performance testing. Ian is Head of Performance at Intechnica. Ian is a seasoned IT Professional with 35+ years in the industry and is passionate about promoting a structured approach to achieving and maintaining application performance within the enterprise.
As part of the leadership team at Intechnica Ian works closely with customers on engineering applications for scalability and high performance. This article was previously published at Performance By Design and has been reproduced at Practical Performance Analyst with prior permission.