Bibliography | Angerstein, Tobias: Modularization of representative load tests for microservice applications. University of Stuttgart, Faculty of Computer Science, Electrical Engineering, and Information Technology, Master Thesis No. 2 (2018). 107 pages, english.
|
Abstract | Nowadays, user satisfaction and business value of software applications are mainly influenced by the performance and scalability of software applications. Thus, it is a necessity to test the performance of the application during the application development cycle. In order to have meaningful results, the whole application has to be tested with a representative load. Using representative load tests, the application’s performance is tested by a simulated request load, which represents a realistic group of users. In times of DevOps and microservice architectures, each microservice is developed, tested and deployed by a different development team. However, existing approaches, which provide representative load testing, only generate workload for the whole system. Thus, all services have to be deployed, have to be configured by hand, and the execution takes very long compared to typical delivery pipeline executions. In addition, this contradicts the idea of microservice architecture development, where each team develops, tests and deploys its service independently. Addressing the downsides of system-wide load testing regarding microservices, we propose a concept of a representative load test workload modularization. Instead of targeting the whole system, only dedicated services are targeted by modularizing the workload into service-specific parts. Providing modularized load tests for certain services saves many resources and we expect, that it eases the test integration into a continuous delivery pipeline. This thesis aims to achieve the following goals: • Automated representative per-service and integration performance testing • Simplify the use of load testing for microservice development teams Since representative load testing requires a pipeline starting from extracting monitoring data, processing the data, generating a workload model and transforming the workload model into an executable load test, there are many different stages, were the modularization of a load test can take place. In this thesis, we elaborate on possible modularization approaches and evaluate them regarding the resource consumption, duration, representativeness, and the practicability. We implement two of the elaborated approaches, in order to evaluate and compare the results of the modularization approaches. A selection of microservices, which are part of a sample application is load tested with the implemented approaches and compared with the non-modularized load test executions. The results of the experiment show, that the trace modularization approach, which modularizes the request traces, provides the most promising results. However, the results are not significant enough in order to draw a valid conclusion.
|