© StonePictures/Shutterstock.com
Kolumne: Enterprise Tales

Kolumne: Enterprise Tales


Bereits bevor klar war, dass die Eclipse Foundation Java EE übernehmen würde, wurde unter der Eclipse-Haube begonnen, das sogenannte MicroProfile zu spezifizieren. Der Name deutet darauf hin, dass in den Initiatoren von Anfang an der Gedanke keimte, dass das MicroProfile eines Tages ein Profil des Enterprise-Java-Standards werden könnte. Das einzige bisher existierende Profil ist das Web Profile. Die Übergabe inklusive Umbenennung in Jakarta EE ist fast abgeschlossen. Nun stellt sich die Frage, ob das MicroProfile tatsächlich direkt in den Jakarta-EE-Standard übernommen werden sollte. Wir werden im Rahmen dieser Kolumne in loser Abfolge einige Teile des MicroProfile vor diesem Hintergrund untersuchen, durch die Praxisbrille betrachten und auch Alternativen beleuchten. Den Anfang macht der Eclipse-MicroProfile-OpenTracing-Standard.

Video: API-Design: Vorsicht vor der Versioning-Hölle!

Bei Tracing handelt es sich um die Nachverfolgung des Programmflusses. Dabei geht es nicht nur darum, wie ein Request seinen Weg durch den Server nimmt. Ebenso spielt eine Rolle, wie lange er in welchem Bereich verweilt, also welche Berechnung länger dauert oder welcher Ressourcenzugriff teurer ist.

In einem Monolithen können diese Informationen sehr leicht über geschicktes Logging erreicht werden. Gängige Log-Frameworks halten dafür sogar ein eigenes Log-Level bereit. Über einen Filter, der nach besagtem Log-Level filtert, lassen sich im Nachhinein der Programmfluss und auch die Dauer einzelner Aufrufe sehr leicht nachvollziehen. Das kann im Fehlerfall durchaus hilfreich sein.

Komplizierter ist es in einer Landschaft mit verteilten Systemen, zum Beispiel in einer Microservices-Landschaft. Denn hier schreiben verschiedene Services nicht in dasselbe Logfile. Es ist also komplizierter, die Tracinginformationen an eine gemeinsame Stelle zu bekommen, um sie zu analysieren. Zwar gibt es mittlerweile auch gute Mechanismen zur Log-Aggregation. In der Praxis hat sich jedoch gezeigt, dass es sinnvoll ist, Logging und Tracing zu trennen. Und so sind verschiedene Distributed-Tracing-Lösungen wie Dapper [1], Zipkin [2], HTrace [3], Jaeger [4] etc. entstanden.

Die Idee hinter diesen Lösungen: Ein Tracingclient sammelt in der Applikation Tracinginformationen und schickt sie in regelmäßigen Abständen zu einem Tracingserver. Auf diesem können die Informationen dann eingesehen und analysiert werden.

Die verschiedenen Tracingclients unterscheiden sich natürlich darin, welche Informationen a...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang