Not so many years ago, organizations tried to fix bad user experience with investments in infrastructure. Hardware provider promised that brand-new CPUs, more RAM, and fast storage would fix the annoying performance hotspots. Obviously, this was just in rare cases a good advice. In this post, I will write about top performance hotspots and how speed is unlocking opportunities across all layers.
Top reasons for performance issues
Nowadays, the biggest proportion of slowdowns is due to bad application design and implementation. Years back in time, organizations replaced their FAT clients with lightweight web based applications. There are good intentions for this such as no client-side installation required, fewer resources on the user’s machine and faster rollouts of new releases. However, those advantages are disappearing. Our lightweight browser based applications are gone and replaced with rich internet applications. The communication pattern has dramatically increased, and the average size of our web pages is now five times higher, which results in additional problems.
Another common reason for slowdowns is the misconfiguration of components in the backend layer. Too small sized database connection or thread pools are still a widespread issue. When it comes to Java, the configuration of virtual machines is also often an underestimated challenge. Minor misconfiguration of heap size or garbage collection algorithm can lead to critical performance issues.
Last but not least, the infrastructure is sometimes a cause of performance hotspots. High CPU utilization is not automatically the reason for bad performance. Especially, multithreaded applications tend to high CPU utilizations. If response times are within the agreed thresholds and CPU usage is high, there is no need for ramp up of infrastructure. A shortage in memory or not enough disk size can lead to serious issues. Imagine that a process tries writing files to a full disk or a java process attempt to read a customer record to its memory and the heap size is already at its maximum size. In both situations, your application will slow down or crash.
Why speed becomes a top priority
Digital services are omnipresent. Minor slowdowns let customers abandon and spend their money on other, more reliable sites. Over recent years also expectations of our shoppers increased. If a web page does not load within 2 seconds, every second user is frustrated and won’t use this site in the future. User experience is the new business critical metric, which is much more than a quality attribute. Each unsatisfied user has an impact on commercial revenue because they will spend their money on the competitor’s website.
Furthermore, search engines understood that slow web pages are a pain and started to reflect page load times and design metrics in their search rankings. No matter how much money you will spend on your search engine optimizations. If you don’t fix the performance problems, you won’t get the expected ranking in the search engines.
Strategies for high-speed applications
Nobody will build a house without a careful planning of all elements. The same principle has to apply when it comes to software engineering. We think in features and document carefully functional requirements of the new solution. In addition to this, pay more attention to the non-functional aspects such as throughput, response times, load pattern and scalability.
Google and Yahoo provided web page design standards. Developers and QA staff should get familiar with those and integrate design check in their development pipeline. Verification and validation of non-functional requirements are crucial for the success of your new product. Setup appropriate test scenarios, validate these needs early in the life cycle and help your developers to identify and fix nasty slowdowns.
Small changes in user or transaction volume can have a high impact on the load times of your application. Forward-looking organizations have a monitoring stack in place which allows a permanent supervision of all user interactions. Whenever a hotspot arises, their support staff gets an alert. These insights enable proactivity, and quick error resolution prior their customers get affected.
Based on my experience, performance engineering is still an informal discipline and often treated as an afterthought. Turn the ship around, unlock opportunities across all layers and integrate non-functional aspects in all stages of your development process.