- a performance problem occurs
- an experienced person knows what is probably the cause and suggests a specific change
- baseline performance is determined, the change is applied, and performance is measured again
- if the performance has improved compared to the baseline, keep the change, else revert the change
- if the performance is now considered sufficient, you're done. If not, return to the experienced person to ask what to change next and repeat the above steps
In this blog post I'll try to do just that. Of course a major disclaimer applies here since every application, environment, hardware, etc is different. The definition of performance and how to measure it is also something which you can have different opinions on. In short what I've done is look at many different variables and measuring response times and throughput of minimal implementations of microservices for every combination of those variables. I fed all that data to a machine learning model and asked the model which variables it used to do predictions of performance with. I also presented on this topic at UKOUG Techfest 2019 in Brighton, UK. You can view the presentation here.