Application Performance Monitoring (APM) von Microservices und FaaS in OpenShift

08.01.2020

Autonome Fahrfunktionen werden immer komplexer und auch die Zahl der Servicefunktionen im Fahrzeug wächst. Da ist es gerade in der Entwicklung wichtig, diese Herausforderungen zu meistern. Für diesen Fall bieten sich sogenannte Microservices an, die eine massive Parallelisierung von Diensten erlauben. Doch warum macht der Einsatz von Microservices hier Sinn und wie kann man da den Überblick behalten?

Autonome Fahrfunktionen

Da autonome Fahrfunktionen und alles was dazu gehört, sehr komplex sind, braucht es von Beginn an eine Architektur, die diesen Herausforderungen gewachsen ist. Microservices modularisieren Software und liefern damit genau das, was benötigt wird, um Software erweiterbar und wartbar zu gestalten. Die einzelnen, unabhängig voneinander entwickelten und deployten Microservices lassen sich einfacher tauschen, updaten oder erweitern. All das sind Dinge, die eine Skalierbarkeit schaffen, die bei großen Projekten, wie im Bereich autonomem Fahren, wichtig sind.

Ähnlich wie ein Microservice, kann an dieser Stelle auch ein Function as a Service (FaaS) eingesetzt werden. Dieser hat den Vorteil, dass er nicht wie der Microservice durchgehend läuft, sondern nur gestartet wird, wenn die Funktion aufgerufen wird. Bezahlt wird dann auch nur die tatsächliche Rechenzeit, die von der Funktion in Anspruch genommen wird.

Setzt man diese Microservices oder FaaS nun in einzelne Container (z.B. OpenShift), kann jeder dieser Services in einer anderen Programmiersprache auf einer anderen Plattform implementiert sein und trotzdem über eine REST Schnittstelle mit den anderen kommunizieren. Ebenso kann jeder Service einzeln skaliert werden.

Microservices Aufbau v2 eigene Darstellung
Abbildung 1: Microservices Aufbau v2 eigene Darstellung

Warum sollte man Microservices überwachen?

Aus demselben Grund wieso man Systeme im generellen überwacht – weil alle Systeme Fehler aufweisen können. Ein System ist nicht immer „Up“ oder „Down“, es kann auch in einem herabgesetzten Zustand sein, was beispielsweise Performance Einbußen mit sich bringt. Ein Monitoring zeigt solche Zustände auf und kann dadurch eventuell auch einen Ausfall verhindern.

Dienstleistungen, die intern oder für externe Kunden erbracht werden, werden oft im Rahmen eines Service Level Agreement (SLA) festgehalten. Ohne Monitoring ist es unmöglich zu wissen, ob das SLA eingehalten oder verletzt wird.

Überwachungssysteme produzieren zudem im Laufe der Zeit wertvolle Daten, die zur Verbesserung der Leistung genutzt werden können. Fehler- und Leistungsdaten können analysiert werden, um nach Mustern bei Systemausfällen oder Performance Einbrüchen zu suchen, die mit Ereignissen korreliert werden können.

Monitoring ist für die Aufrechterhaltung belastbarer und verfügbarer Systeme unerlässlich. Gerade in der Entwicklung autonomer Fahrfunktionen wird mit großen Datenmengen in sehr komplexen Algorithmen gearbeitet. Da ist es wichtig, dass das System zuverlässig und performant läuft.

Monitoring von Microservices in OpenShift

Monitoring ist ein Prozess der Berichterstattung, Sammlung und Speicherung von Daten. Es gibt einige gängige Kennzahlen im Monitoring für Microservices in Openshift, die man aufzeichnen kann. Dazu gehören:

  • Anwendungskennzahlen
    Zeichnet Kennzahlen auf, die innerhalb der Anwendung messbar sind. Das könnte beispielsweise Nutzer Registrierungen sein oder wie viele Fahrzeug Simulationen an einem Tag gemacht werden, um ein Beispiel aus den autonomen Fahrfunktionen aufzuzeigen.
  • Plattformkennzahlen
    Hier werden Kennzahlen der Infrastruktur gemessen, wie zum Beispiel die Ausführungszeit bestimmter Funktionen oder die Auslastung einer GPU für die Fahrzeug Simulation. Das sind auch Kennzahlen, bei denen Performance Probleme sichtbar gemacht werden können.
  • System Events
    Hier geht es grundlegend um betriebliche Änderungen oder Code-Bereitstellungen. Diese führen häufig auch zu Systemfehlern oder Ausfällen. Solche Änderungen können dann mit dem Systemverhalten korreliert werden, um zu sehen, ob es da Zusammenhänge gibt.

Doch wie sieht so eine Monitoring Lösung nun konkret aus. Im Folgenden wird exemplarisch die Monitoring Lösung Dynatrace aufgezeigt:

Microservice Dynatrace Monitoring eigene Darstellung
Abbildung 2: Microservice Dynatrace Monitoring eigene Darstellung

Der Dynatrace OneAgent Operator wird als Container auf der OpenShift Node ausgeführt. Dieser OneAgent „setzt“ sich in alle anderen Container und überwacht diese anschließend. Damit kann sehr schnell eine komplette OpenShift Node und die darin liegenden Microservices, überwacht werden.

Fazit

Der Einsatz von Microservices bringt enorme Vorteile, bei der Umsetzung großer Softwareprojekte, wie die Entwicklung autonomer Fahrfunktionen. Doch um ein solch großes Projekt dauerhaft stabil und performant zu betreiben, ist es wichtig, dass diese Services und Funktionen durch den Einsatz einer Monitoring Lösung wie z.B. Dynatrace überwacht werden. Danach kann das System möglichst performant betrieben und deutlich einfacher skaliert werden.

 

Mehr über Connected Car Services erfahren

 


Hier geht es zu Teil 1 und 2 der Blogserie:

Teil 1: Mit der Cloud vielfältige Fahrszenarien lernen – Wie die Cloud bei großen Datenmengen in der Testausführung von autonomen Fahrzeugen unterstützt

Teil 2: Codequalität für autonome Fahralgorithmen gewährleisten


Weitere Artikel zu diesem Thema:

DevOps, Microservices & Big Data: Drei Top IT-Themen, die Automobilhersteller künftig beschäftigen werden

Skalierbare Microservices mit Docker und HAProxy

Wussten Sie schon, was Microservices sind?


Quellen:

https://www.all-electronics.de/evolutionaere-fahrzeug-architektur-devops/

https://thenewstack.io/the-hows-whys-and-whats-of-monitoring-microservices/

Dynatrace Logo:

https://dt-cdn.net/wp-content/uploads/2016/12/dynatrace_logo.png

OpenShift Logo:

https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/OpenShift-LogoType.svg/1200px-OpenShift-LogoType.svg.png

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*