Is it still considered as a rocket science ?
Over the last decade, the awareness on the importance of Performance Testing has seen its exponential growth. Almost every digital player dealing with high traffic websites is aware of the impact caused by performance non-compliance on their business targets.
As e-business portals & other business processing web applications become modern and complex, application performance management becomes very challenging. Though there are several popular performance testing & diagnosis tools has been around for years, we still keep seeing headlines made by ebusiness providers on their well known mobile and web applications due to poor performance & scalability issues caused by sudden, unexpected user load fluctuations.
E-Businesses that have realized this has started investing in Performance Engineering activities right from early SDLC phases focusing more on proactive performance management leading the way for Performance assurance. This has resulted in significant importance in early performance analysis as performance investigation has to start even before the system is implemented. Performance Modelling is one of the key engineering areas that can help in answering several complex what-if questions to assure system performance, scalability & capacity.
What is Performance Modelling
A model is an abstraction of a complex system which accepts certain inputs & generates specific outputs. A Performance model uses specific number of building blocks to predict how performance will vary under different what-if scenarios like varied set of load conditions, change in workloads, and change in server capacity, etc.
Performance modelling is the process of creating a model of the system to forecast its performance. There could be several objectives to do performance modelling including performance NFR validation, analyzing design or implementation trade-offs, server capacity sizing, capacity analysis, etc. The performance model used to evaluate alternatives is usually built during design phase and refined throughout the SDLC phases to evaluate how the end system will behave under expected user load conditions.
Why Performance Modelling is required
Performance Modelling helps to identify when a specific tier or a specific hardware resource will become a bottleneck as the user load increases. It can help in projecting the need for server processing capability to meet the target performance SLAs. It will help in answering several what-if questions on various performance metrics like throughput, response time, server resource utilizations, etc, for changes in user load levels.
How to select the right Performance Modelling Technique
The choice of right Performance modelling technique depends on several factors like performance criticality of the system, modelling objectives, expected outcome, data availability, application complexity, client’s interest-level, time & effort requirement, budget constraints, availability of capability, etc. Ideally speaking, the right time to implement performance modelling is during early SDLC phases, may be in design phase & refinement happens during testing phase & thereafter. There is no magic formula that can provide justification on which is the best modelling technique. It primarily depends on the objective, system complexity & current SDLC phase of the system under analysis.
Tips for Effective Performance Modelling
Here are several tips for effective performance modelling & key ones are provided below:
- Identify & prioritize the objectives for doing Performance Modelling exercise
- Decide what type of Performance Modelling Technique (Analytical or Statistical or Simulation) to be used for meeting the set objective(s).
- Understand the System Architecture & Deployment Architecture in detail.
- Finalize the business critical & frequently used use cases (workload mix) & design a realistic Workload Model.
- Setup appropriate performance monitors for all the key components in system.
- Carryout load tests (preferably medium load conditions) to calculate the Service Demand for all the key components to process the workload.
- Create a Model (using the selected tool) with the finalized key components connected as per the request flow.
- Configure the model parameters (like request arrival rate, service demand, distribution like Poisson or Gaussian or Deterministic, etc) & execute the model.
- Now you start playing with the model to get answers for all your what-if scenarios.
Performance Modelling is not a rocket science, if you carry a strong understanding of the foundational concepts & follow systematic steps. It all starts from learning what is Queuing Theory & how it can help in the performance testing to start with, before exploring about complex modelling techniques. Yes, there are very complex performance models built for complex system like data analytics platform, IOT Platform, etc., but remember there are very simple equations (operational laws that explains the simple relationships that exist between performance metrics), which are very easy to understand & implement in performance testing projects.
Happy Learning !!