Our IT world is getting increasingly complex, and the chances are that we will see more outdates in the future. But, unfortunately, the evolvement of new technologies is always a few steps ahead of their implementation, and several more stops behind are the error-driven learnings of good practices. So what does this all mean for performance engineering? Are our methods keeping up with the latest developments, or do we still rely on trial & error to find out what works best?
Let me clarify a few primary ingredients of a well-outlined performance engineering discipline before sharing ideas about a much brighter future in my next post.
From my perspective, this is the most important but so often entirely neglected part. We hope that modern tools, methods, and practices will somehow take care of all performance engineering activities. Nothing is more critical than having an open-minded, creative, and forward-thinking team of engineers working on a joint vision to establish quality gates and improve the speed and reliability of all critical applications.
Methods and Practices
Performance engineering is a science within software engineering. Unfortunately, during the last 20 years working in this industry, I have seen many businesses failing to make performance part of their value stream. As we move to a fully digitalized world, speed and user experience become essential, and organizations that have not established continuous performance optimization practices will be left behind.
I don't like the good old saying, "a fool with a tool is still a fool." But, there is still some truth in it. You can buy the most expensive performance testing and monitoring tools and hope your engineers will somehow create high-speed applications. But, in reality, tools alone never help you improve the user experience, page load times, or reliability of your applications.
Performance Engineering equals testing?
According to ASTQB, Software testing is a way to assess the software's quality and reduce the risk of software failure in operation.
Performance Engineering goes beyond software testing because we also assist developers and infrastructure teams in tuning and optimizing their services.
As a software tester, we validate given requirements. However, some of such conditions are easier to test than others. For example, if we look at security or performance requirements, we can often not validate them manually and use tools to support our testing activities.
The term engineering involves a systematic approach for planning, implementing, and operating IT systems. Performance Engineering is very similar to software engineering but focuses on building and running fast and reliable applications.
So, why is 90 % of performance engineering modeling, analysis, and tuning?
You might think that this is far from reality because testing is at the core of performance engineering. However, think on a broader term about software engineering and how testing is built-in.
Many businesses invest roughly 10 % of their development efforts for software testing. Based on our experience this is absolutely true for performance engineering as well. We see a considerable proportion of activities such as modeling, analysis, and application tuning in performance engineering.
Modeling: You need to understand the performance criteria for current and future growth load patterns and lay out a meaningful workload model for application under test.
Analysis: You review live or historical monitoring data such as log files, metrics, or traces to identify bottlenecks and their underlying root cause.
Tuning: You get a good understanding of the dynamics of your applications and evaluate different resolutions for identified bottlenecks.
What is your experience regarding performance engineering? I am looking forward to your thoughts.
Keep up the excellent work! Happy Performance Engineering!