Return to search

Fehleranalyse in Microservices mithilfe von verteiltem Tracing

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

Identiferoai:union.ndltd.org:DRESDEN/oai:qucosa:de:qucosa:78943
Date26 April 2022
CreatorsSinner, Robin Andreas
ContributorsHochschule für Technik, Wirtschaft und Kultur Leipzig
Source SetsHochschulschriftenserver (HSSS) der SLUB Dresden
LanguageGerman
Detected LanguageGerman
Typeinfo:eu-repo/semantics/acceptedVersion, doc-type:bachelorThesis, info:eu-repo/semantics/bachelorThesis, doc-type:Text
Rightsinfo:eu-repo/semantics/openAccess

Page generated in 0.0021 seconds