Distributed Tracing bietet für jeden etwas
10. Oktober 2019Technikexperten, die lokale Umgebungen verwalten, hören oft gewohnheitsmäßig weg, wenn „Distributed Tracing“ zur Sprache kommt. Schnell ist man verleitet zu glauben, diese Technologie sei nur etwas für Entwickler oder für Cloud-Anwendungen oder sie würde schlicht nicht zu den eigenen Systemen passen. Doch je verteilter lokale Umgebungen werden, desto mehr Möglichkeiten gibt es für Technikexperten, gezielte Distributed Tracing-Techniken zu integrieren und so die Performance zu optimieren. Noch besser ist, dass diese Tools sich aktuell sehr schnell weiterentwickeln und immer benutzerfreundlicher werden, sodass das Tracing endlich zum Standardtool wird und nicht mehr nur ein kompliziertes Werkzeug für Entwickler bleibt.
In der Vergangenheit konnten Technikexperten das Anwendungsverhalten verwalten, indem sie einzelne Komponenten gesondert betrachteten. In monolithischen Anwendungen waren APIs stark festgelegt und Lücken, Bereiche mit potenzieller Verbindungstrennung, Wartezeiten oder Fehler gab es nicht oder waren zumindest nicht offensichtlich. Im Betrieb konzentrierte man sich auf Messwerte und Warnmeldungen. Es reichte, „Blutdruck“ und „Herzfrequenz“ zu kontrollieren, damit alles glatt ging. Bei den heutigen verteilten Umgebungen ist es nicht mehr so einfach.
Durch den Einsatz von Technologien wie Microservices sind ganz neue Probleme aufgekommen, da einzelne Anfragen von Endnutzern oft mehrere Systemkomponenten durchlaufen. Tools, die jeden Microservice isoliert betrachten, geben nicht länger ein klares oder zutreffendes Bild ab und sorgen somit für ernsthafte Schwierigkeiten. Kurz gesagt: Die Tage der einfachen, monolithischen Anwendungen und Schnittstellen in ein und demselben Rack sind gezählt. Stattdessen ist die Zeit der verteilten Anwendungen gekommen – und damit auch der Lücken in der Transparenz.
Genau hier setzt das Tracing an. Distributed Tracing bietet eine Lösung für diese Probleme, und zwar für alle Teams, nicht nur für Cloud-Teams. Es gibt Aufschluss über die Beziehung zwischen dem für den Benutzer sichtbaren Verhalten an der Spitze des Stacks und der komplexen Mechanik der zugrunde liegenden verteilten Systeme. Technikexperten können mittels Distributed Tracing die Transaktionen und den Fortschritt in diesen Lücken und verschiedenen Ebenen identifizieren und überwachen, um Probleme zu erkennen, die ihrer Verantwortung unterliegen. So kann sich die Nutzung von Distributed Tracing-Tools positiv auf jede IT-Umgebung auswirken, indem sie die Beobachtbarkeit und die Überwachungsmöglichkeiten verbessert, sodass Unternehmen ihren Endnutzern bessere Services liefern können.
Wo ist der Haken an der Sache?
Sie denken jetzt vielleicht: Wenn Distributed Tracing so großartig ist, warum wird es dann noch so wenig verwendet? Die Antwort ist einfach: Wir leben in der Vergangenheit. Die zögerliche Nutzung liegt schlicht an einem mangelnden Bewusstsein darüber, wie sich Tracing-Technologien im Laufe der Jahre weiterentwickelt haben, gepaart mit einer allgemeinen Unsicherheit, wie die gewonnenen Daten auszuwerten sind. Auch die Kosten der Tools werden oft falsch eingeschätzt.
Glücklicherweise hat sich das Distributed Tracing mit der Zeit weiterentwickelt: Die heutigen Tools lassen sich nahtlos in die „typischeren“ (sprich, weniger entwicklungsorientierten) IT-Umgebungen integrieren und sind deutlich benutzerfreundlicher. Auch wenn die Technologie ursprünglich für Entwickler gedacht war, die cloud-native Anwendungen verwalten müssen, entwickelte sie sich zu Mainstream-Lösungen weiter. Mit diesen können blinde Flecken bei der Beobachtbarkeit identifiziert und erhellt werden, und Unternehmen ihre Servicequalität verbessern. Die Überwachung der heutigen komplexen verteilten Systeme – beispielsweise Microservice-Architekturen – ist mit veralteten Tools tatsächlich kaum möglich, denn wie wir jetzt wissen, geben sie zu verteilten Transaktionen kein klares Bild ab.
Entwicklungsteams nutzen beispielsweise noch immer Java Management Extensions (JMX)-Technologien, um verteilte Anwendungsdienste zu entwickeln. Wenn Sie Ihr Überwachungs-Tool so konfigurieren, dass es nicht nur Anwendungsressourcen wie Speicher, Arbeitsspeicher und CPU überwacht, sondern auch bewährte JMX-Metriken, kann es hilfreiche Informationen liefern. An dieser Stelle gehen die meisten Teams nicht weiter: Was braucht man noch, wenn für alles, was abgerufen werden kann, Metriken vorhanden sind?
Hier kommt das Distributed Tracing ins Spiel. Die Ablaufverfolgung echter Transaktionen (statt des reinen Abrufs der Infrastruktur) bietet eine standardisierte Methode, um Ordnung und Normalität in unkonventionelle Anwendungen und/oder neue Systeme zu bringen, die mit Standard-Überwachungstools nicht überwacht werden können. Genau diese Systeme sind dabei für Unternehmen oft ein Hauptunterscheidungsmerkmal. Bei der Entwicklung mit neuen Technologien und bei unkonventionellen Vorgehensweisen gehen konventionellere, vertraute Metriken leicht verloren. Das Distributed Tracing kann einige davon ersetzen.
Umsetzung in der Praxis
An diesem Punkt verstehen Sie (hoffentlich) allmählich, dass Distributed Tracing-Tools längst nicht nur für Entwickler oder Technikexperten nützlich sind, die Cloud-Anwendungen verwalten. Wenn Sie mit dem Gedanken spielen, Distributed Tracing-Tools für Ihre Systeme einzusetzen, helfen Ihnen einige Best Practices bei der erfolgreichen Implementierung:
- Recherchieren Sie und erweitern Sie Ihr Wissen: Führen Sie Recherchen und Gedankenexperimente durch, bevor Sie das Distributed Tracing in Ihrem Unternehmen einführen oder Geld für die Implementierung ausgeben. Wenn Sie dazulernen und die Technologie wirklich verstehen, werden Sie wahrscheinlich überrascht sein, wie Distributed Tracing die Qualität Ihrer Services verbessern kann, ohne dass es Ihr Budget sprengt.
- Kennen Sie Ihr Nutzungsszenario: In den meisten Fällen sollten Distributed Tracing-Tools erst implementiert werden, wenn ein Unternehmen auf Microservices umstellt. Denken Sie aber daran, dass Sie beim Einsatz von Microservices unbedingt frühzeitig über Distributed Tracing nachdenken sollten. Wenn Ihr Unternehmen auf Microservices umstellt und keinen ausreichend entwickelten Distributed Tracing-Verlauf hat, können Entwickler und DevOps-Teams selbst aus grundlegendem Systemverhalten wenig sinnvolle Informationen ziehen, schon gar nicht bei unerwünschtem Verhalten.
- Fangen Sie klein an: Die erste Version eines Projekts sollte im kleinen Maßstab erfolgen. Verhandeln Sie nicht sofort mit einem Anbieter über ein Projekt über mehrere Millionen Euro, sondern fangen Sie klein an und werten Sie mehrere unterschiedliche Technologien und Methoden aus.
- Vermeiden Sie Komplexität und sorgen Sie für Einfachheit: Moderne Distributed Tracing-Anwendungen sind bemerkenswert ausgereift und dennoch benutzerfreundlich. Gleichzeitig sollten Sie sich jedoch vor übermäßiger Komplexität in Acht nehmen. Wie beim gesamten Thema Überwachung gilt: Einfachheit ist das Wichtigste. Distributed Tracing wird für Sie nur so hilfreich sein wie die Breite seiner Bereitstellung: Je komplizierter es ist, desto weniger Zeit haben Sie, es breit angelegt einzusetzen (was für eine umfassende Transparenz unverzichtbar ist), und desto weniger nützlich wird es letztendlich sein. In anderen Worten: Verkomplizieren Sie die Sache nicht.
- Nutzen Sie Self-Service-Angebote: Self-Service ist von grundlegender Bedeutung. Wenn Sie Berater oder Beraterinnen benötigen, die kommen und alles für Sie erledigen, können Sie sich nicht selbst weiterentwickeln. Wählen Sie Tools und Produkte aus, die auf gut unterstützten Standards basieren, indem Sie Community-Dokumentation, Best Practices, Infosammlungen usw. nutzen. So können Sie entweder alles selbst machen oder Ihr Team in der Nutzung von populären und gut dokumentierten Tools schulen.
Distributed Tracing ist das Richtige
Sie haben nun hoffentlich einen Eindruck von Distributed Tracing-Tools gewonnen, die schon längst nicht mehr nur Entwicklern und cloud-nativen Betriebsteams vorbehalten sind. Mittlerweile handelt es sich um Mainstream-Tools, mit denen Unternehmen ihre Servicequalität erhöhen und gegen blinde Flecken in der Beobachtbarkeit vorgehen können.
Auch wenn Sie vielleicht gedacht haben, diese Technologie wäre nichts für Ihren Job, trifft dies höchstwahrscheinlich nicht zu. Distributed Tracing ist ein hilfreiches Tool, das wir alle in unserem Werkzeugkoffer haben sollten. Mit etwas Recherche und Training finden Sie schnell heraus, inwieweit diese Technologie zu Ihrem Unternehmen passt und wie Sie sie passend zu Ihren Anwendungsfällen und Management-Tools implementieren können.
Patrick Hubbard, Head Geek bei SolarWinds