Performance Modeling & Workload Modeling - Are they one and the same?
I have quite frequently encountered scenarios in which the clients, managers and developers keep using the terms 'Performance Model' and 'Workload Model' synonymously. However, I figured out in many cases they actually wanted to refer to the usage patterns of their application business processes by the end users and the respective application load. So, I kept wondering if these terms lost their meaning over a period of time or is it the mere ignorance of what each term specifically stands for. In this blog, I attempt to provide a distinct difference to these terms which in reality represent two completely different concepts that have their own meaning in the Application Performance Management (APM) space. In general terms, a mathematical or scientific 'Model' represents a system with certain inputs and specific outputs.
The purpose of creating 'Performance Models' in APM discipline during the Design phase is to represent a given IT system/application as a black box that takes inputs such as 'User/Transaction Load' and provides output such as 'Response Time / Throughput / System Utilization' to evaluate the application design and architecture to gain better insights into application's performance and scalability before it is implemented. In my experience, I have come across many performance problems in the Test and Deploy phases for enterprise applications which are actually back-rooted to few design flaws that are difficult and (sometimes) impossible to change in the fag-end, making the application non-compliant with performance SLAs.
In order to ensure that performance is taken care right from the design phase (not as an afterthought), 'performance modeling' should be adopted to model system's performance and continuously refined in later phases of SDLC. The process of creating performance models is called 'Performance Modeling'. Performance Models are used to evaluate any design/architectural trade-offs based on scientific approach and measurements in design phase before investing time and money to actually go for a full-blown implementation, which might end up as a disaster, if the design is not scaled for 'performance'. Performance Modeling can be implemented using different techniques such as 'Analytical Models', 'Simulation Techniques' or 'Extrapolation Techniques' which are to be chosen based on the client scenario, cost-effectiveness and time factor. The outcomes from Performance Modeling typically represent performance prediction which can be refined with more data captured from any given application/system as it gets developed.
To summarize, Workload Model represents usage pattern of the application whereas Performance Model represents the performance characteristics or behavior for inputs such as user load or transaction load that increases application performance predictability.
So next time, you are in a discussion with a business or technical group to discuss about the strategy or action plan to improve performance of an IT system, be clear on what the requirement is - Performance Modeling or Workload Modeling? Or is it something totally different.