Microservice-Architekturen effizient betreiben

CIOProjekte

Die großen, monolithischen Applikationen der Vergangenheit bringen alles mit, was für ih reibungsloses Funktionieren notwendig ist. Allerdings verursacht jede Änderung riesigen Aufwand. Microservices versprechen hier Abhilfe. Aber sie erhöhen auch die Komplexität und erfordern daher geeignete Management-Tools.

Unternehmen aller Größen und Branchen digitalisieren und automatisieren zunehmend ihre Kern-Geschäftsprozesse. Ziel dabei ist es, auf neue Anforderungen von Kunden und Mitarbeitern schnell und flexibel zu reagieren und IT-Services performant zur Verfügung zu stellen.

Dabei steigen durch dynamisches Nutzerverhalten und hohe Kundenerwartungen die Anforderungen an die IT-Infrastruktur, ihre Administrierbarkeit sowie die Performance und Verfügbarkeit von Applikationen. Viele Unternehmen setzen daher auf Microservices: Dabei werden monolithische Applikationen in kleinere Komponenten aufgespalten, um agiler und schneller individuelle Geschäftsanforderungen adressieren zu können.

Karsten Flott, der Autor diese Gastbeitrags für silicon.de, ist Sales Engineer bei AppDynamics in Deutschland (Bild: AppDynamics).
Karsten Flott, der Autor diese Gastbeitrags für silicon.de, ist Sales Engineer bei AppDynamics in Deutschland (Bild: AppDynamics).

Microservices überzeugen durch viele Vorteile: Sie sind untereinander unabhängig und lassen sich damit autonom skalieren sowie getrennt voneinander entwickeln. Darüber hinaus sind Microservices klein, übersichtlich und können bei Bedarf durch eine Neuimplementierung ersetzt werden. Tritt ein Problem auf, reicht es aus, den betroffenen Microservice zu warten, anstatt weite Teile des Systems lahmzulegen. Der Aufwand für Wartung und Administration hält sich dadurch in Grenzen.

Komplexere Überwachung und Verwaltung von Systemressourcen

Aber das Plus an Flexibilität und Skalierbarkeit hat auch seinen Preis: So ist die Ende-zu-Ende Überwachung von Anwendungen in Microservice-Architekturen weitaus komplizierter als in herkömmlichen und weniger verteilten Infrastrukturen. Die Kommunikation der Microservices untereinander erfordert ein zusätzliches Schnittstellen-Management, welches wiederum ein potenzielles Bottleneck darstellen kann, das in der Ende-zu-Ende Überwachung berücksichtigt werden muss.

Die Verwaltung der Verteilung der Microservices wird durch Container-Technologien wie Docker vereinfacht, erfordert aber natürlich auch eine Überwachung, wenn man die gesamte Auslieferungskette einer Applikation in der Überwachung berücksichtigen will. Eine weitere Herausforderung: Jede Benutzertransaktion nimmt in der Regel eine Vielzahl unterschiedlicher Dienste in Anspruch, was das Betriebsmanagement weiterhin erschwert. Darüber hinaus werden Microservice-Architekturen meist von mehreren kleinen Entwickler-Teams betreut, die wesentlich häufiger neuen Code in der Produktionsumgebung implementieren, was negativen Einfluss auf die laufenden Prozesse haben kann.

Letztlich können sich zudem Probleme für die Anwender ergeben: So kann schon ein Fehler in einem einzigen Dienst die User Experience signifikant verschlechtern.

Flow Map der Software für Application Performance Management von App Dynamics(Screenshot: AppDynamics)
Flow Map der Software für Application Performance Management von App Dynamics (Screenshot: AppDynamics)

Wie lässt sich nun eine Microservice-Architektur trotz der Herausforderungen effizient und stabil betreiben? Diese muss – wie alle Software-Architekturen – effektiv überwacht und gewartet werden. Wichtig ist hierfür, das Applikations- und Transaktionsverhalten in Echtzeit zu beobachten und in immer komplexeren Infrastrukturen nachzuverfolgen. Zudem bedarf es eines Kostenmodells, welches das Monitoring von vielen kleinen Instanzen berücksichtigt.

Neben einer diskreten, asynchronen Transaktionsverfolgung ist auch ein Screening der Komponenten erforderlich, um so ihren fehlerfreien Betrieb sicherzustellen. Zu empfehlen ist hierfür eine Application Performance Management (APM)-Software. Diese überwacht zuverlässig alle Dienste und ermöglicht in Echtzeit Aussagen über die Performance der Komponenten und des gesamten Systems.

Optimierung von Microservices mit APM-Lösungen

Wie können mit einer solchen Software entsprechende IT-Architekturen optimiert werden? Ein Beispiel: In hochskalierbaren Microservice-Umgebungen versuchen oft verschiedene Services gleichzeitig, die gleichen Daten anzusprechen. Dies erfolgt über einzelne Threads, die auf Objekte zugreifen. Dabei kann es sehr häufig zu einer sogenannten Thread Contention kommen. Eine Thread Contention entsteht, wenn ein Thread auf ein Objekt zugreifen möchte und geblockt wird, weil zur gleichen Zeit schon ein anderer Thread dieses Objekt hält.

Die Transaction Scorecad zeigt die Leistungsfähigkeit einer Transaktion aus Nutzersicht, gibt aber dem Administrator zugleich auch die Möglichkeit, alle Abhängigkeiten und mögliche Probleme in erforderlichen Ressourcen aufzuspüren. (Screenshot: AppDynamics))
Die Transaction Scorecad zeigt die Leistungsfähigkeit einer Transaktion aus Nutzersicht, gibt aber dem Administrator zugleich auch die Möglichkeit, alle Abhängigkeiten und mögliche Probleme in erforderlichen Ressourcen aufzuspüren. (Screenshot: AppDynamics)

In diesem Fall kommt es zu Timeouts und Verzögerungen der Antwortzeiten. Eine APM-Software sollte daher die Möglichkeit bieten einfach und schnell durch eine Real Time Thread Contention Analyse die geblockten Threads zu identifizieren, um dadurch deren Auswirkungen auf Performance-Engpässe entsprechend schnell und einfach zu erkennen.

Beschleunigt wird dies, wenn die Technologie Informationen über die geblockte Zeit, das blockende Objekt sowie die blockende Codezeile bereitstellt. So verkürzt die Thread-Contention-Analyse die Zeit für das Erkennen und Beheben von Performance-Problemen durch “blocked Threads” signifikant, was die Leistungsfähigkeit und Schnelligkeit von Microservice-Umgebungen deutlich erhöht.

Ein weiteres Feature moderner APM-Lösungen – die Service-Endpoint-Analyse – erkennt automatisch, welche Business-Transaktionen auf welche Microservices zugreifen. Zudem informiert die Funktion über entscheidende Key Performance Indikatoren (KPI) wie Aufrufe pro Minute, durchschnittliche Antwortzeiten und Fehler pro Minute. DevOps-Teams analysieren damit schneller die Fehlerursachen für Performance-Probleme einzelner Services und deren Auswirkungen auf die auszuführende Business-Transaktion. Dadurch lassen sich die Business Impacts eines Problems präziser bewerten. Gleichzeitig wird die Effizienz der Problemanalyse gesteigert.

Fazit

Microservice-Architekturen werden mehr und mehr eingesetzt, um flexible mit neuen Funktionen auf Kundenanforderungen reagieren zu können, ohne ganze Applikationen neu zu schreiben. Dies darf aber nie auf Kosten der Performance und der Verfügbarkeit von Applikationen geschehen.

Um entsprechende IT-Umgebungen effizient und stabil zu betreiben, müssen sämtliche Anwendungen, Transaktionen und Komponenten in Echtzeit Ende-zu-Ende überwacht und analysiert werden. Hierbei unterstützt eine moderne Application Performance Management Software. Sie liefert verlässliche Aussagen über die System-Performance und stellt Funktionen bereit, mit denen sich die Leistungsfähigkeit und Schnelligkeit von Microservice-Umgebungen steigern lassen. Dazu zählen unter anderem die Identifikation geblockter Threads, die Lieferung von KPI-Informationen zur effizienten Fehleranalyse sowie zur präzisen Vorhersage der Systemauslastung und Planung von Kapazitäten.