© Excellent backgrounds/Shutterstock.com
Java Magazin
Teil 4: Java EE Microservices überwachen

Anwendungen röntgen

Autos informieren den Fahrer über Geschwindigkeit, Drehzahl, Tankanzeige, Temperatur und manchmal auch über Ladedruck oder das aktuelle Drehmoment des Motors. Außerdem verfügen alle modernen Fahrzeuge über eine Diagnoseschnittstelle. Espressomaschinen zeigen Druck und Temperatur des Kessels an. Sogar Rasierer messen die Zeit und informieren den Benutzer über bevorstehenden Klingenwechsel. Komplexe Enterprise-Anwendungen dagegen werden meistens ohne jegliches Monitoring betrieben. Das soll bei unserer Microservices-Anwendung mit Java EE nicht der Fall sein.

Adam Bien


ArtikelserieTeil 1: Microservices mit Java EETeil 2: Microservices mit Java EE, Application Server und DockerTeil 3: Microservices mit Java EE, Fehlerbehandlung und KonfigurationTeil 4: Java EE Microservices überwachenTeil 5: Java EE Microservices anwendungsbezogen überwachen

Alle Monitoring- und Diagnostik-Use-Cases und -User-Stories werden in der Entwicklung bewusst ignoriert. Man verlässt sich lieber auf die in Produktion installierte Monitoring- und Diagnostiksoftware und hofft, dass man ohne jegliche Entwicklungsaufwände hilfreiche Information aus der Software nachträglich extrahieren kann. Die JVM sieht die Installation von Agenten vor [1]. Diese haben direkten Zugriff auf den Bytecode während der Ausführung und werden oft von den Monitoringsystemen verwendet. Andere Performancemonitoring- und Diagnostiksysteme basieren auf Bytecodemanipulationen und dekorieren so die relevanten Methoden. Man betrachtet das Monitoring als ein Cross-Cutting Concern [2] und versucht mit Methoden der aspektorientierten Programmierung (AOP) [3], wertvolle Informationen nachträglich zu erhalten: Eine Benutzeranfrage kann auf dem Server von dem Parsing des HTTP Requests bis zur Kommunikation mit der Datenbank überwacht werden. So lassen sich Statistiken über SQL-Statements, Threads, Performance, Speicherbedarf, Flaschenhälse und die am häufigsten aufgerufenen Methoden sammeln. Man erhält eine transaktionale Sicht auf das System und versucht, wichtige Use Cases nachträglich hoffentlich sinnvoll benannten Methoden zuzuordnen. Diese Strategie übertragen auf PKWs bedeutet: Moderne PKWs würde man ohne Geschwindigkeitsanzeige oder Drehzahlmesser ausliefern und sich dann auf das bereits existierende GPS-Satellitensystem und Ultraschall verlassen.

Vergessene Fähigkeiten

Was viele vergessen: Ein Applikationsserver verfügt bereits über detailliertes Wissen über die Vorgänge in den deployten Komponenten. Denn Applikationsserver verwalten den Lebenszyklus von Servlets, EJBs sowie CDI-Komponenten und sind für das Pooling von JDBC Connections und Threads zuständig. Sicherheit, Nebenläufigkeit und Transaktionalität werden bereits intern mit AOP-Mitteln implementiert. Ein Applikationsserver nutzt die Dependency Injection für die Dekoration von Komponenten mit standardisierten Querschnittsaspekten. So werden beispielsweise für jede mit @Stateless annotierte Klasse Transaktions-, Sicherheits- und Nebenläufigkeitsaspekte installiert.

Seit Dezember 2001 implementieren alle Java-EE-Applikation...

Java Magazin
Teil 4: Java EE Microservices überwachen

Anwendungen röntgen

Autos informieren den Fahrer über Geschwindigkeit, Drehzahl, Tankanzeige, Temperatur und manchmal auch über Ladedruck oder das aktuelle Drehmoment des Motors. Außerdem verfügen alle modernen Fahrzeuge über eine Diagnoseschnittstelle. Espressomaschinen zeigen Druck und Temperatur des Kessels an. Sogar Rasierer messen die Zeit und informieren den Benutzer über bevorstehenden Klingenwechsel. Komplexe Enterprise-Anwendungen dagegen werden meistens ohne jegliches Monitoring betrieben. Das soll bei unserer Microservices-Anwendung mit Java EE nicht der Fall sein.

Adam Bien


ArtikelserieTeil 1: Microservices mit Java EETeil 2: Microservices mit Java EE, Application Server und DockerTeil 3: Microservices mit Java EE, Fehlerbehandlung und KonfigurationTeil 4: Java EE Microservices überwachenTeil 5: Java EE Microservices anwendungsbezogen überwachen

Alle Monitoring- und Diagnostik-Use-Cases und -User-Stories werden in der Entwicklung bewusst ignoriert. Man verlässt sich lieber auf die in Produktion installierte Monitoring- und Diagnostiksoftware und hofft, dass man ohne jegliche Entwicklungsaufwände hilfreiche Information aus der Software nachträglich extrahieren kann. Die JVM sieht die Installation von Agenten vor [1]. Diese haben direkten Zugriff auf den Bytecode während der Ausführung und werden oft von den Monitoringsystemen verwendet. Andere Performancemonitoring- und Diagnostiksysteme basieren auf Bytecodemanipulationen und dekorieren so die relevanten Methoden. Man betrachtet das Monitoring als ein Cross-Cutting Concern [2] und versucht mit Methoden der aspektorientierten Programmierung (AOP) [3], wertvolle Informationen nachträglich zu erhalten: Eine Benutzeranfrage kann auf dem Server von dem Parsing des HTTP Requests bis zur Kommunikation mit der Datenbank überwacht werden. So lassen sich Statistiken über SQL-Statements, Threads, Performance, Speicherbedarf, Flaschenhälse und die am häufigsten aufgerufenen Methoden sammeln. Man erhält eine transaktionale Sicht auf das System und versucht, wichtige Use Cases nachträglich hoffentlich sinnvoll benannten Methoden zuzuordnen. Diese Strategie übertragen auf PKWs bedeutet: Moderne PKWs würde man ohne Geschwindigkeitsanzeige oder Drehzahlmesser ausliefern und sich dann auf das bereits existierende GPS-Satellitensystem und Ultraschall verlassen.

Vergessene Fähigkeiten

Was viele vergessen: Ein Applikationsserver verfügt bereits über detailliertes Wissen über die Vorgänge in den deployten Komponenten. Denn Applikationsserver verwalten den Lebenszyklus von Servlets, EJBs sowie CDI-Komponenten und sind für das Pooling von JDBC Connections und Threads zuständig. Sicherheit, Nebenläufigkeit und Transaktionalität werden bereits intern mit AOP-Mitteln implementiert. Ein Applikationsserver nutzt die Dependency Injection für die Dekoration von Komponenten mit standardisierten Querschnittsaspekten. So werden beispielsweise für jede mit @Stateless annotierte Klasse Transaktions-, Sicherheits- und Nebenläufigkeitsaspekte installiert.

Seit Dezember 2001 implementieren alle Java-EE-Applikation...

Neugierig geworden?


    
Loading...

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