Moving beyond a Symptomatic Performance Tuning Approach
Do you believe that you can fix all application performance issues just by using more powerful hardware components? You won't be the first who learned a very bitter lesson. After upgrading to the more powerful hardware stack, the application performance problems are still present.
Why do we believe that powerful hardware could heal performance concerns?
I think it's quite natural because we learned that lesson from our personal computer use. After upgrading to the newest, most powerful device on the market, we feel that this engine is faster. Our favorite program opens within seconds. At least, for a few months. A few months later, after we installed everything and collected too much chunk on our device, all the speed is gone, and we start the hunt for the next much faster model again.
Fixing performance problems using hardware is a never-ending story. The winners are only IT providers or manufacturers because they sell more brand new high-speed promising devices.
In the section below, I am sharing some shortcomings of the hardware-based tuning approach.
# Short term thinking
Adding a few CPU cores or GB Ram might help today, but it won't prevent that you will be soon facing the same issues over and over again. Small changes in the hardware-tuned applications result in the same old problems.
# Service costs increase
If you keep adding hardware to fix shortcomings in response times, your service costs will go through the roof. Customers will not pay more for the same service, but your team might see a dramatic increase in operational expenses.
# Scalability suffers
You lock yourself in if the scalability of your services is entirely built on hardware. Horizontal scaling can become expensive. It's much better if you design your services to allow vertical scaling as well.
# Background noise
You make your services very much vulnerable to noise in your environment if their response times are entirely bound to the system resource utilization. No server is exclusive for a single application only. We have software updates, security scans, and many more background tasks that might blow up a hardware-bound system's user experience.
These three simple rules help you to avoid the hardware-performance-tuning trap
Rule 1: Start early - describe what and how a feature should work in the production environment. Design the features accordingly and ensure the required non-functional testing starts early in the development stream.
Rule 2: Repeat often - don't rely on earlier test results. Automate all your non-functional tests and make them part of every sprint. Establish gates to ensure that only high-quality code is getting deployed to the next stage.
Rule 3: Make it everyone's matter - all engineers must be involved in performance testing and tuning. Changes in any layer can impact the response times of our services. Visualize real-time performance metrics to monitor cockpits and use state-of-the-art monitoring to detect regressions, including their root cause automatically.
The centuries of a hardware-based tuning approach are long gone. We live in a more dynamic environment in which IT efficiency becomes more and more a critical factor. Short term thinking bounces back, and teams realize that application design, configuration, and code are much better tuning advice pieces.
Contact me if you need performance tuning assistance.
Keep doing the great work! Happy Performance Engineering!