Objective(s) of the session:
- agree on a definition of system or application perfornance
- establish sensible performance metrics
- master techniques for measuring them
- identify performance bottlenecks
- evaluate strategies for integrating performance engineering in the software development process
In this presentation, we teach the basic concepts of performance engineering.
The first task for the performance engineer is to elicit and understand performance requirements. Everyone likes systems that are 'fast', but 'fast' won't do as a metric. We will discuss the many facets of 'fast' and related terms and give some guidance on writing performance specifications. It will come as no surprise to agile practitioners that testability is one of the principal concerns.
Throughput is the main focus of the workshop. Most projects are eager to maximize throughput because of its direct effect on system economics, increasing revenue and/or cutting costs. We therefore show how throughput can be measured and analyzed. These techniques are to non-functional requirements what unit tests are to functional requirements.
In order to maximize throughput, the current bottleneck must be found and removed. This procedure is followed iteratively until it becomes uneconomic to do so. Bottlenecks are identified by monitoring resource utilization.
We discuss techniques for improving resource utilization and include examples of DBMS and application logic optimizations with their specific tooling for finding hot-spots.
The final part of the session is an open discussion on the role of performance engineering in the development processes.
Format and length: 90 mins presentation/workshop with theory and case studies. We want to create plenty of opportunity for discussion and hope that the participants will draw on their own experience as well.