Mit dem Architekturkonzept von Microservices und der steigenden Anzahl an heterogenen Services, ergeben sich neue Herausforderungen hinsichtlich des Debuggings, Monitorings und Testens solcher Anwendungen. Verteiltes Tracing bietet einen Ansatz zur Lösung dieser Herausforderungen. Das Ziel in der vorliegenden Arbeit ist es zu untersuchen, wie verteiltes Tracing für eine automatisierte Fehleranalyse von Microservices genutzt werden kann. Dazu wird die folgende Forschungsfrage gestellt: Wie können Traces ausgewertet werden, um die Fehlerursachen beim Testen von Microservices zu identifizieren? Um die Forschungsfrage zu beantworten, wurde ein Datenformat zur automatisierten Auswertung von Tracing-Daten definiert. Zur Auswertung wurden Algorithmen konzipiert, welche die Fehlerpropagierung zwischen Services anhand kausaler Beziehungen auflösen. Dieses Vorgehen wurde in Form einer prototypischen Implementierung in Python umgesetzt und dessen Funktionalität evaluiert. Die Ergebnisse zeigen, dass in rund 77 % der durchgeführten Testszenarien, die Fehlerursache mithilfe des Prototyps korrekt aus den Tracing-Daten abgeleitet werden konnte. Ohne Einsatz des Prototyps und ohne weiteres Debugging konnte lediglich in circa 5 % der Testszenarien die Fehlerursache anhand der Fehlerausgabe der Anwendung selbst erkannt werden. Damit bietet das Konzept sowie der Prototyp eine Erleichterung des Debuggings von Pythonbasierten Microservice-Anwendungen.:1. Einleitung
1.1. Motivation
1.2. Abgrenzung
1.3. Methodik
2. Grundlagen
2.1. Verwandte Arbeiten
2.1.1. Automatisierte Analyse von Tracing-Informationen
2.1.2. Automatisierte Fehlerursachenanalyse
2.1.3. Fehlerursachenanalyse in Microservices
2.1.4. Ursachenanalyse von Laufzeitfehlern in verteilten Systemen
2.1.5. Tracing-Tool zur Fehlererkennung
2.2. Theoretische Grundlagen
2.2.1. Microservices
2.2.2. Verteiltes Tracing
2.2.3. OpenTracing
2.2.4. Jaeger
2.2.5. Exemplarische Anwendung für Untersuchungen
2.2.6. Continuous Integration/ Continuous Delivery/ Continuous Deployment
3. Konzeption
3.1. Definition des Datenformats
3.1.1. Analyse des Datenformats der OpenTracing Spezifikation
3.1.2. Erweiterungen
3.1.3. Resultierendes Datenformat für eine automatisierte Auswertung
3.1.4. Zeitversatz verteilter Systeme
3.2. Algorithmen zur Fehlerursachenanalyse
3.2.1. Erstellung eines Abhängigkeitsgraphen
3.2.2. Pfad-basierte Untersuchung von Fehlerursachen
3.2.3. Auswertung nach zeitlicher Abfolge und kausaler Beziehung
3.2.4. Bewertung potenzieller Fehlerursachen
3.3. Konzeption des Prototyps
3.3.1. Integration in den Entwicklungszyklus
3.3.2. Funktionale Anforderungen
3.3.3. Architektur des Prototyps
4. Durchführung/ Implementation
4.1. Implementation des Prototyps zur Fehlerursachenanalyse
4.2. Einbindung des Prototyps in Testszenarien und Continuous Integration
4.3. Tests zur Evaluation des Prototyps
5. Ergebnisse 51
5.1. Evaluation des Konzepts/ Prototyps
5.2. Evaluation der Methoden zur Fehlerursachen-Bewertung
5.3. Wirtschaftliche Betrachtung
6. Fazit/ Ausblick
6.1. Fazit
6.2. Ausblick
Literatur
Selbstständigkeitserklärung
A. Abbildungen
A.1. Mockups der Auswertungsberichte des Prototyps
B. Tabellen
B.1. Felder der Tags nach OpenTracing
B.2. Felder der Logs nach OpenTracing
B.3. Auswertung der Testergebnisse
C. Listings
C.1. Datenformat zur automatisierten Auswertung
C.2. Definition von Regeln zur Auswertung
D. Anleitung für den Prototyp
Identifer | oai:union.ndltd.org:DRESDEN/oai:qucosa:de:qucosa:78943 |
Date | 26 April 2022 |
Creators | Sinner, Robin Andreas |
Contributors | Hochschule für Technik, Wirtschaft und Kultur Leipzig |
Source Sets | Hochschulschriftenserver (HSSS) der SLUB Dresden |
Language | German |
Detected Language | German |
Type | info:eu-repo/semantics/acceptedVersion, doc-type:bachelorThesis, info:eu-repo/semantics/bachelorThesis, doc-type:Text |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.0024 seconds