Eclipse Magazin15 - Performance Logging

  • Published on
    30-Jun-2015

  • 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 zusammengehrigen Klas- Prozess zum Einsatz. Eclipse stellt hierfr bis zum Zeitpunkt der Ausfhrung. sen oder Aspekten bilden, z.B. ein Bundle den PDE Build [12] zur Verfgung, der Die Builds von Primary Concerns und Person fr die Fachlichkeit rund um das auf Apache Ant [13] basiert. Dieser kann Querschnittsfunktionen knnen sepa- Domain Object Person und ein Bundle zum heutigen Stand (Eclipse 3.3.1) nicht rat erfolgen. Natrlich mssen die As- Security mit Aspekten fr Authentifizie-konfiguriert werden, um einen anderen pekte, auch wenn das Weaving erst beim rung und Autorisierung. Diese Bundles Compiler als den Standard-Compiler zu Classloading erfolgt, bersetzt werden. sind in sich selbst konsistent und knnen verwenden [14]. Daher liefert AJDT ei- Allerdings reicht es nun aus, nur dieje- unter Bercksichtigung ihrer Abhngig-nen Patch fr den PDE Build: Die Datei nigen Bundles, die Aspekte enthalten, keiten isoliert entwickelt und getestet pdebuild.jar im Plug-in org.eclipse.pde. mit dem AspectJ Compiler zu berset- werden. Wenn die Abhngigkeiten, diebuild muss durch eine modifizierte Datei zen. Dafr kann entweder ein separater jedes Bundle explizit deklarieren muss, ersetzt werden. Dadurch werden in der PDE Build mit Patch aufgesetzt werden minimal gehalten und geschickt entwor-Folge alle Plug-ins nicht mehr mit dem oder es wird einfach der Export aus der fen werden, z.B. in Form von Interfaces,originalen PDE Compiler bersetzt, son- Entwicklungsumgebung verwendet. In dann ergibt sich automatisch ein hoherdern mit dem AspectJ Compiler. Bei die- beiden Fllen kann der ursprngliche Grad an Separierung. In groen Projek-sem Vorgehen ist schon alleine aufgrund PDE Build fr alle primren Bundles ten hat man hierdurch die Mglichkeit,mglicher Versions-Inkompatibilitten unverndert bleiben. Im konkreten Fall die separierten Teile in unterschiedlichenallerhchste Vorsicht geboten. Der ge- der ABS-Anwendung wird als pragmati- Teams entwickeln zu lassen. Wie man nannte Patch wird von AJDT erst seit sche Zwischenlsung der Export aus der sieht, ergnzen sich OSGi und AspectJ Version 1.4.1 geliefert, die kompatibel Entwicklungsumgebung verwendet, da hervorragend, um eine durchgehendezu Eclipse 3.2.1 ist. Da die ABS-Anwen- AspectJ derzeit nur fr das Performance Modularisierung zu erzielen. Dabei wer- dung auf Eclipse 3.2.0 entwickelt wird,22eclipse magazin Vol. 15www.eclipse-magazin.de 4. ArchitekturAspectJ und Equinox det werden, sondern das Load-time Wea-Darber hinaus besteht Equinox As-ving muss in das Equinox Classloading pects aus dem obligatorischen Bundleintegriert werden.org.aspectj.osgi.service.weaving, dasWeiter mssen Bundles unter OSGiden Weaving Service anbietet. Fr die J9-ihre Abhngigkeiten explizit deklarie-JVM von IBM stellt das optionale Bundleren. Zur Entwicklungszeit geschieht org.aspectj.osgi.service.caching.j9 einendies durch Eintrge im so genannten Caching-Mechanismus zur Verfgung,Bundle-Manifest. Zur Laufzeit sind frwobei die Realisierung eines allgemeinen Abb.4:Eclipse-SupplementBundleein Bundle dann nur diejenigen Abhn- Caching Services fr beliebige JVMs eine erzeugtzurLaufzeitdientigenAbhngigkeitengigkeiten sichtbar, die explizit importiert noch offene Aufgabe der Community ist.werden. Wenn eine Klasse mit einem As-Installieren und Konfigurieren vonpekt verwoben wird, entsteht dabei eineEquinox Aspectsneue Abhngigkeit von der verwobenenKlasse zum Aspekt (Abb. 3). Equinox Aspects kann entweder aus demZur Entwicklungszeit sind diese Eclipse SDK ber eine Update Site [18]Abhngigkeiten natrlich noch nicht installiert oder als ZIP-Archiv von dervorhanden, denn schlielich werdenGetting Started-Seite [19] herunterge-die Cross-Cutting Concerns durch dieladen werden. Da es sich hierbei um reine Abb.5:BeispielinAktion:DerAspektgibtdieAus-aspektorientierte ProgrammierungRuntime Plug-ins ohne Tooling oder an- fhrungsdaueraussepariert, d.h. der eigentliche Codedere Integration in das SDK handelt, istkennt die Aspekte gar nicht. Die Bundleses empfehlenswert, sie nicht in das SDKknnen somit diese Abhngigkeiten, diezu installieren, sondern die Plug-ins indurch das Load-time Weaving entstehen,die jeweilige Target Platform aufzuneh-nicht a priori im Bundle-Manifest de- men. Auf alle Flle muss bercksichtigtklarieren. Daher harmoniert Load-time werden, dass Equinox Aspects wie jedesWeaving nicht out-of-the-box mit OSGi,Framework Extension Fragment un-sondern bedarf besonderer Unterstt-bedingt im selben Verzeichnis wie daszung: Die neuen Abhngigkeiten mssen System Bundle org.eclipse.osgi abgelegtden Bundles beim Laden dynamisch hin- werden muss, da die Framework Exten-zugefgt werden.sion sonst nicht gefunden und infolge-Equinox bietet seit Version 3.2 mit dessen ignoriert wird. Abb.6:LauncherfrdasBeispiel:dem so genannten Hookable Adaptor Damit die Bundles, auf denen die BundlesundStart-Level[16] eine sehr flexible Implementierung Aspekte eines Aspekt-Bundles wirkenvon OSGi, die es ermglicht, zahlreiche sollen, zur Laufzeit mit den ntigen Ab-Funktionalitten des Fram...