Are you wondering why businesses develop outstanding high-speed applications and others gradually fail? Some websites, for instance, are so slow that a large proportion of customers stop using them. The IT stone age is gone, and we can no longer fix performance problems by adding more hardware. From my perspective, it's time to shine a light on the secrets behind fast and reliable applications and make this knowledge available to everyone.
I've borrowed the idea of design patterns because they are well known for software engineers and development managers. You should not re-invent the wheel when you implement programs because the chances are that you might cause more significant troubles. Instead, you could look to standards, good practices, or guidelines such as performance patterns because they show you proven techniques to solve a particular problem.
What's a performance pattern?
Performance patterns are blueprints to solve recurring performance problems. The pattern is a general concept for solving a particular situation. Don't confuse a pattern with an algorithm. The pattern is a high-level description of a solution, and the algorithm is a set of actions that can achieve a goal.
What are the elements of a performance pattern?
Intent - summary of the problem and the solution.
Motivation - explanation of the problem and benefits of the solution.
Structure - elements of this pattern.
Example - how you can apply this pattern.
What are the benefits of performance patterns?
Even if you have worked as a performance engineer for many years, you are unaware that you already use such patterns. The main idea behind performance patterns is to eliminate guesswork and introduce an easy-to-understand ruleset for performance engineering.
Performance patterns are a toolkit of tested solutions to common performance problems. If you encounter specific issues, you could look at these patterns and find guidance on how to solve them.
Performance patterns simplify communication and act as a common language. You can say, "Monitoring first," and everyone will understand the suggestion.
How can we classify performance patterns?
Creational patterns describe ways to implement applications with performance in mind.
N+1
Chatty
Memory Leak
Concurrency
Deadlock
And a few more
Structural patterns introduce concepts to ensure performance when throughput and data volume is high.
Caching
Lazy loading
Transport format
Incorrect garbage collection
Excessive logging
And a few more
Behavioral patterns focus on making performance everyone's daily job.
Shift left
Shift right
Observability first
Performance Requirements
And a few more
Watch out for the upcoming blog posts on this topic. I will introduce all of these performance patterns, and you could use them to overcome or avoid performance problems in your ongoing projects. Also, please share your performance patterns with me to make this list a handy guideline for all of us.
Keep up the excellent work! Happy Performance Engineering!
Comments