Suchen

Anwendungsüberwachung in Microservice-Umgebungen Microservices einem Health Check unterziehen

Autor / Redakteur: Mia Liang * / Stephan Augsten

Microservices sind nicht nur eine gangbare Alternative zum traditionellen monolithischen Stil der Anwendungsentwicklung geworden, sie kommen mittlerweile bevorzugt zum Einsatz. Umso wichtiger ist es, die Dienste selbst zu überwachen.

Das Health Montoring von Microservices liefert dem Entwickler wichtige Erkenntnisse, um die Leistung und Nutzererfahrung einer Anwendung zu verbessern.
Das Health Montoring von Microservices liefert dem Entwickler wichtige Erkenntnisse, um die Leistung und Nutzererfahrung einer Anwendung zu verbessern.
(Bild: ar130405 / Pixabay )

Statt eine Anwendung als massive, eng verwobene Einheit zu strukturieren, brechen Microservices die Applikation auf eine Reihe kleiner und lose gekoppelte Dienste herunter. Jeder Service bildet eine Kernfunktion der App ab, so dass sie sich zu einem Ganzen zusammenfügen – auf eine Art, die bessere Skalierbarkeit, höhere Flexibilität und schnellere Release-Zyklen verspricht.

Was ist Health Monitoring?

Im Kontext von Microservices gewährt Health Monitoring einen Einblick in einige Schlüsselbereiche der Anwendung und ihre Performance. Jede damit verbundene Maßzahl ließe sich dabei nur schwierig, wenn überhaupt, auf eigene Faust ermitteln.

Das Monitoring umfasst Bereiche wie:

  • Anwendungsmetriken: Maßzahlen, die speziell mit der Applikation zusammenhängen. Hier könnte man beispielsweise genau untersuchen, wie viele Benutzerregistrierungen in der vergangenen Stunde erfolgreich abgeschlossen wurden oder wie viele andere spezifische (eigens definierte) Ereignisse in einem bestimmten Zeitrahmen abgeschlossen wurden.
  • Plattform-Metriken: Diese gewähren einen tieferen Einblick in die inneren Abläufe der Infrastruktur selbst. An dieser Stelle erhält man einen Einblick in Metriken wie die durchschnittliche Ausführungszeit von häufig wiederkehrenden Datenbankabfragen, durchschnittliche Fehlerraten für jeden Microservice und mehr.

Das klingt nicht nur grundsätzlich kompliziert, in der Praxis ist es das auch. Dankenswerterweise existiert eine ganze Palette an Tools, die derartige Informationen über ein einfach zu bedienendes Dashboard bereitstellen.

Diese Stufe der Visualisierung bereitet kritische Daten so anschaulich auf, dass buchstäblich jeder sie verstehen kann. Dies erlaubt es allen Projektbeteiligten, bessere und fundiertere Entscheidungen vor, während und nach der Entwicklung und Bereitstellung zu treffen.

Warum ist das Monitoring des Zustands von Microservices wichtig?

Im weitesten Sinne sind das Debugging von Microservices und das Monitoring des Gesundheitszustands der einzelnen Dienste wichtig, weil sie einen mit Kontext versorgen; eben jenem Kontext, der notwendig ist, um angesichts eines genauen Problems die richtigen Entscheidungen exakt zum richtigen Zeitpunkt zu treffen.

Der Sinn erschließt sich mit einem Blick auf den monolithischen Entwicklungsstil der Vergangenheit. Wenn im Softwaremonolithen etwas kaputt ging, musste man meist viel Zeit und Mühe aufbringen, allein um das Problem zu identifizieren. Gelang dies schließlich, war alles so eng miteinander verflochten, dass eine einzige Änderung an der betroffenen Funktion einen unerwarteten Welleneffekt über die gesamte Infrastruktur erzeugen konnte.

An diesem Punkt wurden aus einem kleinen Problem plötzlich fünf größere, die man allesamt in den Griff bekommen musste, bevor das fertige Produkt wieder an die Endanwender ausgeliefert werden konnte. Im Gegensatz dazu ist innerhalb einer Microservices-Architektur jeder Dienst deutlich kleiner und wird unabhängig entwickelt.

Im Falle eines Problems wissen Administratoren nicht nur, welcher Microservice betroffen ist. Mit den richtigen Monitoring-Tools an der Hand lässt sich auch herausfinden, warum ein Problem aufgetreten ist. Dies versorgt den Entwickler mit dem richtigen Kontext, um einzugreifen und den ursächlichen Fehler zu beheben, statt das Problem oberflächlich anzugehen und alles nur rudimentär wieder zum Laufen zu bringen.

Ein weiterer Vorteil im Vergleich zum Monolithen: Da das Deployment unabhängig ist, lassen sich Änderungen an einem Microservice noch dazu durchführen, ohne sich Gedanken über die Auswirkungen auf den Rest der Anwendung machen zu müssen. Man wird aber nie an diesen Punkt gelangen, solange das Monitoring von Microservices nicht oberste Priorität genießt.

Wie sich der Zustand von Microservices überwachen lässt

Eine der besten Möglichkeiten, den Gesundheitszustand von Microservices zu überwachen, ist Application Performance Monitoring oder kurz APM. Entsprechende APM-Tools unterstützen Development- und Admisistratoteams dabei, eine von den Usern erwartete fehlerfreie Nutzererfahrung aufrecht zu erhalten. Gewährleistet wird dies durch responsive Applikationen in dynamischen Anwendungsumgebungen, die ihrerseits eine Continuous Integration und Continuous Delivery (CI/CD) unterstützen.

APM erzeugt ein nahezu beispielloses Maß an Transparenz über die gesamte Anwendung hinweg – etwas, das für Unternehmen in der heutigen Zeit immer wichtiger wird. Application Performance Monitoring umfasst eine Reihe wichtiger Funktionen – einschließlich (aber nicht beschränkt auf):

  • Anomalien-Erkennung: APM erlaubt tiefere Einblicke in Betriebsabläufe und hilft dabei, Anomalien frühzeitig zu erkennen, so dass Sie Service-Unterbrechungen vorhersehen (und verhindern) können.
  • Traffic-Überwachung und -Optimierung: Mit APM lässt sich der reale Anwender-Traffic überwachen, um die User Experience nicht nur konsistent, sondern auch in allen Bereichen optimal zu halten.
  • Automatisierung von Workflows und Provisionierung: APM stellt intelligente Trigger bereit, die mit der automatischen Remediation integriert ist, um so viel wie möglich zu automatisieren. DevOps-Teams werden entlastet und können sich auf die wirklich wichtigen Aufgaben konzentrieren.

Protokollieren von Health Checks

APM-Tools erlauben darüber hinaus das Logging der Zustandsüberwachung. Dies ist auch deshalb wichtig, weil damit nicht nur ersichtlich wird, was im Moment vor sich geht. Es bietet auch aus der Vogelperspektive einen Überblick über die Performance von Anwendungen und Services über ihre gesamte Historie hinweg.

Dies versetzt Development- und Operations-Teams in eine ausgezeichnete Position, um Trends und Muster aufzudecken, die sonst unentdeckt geblieben wären. Treten zum Beispiel immer wieder dieselben wenigen Probleme auf, kann man zeitnah sinnvolle Maßnahmen ergreifen, um diese zu beseitigen – und so die Qualität des Produkts auch für Endbenutzer zu verbessern.

* Mia Liang ist freie Autorin bei Girls Write Tech.

(ID:46984557)