Definition „Distributed Request Tracing“ Was ist Distributed Tracing?

Autor / Redakteur: zeroshope / Stephan Augsten

Der Ausdruck Distributed Tracing beschreibt einen Vorgang, um die verschiedenen Prozesse in Microservices-Strukturen zu trennen und einzeln erkennbar zu machen. Tools hierfür sind Profil-IDs. Ziel ist es, Fehlerursachen schneller zu identifizieren.

Firmen zum Thema

Um in Microservices-Infrastrukturen mögliche Fehler zurückzuverfolgen, wird per Code eine verteilte Rückverfolgung ermöglicht.
Um in Microservices-Infrastrukturen mögliche Fehler zurückzuverfolgen, wird per Code eine verteilte Rückverfolgung ermöglicht.
(© greenbutterfly - stock.adobe.com)

Unter Distributed Tracing (oft auch: Distributed Request Tracing) ist ein System zu verstehen, das Prozesse in Microservices-Architekturen identifizieren kann. Wie es die deutsche Übersetzung „verteilte Rückverfolgung“ andeutet, geht es vor allem um eine Trennung. Um das Verhalten der Prozesse erkenn- und erklärbar zu machen, müssen sie voneinander unterschieden werden können.

Erklärung des Problems

Eine zunehmend wachsende Zahl von Applikationen vertraut auf Microservices. Native Cloud-Anwendungen setzen sie beispielsweise fast ausnahmslos ein. Die Idee dahinter ist das Paradigma des modularen Aufbaus: Apps funktionieren besser, wenn die einzelnen Funktionen über spezielle Dienste separat bereitgestellt werden. Hintergrund ist die Spezialisierung der einzelnen Services. Zudem lässt sich ein Dienst bei Bedarf einfacher tauschen.

Um ein Beispiel anhand einer Metapher zu geben: Wer ein Haus (in unserem Fall: eine Applikation) bauen möchte, beauftragt nicht einfach 30 beliebige Personen. Stattdessen kommen Fachhandwerker wie Klempner, Maurer und Elektriker zum Einsatz. Keiner baut alles, aber dafür leisten sie aufgrund ihrer Spezialisierung die bestmögliche Arbeit (Sie sind also unsere Microservices).

Nun tritt ein Problem auf: Beispielsweise ist eine Wand feucht. An jener haben allerdings Maurer, Klempner, Zimmerleute und Elektriker gearbeitet. Es ist deshalb nicht möglich zu sagen, wer den Fehler gemacht hat. Von außen ist nur erkennbar, dass es ein Problem gibt. Um das Bild zurückzuübersetzen: Entstehen in Microservices-Infrastrukturen Fehler, kann es eine Vielzahl von potenziellen Schuldigen geben. Denn zahlreiche Dienste nutzen die Stelle, an der das Problem entstanden ist.

Distributed Tracing als Lösung des Problems

Mittels Distributed Tracing lässt sich dieses Problems lösen. Hierfür kommt es zu folgendem Ablauf:

  • Jeder Prozess in jeder Nutzungsanfrage erhält eine einzigartige eigene Profil-ID.
  • Dienste müssen diese ID nutzen, um ihre Arbeit zu "signieren".
  • In allen Logs taucht die ID auf.
  • Über die ID speichert ein angeschlossenes System alle wichtigen Daten wie z.B. Beginn und Ende.

Alle Prozesse lassen sich also anhand der einzigartigen Profil-ID identifizieren und analysieren. Kehren wir hierfür noch einmal zur Metapher zurück: Die Handwerker müssen jeden Arbeitsschritt unverwechselbar signieren und protokollieren. Ergibt sich beispielsweise, dass nur der Klempner mit Wasser gearbeitet hat, ist der Dienst gefunden, wo es zu einem Fehler gekommen ist.

Umsetzung von Distributed Tracing

Distributed Tracing funktioniert nicht ohne zusätzlichen Code. Es handelt sich also um ein Analyse- und Optimierungssystem, das entwicklerseitig zum Einsatz gebracht wird. Es ist folglich für das Debugging ausgezeichnet geeignet. Es gibt allerdings keine Standards oder nutzbare Vorlagen, da die Infrastrukturen zu individuell sind. In der Regel wächst das Distributed Tracing im Laufe der Zeit mit der Entwicklung der eigentlichen App mit. Anbieter von Microservices stellen allerdings häufig eigene Erfahrungswerte zur Verfügung, die helfen können.

(ID:47307354)