Bitte benutzen Sie diese Kennung, um auf die Ressource zu verweisen:
http://dx.doi.org/10.18419/opus-10384
Autor(en): | Angerstein, Tobias |
Titel: | Modularization of representative load tests for microservice applications |
Erscheinungsdatum: | 2018 |
Dokumentart: | Abschlussarbeit (Master) |
Seiten: | xiii, 91 |
URI: | http://nbn-resolving.de/urn:nbn:de:bsz:93-opus-ds-104013 http://elib.uni-stuttgart.de/handle/11682/10401 http://dx.doi.org/10.18419/opus-10384 |
Zusammenfassung: | 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. Heutzutage werden die Benutzerzufriedenheit und der Geschäftswert von Softwareanwendungen hauptsächlich durch die Leistung und Skalierbarkeit von Softwareanwendungen beeinflusst. Daher ist es notwendig, die Performance der Anwendung während des Entwicklungszyklus zu testen. Um aussagekräftige Ergebnisse zu erzielen, muss die gesamte Anwendung mit repräsentativer Belastung getestet werden. Mit repräsentativen Lasttests wird die Performance der Anwendung durch eine simulierte Anforderungslast getestet, die eine realistische Gruppe von Benutzern darstellt. In Zeiten von DevOps und Microservice-Architekturen wird jeder Microservice von einem anderen Entwicklungsteam entwickelt, getestet und eingesetzt. Bestehende Ansätze, welche repräsentative Lasttests ermöglichen, erzeugen jedoch nur eine Nutzerlast für das gesamte System. Daher müssen alle Services gestartet und manuell konfiguriert werden und die Ausführung dauert im Vergleich zu typischen Ausführungszeiten von Delivery Pipelines sehr lange. Darüber hinaus widerspricht dies der Idee der Entwicklung von Microservice-Architekturen, bei der jedes Team seinen Service eigenständig entwickelt, testet und einsetzt. Um die Nachteile des systemweiten Lasttests für Microservices zu beheben, entwickeln wir ein Konzept, welches die Modularisierung eines repräsentativen Lasttests ermöglicht. Anstatt das gesamte System zu testen, werden nur dedizierte Services durch die Modularisierung des Workloads in servicespezifische Teile getestet. Die Bereitstellung modularisierter Lasttests für bestimmte Dienste spart viel Ressourcen und wir erwarten, dass es die Integration von Lasttests in eine Continuous Delivery Pipeline erleichtert. Diese Arbeit zielt darauf ab, die folgenden Ziele zu erreichen: • Automatisierte repräsentative Lasttests auf Serviceebene und Integrationstestebene • Vereinfachung der Verwendung von Lasttests für Microservice Entwicklungsteams Die Erzeugung eines repräsentativen Lasttests besteht aus mehreren Arbeitsschritten: Zunächst werden relevante Informationen aus den Monitoringdaten extrahiert, die Daten anschließend verarbeitet, ein Modell des Nutzerverhaltens generiert und anschließend ein ausführbarer Test zur Verfügung gestellt. Zwischen jedem Arbeitsschritt entstehen Zwischenergebnisse, auf die eine Modularisierung angewendet werden kann. In dieser Arbeit erarbeiten wir mögliche Modularisierungsansätze und bewerten sie hinsichtlich Ressourcenverbrauch, Dauer, Repräsentativität und Praktikabilität. Wir implementieren zwei der erarbeiteten Ansätze, um die Ergebnisse der Modularisierungsansätze zu bewerten und zu vergleichen. Eine Auswahl von Microservices, die Teil einer Beispielanwendung sind, werden mit den implementierten Ansätzen getestet und mit den nicht-modularisierten Lasttestausführungen verglichen. Die Ergebnisse des Experiments zeigen, dass der Ansatz der Trace-Modularisierung, welcher die Monitoringdaten modularisiert, die vielversprechendsten Ergebnisse liefert. Die Ergebnisse sind jedoch nicht signifikant genug, um eine valide Schlussfolgerung zu ziehen. |
Enthalten in den Sammlungen: | 05 Fakultät Informatik, Elektrotechnik und Informationstechnik |
Dateien zu dieser Ressource:
Datei | Beschreibung | Größe | Format | |
---|---|---|---|---|
Masterthesis_Tobias_Angerstein.pdf | 1,14 MB | Adobe PDF | Öffnen/Anzeigen |
Alle Ressourcen in diesem Repositorium sind urheberrechtlich geschützt.