Eclipse Magazin15 - Performance Logging

  • View
    1.468

  • Download
    2

Embed Size (px)

Transcript

  • 1. ArchitekturAspectJ und Equinox Performance Logging mit AspectJ und der Eclipse-Plug-in-ArchitekturSuberlich getrennt>> heiko seeberger und harald griesbeck bedingungen, z.B. fr den Build-ProzessPerformance-Kennzahlen einer Software durch Logging im produktivenund den Einsatz von AspectJ, worauf wirnoch detailliert eingehen werden.Betrieb zu ermitteln, ist geradezu eine Paradedisziplin fr aspekt- Eine wichtige Forderung an die ABS-orientierte Programmierung. Die Theorie ist simpel, in der Praxis sieht Anwendung ist die Einhaltung der in Formvon Service Level Agreements zugesicher-es etwas anders aus. In einer umfassenden Geschftsanwendungten Antwortzeiten. Schlielich sind fr ei-kommen AspectJ und die Eclipse-Plug-in-Architektur bei der Lsung ne unternehmenskritische Anwendung dieVerfgbarkeit und Performance noch vordieses Cross-Cutting Concerns zum Einsatz.der Funktionalitt die wichtigsten Anfor-derungen, so Dr. Ralf Schneider, CIO derAllianz Deutschland AG. Zur Sicherstel-Dlung der Performance ist ein verlsslichesGeschftslogik und zuknftig auch dasie Allianz Deutschland AG fhrt der-Reporting der Performance-KennzahlenUser Interface auf der Programmierspra-zeit in einem strategischen Gropro-im produktiven Betrieb erforderlich, umche Java und der Eclipse-Plattform [3] jekt ein neues Softwaresystem fr alle Be-beispielsweise die Frage Wie lange mussbasieren. Die Komponentenarchitektur lange des Versicherungs-Kerngeschftsein Sachbearbeiter warten, bis das Er-und Erweiterungsmglichkeiten von ein [1], [2]. Die neue Software, das Allianzgebnis der Personensuche, sortiert nachEquinox [4] (ehemals Eclipse Runtime Business System (ABS), stellt den KundenName und Postleitzahl, angezeigt wird?Core) stellen wesentliche Merkmale der in den Mittelpunkt und ermglicht dembeantworten zu knnen. Anders als beimABS-Architektur dar und erfllen die fr Sachbearbeiter eine umfassende Bearbei-Profiling whrend der Entwicklungspha-ein strategisches Anwendungssystem tung der Kundenanliegen, die sich durchse geht es hierbei um die kontinuierlichewichtigen Anforderungen an Modula- die tglichen Telefonate, den Brief- undPerformance-Ermittlung in Produkti-ritt, Flexibilitt und Erweiterbarkeit. E-Mail-Verkehr ergeben. Die ABS-An-on mit dem Ziel, rasch Gegenmanah-Gleichzeitig definiert die Verwendung der wendung beruht auf einer modernen,men einleiten zu knnen, wenn eine signi-Eclipse-Plattform verschiedene Rahmen- mehrschichtigen Architektur, bei der die20eclipse magazin Vol. 15 www.eclipse-magazin.de

2. Architektur AspectJ und Equinox gang nennt man Weaving. AspectJ bietet fikante Verschlechterung der Performancekomplexe Problemstellungen leichterzum einen die Mglichkeit, das Weaving erkannt wird. In der ABS-Anwendunglsen lassen, wenn sie in berschaubarebeim Kompilieren durchzufhren (Com- werden hierfr im Prinzip Start- und End- und disjunkte Hppchen zerlegt sind.pile-time Weaving), zum anderen erlaubt Zeitpunkte von definierten Messstrecken Software sollte somit aus Modulen be-AspectJ, das Weaving zur Laufzeit ge- in Logfiles ausgegeben, zentral gesammelt stehen, die mglichst wenig berlappen-nauer gesagt, beim Laden der betroffenen und dann ausgewertet. de Funktionalitt aufweisen. Java bietetKlassen durch die Java Virtual Machine Dieses Performance Logging ist einals objektorientierte Sprache bereitsdurchzufhren (Load-time Weaving). Bei- typischer Cross-Cutting Concern [5], hatstrukturelle Konzepte zur Modularisie-de Varianten ermglichen das Einweben also nichts mit der grundlegenden bzw.rung, z.B. Packages, Klassen, Methodenvon Aspekten in fremden Libraries. Im primren Funktionalitt zu tun, wie etwaetc. Mit dieser Strukturierung werdenkonkreten ABS-Projekt besteht die Not- der Suche von Personen anhand von Na- die Primary Concerns abgebildet, z.B.wendigkeit, Performance-Messpunkte me und Postleitzahl. Vielmehr durchsetzteine Klasse Person mit den Propertiesim sogenannten ABS-Kern, der als fertige der Code zum Ausgeben der MesspunkteVor- und Nachname. In der Praxis gibtPlattform zur Verfgung steht, einzubau- vielerorts den primren Code. Diese Ver-es jedoch so gut wie immer Belange, dieen. Mithilfe der Weaving-Technik kann mischung verschiedener Belange verletzt sich mithilfe der objektorientierten Pro-diese Anforderung elegant gelst werden. das bewhrte Prinzip der Separation ofgrammierung nicht modularisieren las- Concerns [6] und es entsteht dadurchsen. Typische Beispiele fr Cross-CuttingModularisierung par excellence unverstndlicher und schlecht wartbarer Concerns sind Querschnittsfunktionen Programm-Code. Die aspektorientiertewie Logging, Tracing, Security usw., alsoDas bereits erwhnte Prinzip der Se- Programmierung [7] adressiert dieses Prob-nichtfunktionale Anforderungen. Mitparation of Concerns besagt, dass sich lem und bietet die Mglichkeit, auch die Cross-Cutting Concerns zu modularisie- ren, wodurch wiederum eine verbesserte Softwarequalitt erreicht wird. Da die ABS-Anwendung mit der Programmier- sprache Java und mit der Entwicklungs- umgebung Eclipse SDK entwickelt wird, bietet sich die Verwendung von AspectJ [8] an. AspectJ stellt den Quasi-Standard fr Aspektorientierung mit Java dar und verfgt mit AJDT [9] ber eine hervorra- gende Integration in das Eclipse SDK. As- pectJ ergnzt die objektorientierte Spra- Anzeige che Java um aspektorientierte Konzepte. Dabei werden die so genannten Primary Concerns, d.h., die grundlegenden An- forderungen an ein Software-System, mit objektorientierten Mitteln entwickelt, z.B. mit Java-Konstrukten wie Packages, Klassen, Methoden etc. Die Cross-Cutting Concerns werden dann mit den erweiter- ten Sprachmitteln von AspectJ, z.B. mit As- pekten, Advices und Pointcuts, umgesetzt. Fr Details sei auf die Dokumentation auf der AspectJ-Website verwiesen. Ein weiterer und entscheidender Punkt, der im konkreten Fall zum Einsatz von aspektorientierter Programmierung fhrte, ist die Fhigkeit von AspectJ, nicht nur auf Quellcode-Ebene arbeiten zu kn- nen, sondern auch mit vorhandenen Lib- raries. Das bedeutet, dass auch in vorkom- piliertem Code Aspekte eingebaut werden knnen. Die getrennten Belange, also der primre Code und die Cross-Cutting Con- cerns, werden in der aspektorientierten Programmierung getrennt erstellt und mssen in einem spteren Schritt wieder zusammengefhrt werden. Diesen Vor- 21 www.eclipse-magazin.de eclipse magazin Vol. 15 3. Architektur AspectJ und Equinoxden Cross-Cutting Concerns durch As-gab es Bedenken hinsichtlich der Ver- pekte modularisiert und diese wiederumwendung des Patches. Diese wurden in in Aspekt-Bundles.einem Smoke-Test besttigt: einerseits Die separierten Belange mssendurch Warnmeldungen, die ohne Patch letztendlich wieder zusammengefhrt nicht auftraten, andererseits durch Ab- Abb. 1: Cross-Cutting Concerns werden. Dieser Vorgang wird, wie be-brche beim Kompilieren von reinen werden in Aspekten modularisiert reits erwhnt, als Weaving bezeichnet.Ressource-Plug-ins, d.h. Plug-ins ohne Bei AspectJ gibt es dafr zwei Methoden:Klassen. Letztendlich erschien dadurch Compile-time Weaving und Load-timeder Einsatz von AspectJ Compile-time Weaving. Beim Compile-time WeavingWeaving als zu riskant und die hohen werden Klassen und Aspekte bereitsAbhngigkeiten der einzelnen Versions- durch den AspectJ Compiler whrendstnde als zu unflexibel, sodass Compile- Abb. 2: Marker zeigen die Stellen, an denen Aspekte verwoben werden des Build-Prozesses zusammengefhrt time Weaving fr die ABS-Anwendung und der vollstndige Byte-Code erzeugt. nicht zum Einsatz kommt. Somit ist der AOP-Ansatz fr die Lauf-Bei Load-time Weaving findet die zeitumgebung vllig transparent. EinZusammenfhrung von Klassen und weiterer Vorteil von AspectJ Compile- Aspekten erst zur Laufzeit genauer ge- time Weaving ist die gute Untersttzung sagt beim Classloading statt. Dazu ist Abb. 3: Weaving erzeugt eine Abhngigkeit zum in der Entwicklungsumgebung durch die es ntig, das Classloading entsprechend Aspekt AJDT Plug-ins. So werden zum Beispiel zu modifizieren. AspectJ bietet dafr eine durch Marker diejenigen Stellen hervor- Untersttzung in Form von JVM Agents gehoben, an denen Aspekte verwobenoder speziellen ClassLoaders [15] an. aspektorientierter Programmierung las- werden (Abb. 2). Auch das Debugging Load-time Weaving bietet den Vorteil, sen sich auch diese Cross-Cutting Con- funktioniert vllig transparent.die Auswahl der Klassen, die mit Aspek- cerns modularisieren, sodass Klassen ten verwoben werden, nicht von Anfang und Aspekte bzw. deren Methoden und In der Praxis zu riskantan zu begrenzen. Whrend beim Com- Advices keine berlappenden Belange pile-time Weaving nur die beim Build- mehr enthalten (Abb. 1).Allerdings verlsst Compile-time Wea- Prozess vorliegenden Klassen verwoben Neben dieser Form von Modularisie-ving die Modularisierung bereits beim werden, knnen spter hinzukommen- rung auf Mikroebene dient das Kon-Build-Prozess. Der oben aufgefhrte de nicht mehr bercksichtigt werden. zept von Komponenten [10] ebenfalls zur Vorteil der Kombination von AspectJ Fr Security-Aspekte kann dies ein sehr Separation of Concerns, jedoch auf gr- mit den dynamischen Eigenschaften von wichtiges Kriterium sein, z.B. wenn vor berer Ebene. Equinox implementiert mitOSGi geht dadurch verloren. Abgesehen jeglicher Ausfhrung einer execute()- OSGi [11] eine dynamische Komponen- von diesen prinzipiellen Gesichtspunk- Methode eines IAction-Interfaces zuvor tenarchitektur, welche die Zusammen-ten spielt natrlich die Praxistauglichkeit die Authentifizierung und Autorisierung fhrung bzw. Installation von Kompo-eine entscheidende Rolle. Umfangreiche berprft werden sollen. nenten (Bundles im OSGi-Jargon) zum Anwendungen werden in der Regel nicht Der groe Vorteil von Load-time sptestmglichen Zeitpunkt erlaubt, auf einem Entwicklerrechner gebaut, Weaving ist der Erhalt der Modulari- nmlich zur Laufzeit. Somit lassen sich sondern es kommt ein zentraler Build- sierung ber den Build-Prozess hinweg Bundles von zusammen