Java Troubleshooting in Produktion: Vorstellung von AppDynamics Lite

1 Kommentar

Die Performance und Stabilität von Java Applikationen in Produktion wird mehr und mehr unternehmenskritisch. Viele (wenn nicht alle) wichtigen Geschäftsprozesse basieren heute auf Software. Der Ausfall oder eine schlechte Performance von Anwendungen wirkt sich dadurch direkt auf den Umsatz eines Unternehmens aus. Immer mehr Unternehmen nutzen zudem Web- und Mobiltechnologien, um Kunden oder Partner in die Geschäftsprozesse zu integrieren. Diese Anwendungen nutzen in der Regel unterschiedlichste Services, um das gewünschte Ergebnis zu erzielen oder zu präsentieren. Die Systemarchitektur dieser Services und Applikationen ist immer stärker virtualisiert und wandert in private oder öffentliche Clouds.

In einem kürzlich erschienen Artikel schreibt Gunther Dueck von IBM, dass man versuchen kann die „guten alten Zeiten“ zu romantisieren, in denen alles viel besser und einfacher gewesen ist, aber am Ende wird man sich mit SOA, Cloud und Mobilen Apps anfreunden müssen – sie sind da und werden auch nicht wieder verschwinden.

Als „Feuerwehr“ für Enterprise Anwendungen müssen wir natürlich auch mit diesen Gegebenheiten auseinandersetzen und wir sehen auch eine große Veränderung bei den Problemfelder, die wir für unsere Kunden im Java Web- und Enterprise Umfeld lösen müssen. Waren es bisher eher Code- und Design Probleme, wie schlecht konfigurierte Hibernate Mappings oder Memory Leaks, die ein System in die Knie gezwungen haben, so sind die es heute immer häufiger Probleme, deren Ursache in der Architektur einer Anwendung zu suchen ist – also Problemfelder die auf Grund von steigender Komplexität und hoher Abhängigkeit von Anwendungen zu externen Services resultieren. Zudem steigen auch die Anforderungen an Performance und Skalierbarkeit der Anwendungen – manchmal auch schneller als man es vorab geplant hatte. Eine Anwendung kann vielleicht problemlos 5.000 Anwender verkraften – aber schafft sie auch 100.000? Welche der 20 Services die benötigt werden ist die Ursache für eine schlechte Performance? Was passiert, wenn einer dieser Services nicht verfügbar ist?

Diese Fragen werden meistens erst in Produktion beantwortet. Treten dort Probleme auf, dann stellt sich die Anwendung häufig als „großer, dunkler Raum“ dar, in dem die Suche nach der Ursache des Problems nicht einfach ist und in der Praxis lang und teuer werden kann.

Immer kürzere Entwicklungszyklen durch agile Entwicklungsmethoden, verschärfen die Situation noch zusätzlich. Die Halbwertszeit des Wissens über eine Anwendung liegt dann bei maximal 2-4 Wochen. Einige Internet Unternehmen wie Flickr bringen bis zu 10 Mal pro Tag eine neue Version Ihrer Anwendung in Produktion.

Wie können wir also die Performance und Stabilität solcher Anwendungen sicherstellen? Profiler sind für Produktion nicht geeignet – sie haben i.d.R. einen viel zu hohen Overhead und sind für Entwicklungsumgebungen bzw. den Entwicklerarbeitsplatz konzipiert. In diesen Umgebungen hat man allerdings kein Abbild der verteilten Produktionsumgebung, sondern eine lokale Installation, so dass Probleme, die unter Last oder Parallelität entstehen, so gut wie nicht nachgestellt werden können.

Klassische Monitoring und Application Performance Management (APM) Werkzeuge sind in vielen Fällen nicht für verteilte und hoch frequentierte Systeme konzipiert, so dass sie nicht die Daten liefern können, die wir für die Analyse der Probleme benötigen. Zudem adaptieren sie die Änderungen in Anwendungen nicht automatisch, was zu sehr hohen Aufwände für Instrumentierung und Konfiguration führt – oft enden diese Produkte dann als reines System-Monitoring Werkzeug, da ein Anwendungsmonitoring für viele, sich schnell ändernde Anwendungen garnicht möglich ist.

AppDynamics, ein Start-up aus San Francisco hat ein APM Tool entwickelt, das sie selber  „next generation performance management tool“ nennen. Es wurde von Grund auf für Monitoring und Diagnose von verteilten SOA und Cloud Anwendungen in Produktion konzipiert. AppDynamics überwacht verteilten Java EE Applikationen ohne das man eine spezielle Instrumentierung oder Konfiguration benötigt. Es erstellt automatisch eine so genannte „Applikations Landkarte“ (siehe Screenshot), die alle wichtigen Aufrufe (JMS, DB, Webservices, …) mit Anzahl und Antwortzeit anzeigt. So erhält man in wenigen Minuten eine Übersicht, über das Laufzeitverhalten seiner Applikationen. Dazu erhält man auch einen Callstack aller wichtigen Business-Transaktionen mit Details bis auf Methoden-Level. Hierzu verwendet AppDynamics eine patentierte Technologie, die fast ohne Bytecodeinstrumentierung der Anwendung auskommt. Dies führt zu einem niedrigen Overhead von maximal 2% und zudem zu einer Vermeidung von aufwendiger Instrumentierung und Konfiguration. Zudem werden nur die Informationen angezeigt, die benötigt werden – so wird die Datenmenge reduziert und die Analyse schneller und einfacher. Dazu verwendet AppDynamics eine intelligente Regelmaschine, die auf Basis von Statistiken und vorkonfigurierten Regeln ermittelt, welche Daten erfasst werden müssen. Innerhalb von weniger als 15 Minuten hat man AppDynamics installiert und erhält alle benötigten Informationen, um die Problemursachen zu analysieren.

Hört sich unrealistisch an? Habe ich auch gedacht, als ich zum ersten Mal mit dem AppDynamics Team geredet habe. Die gute Nachricht ist aber, dass es eine kostenfreie Version von AppDynamics gibt: AppDynamics Lite. Damit kann man langsame Antwortzeiten, SQLs, Fehler und Deadlocks in Produktion analysieren und sich selber einen Eindruck von dem Werkzeug machen. Die Lite Edition ist zwar gegenüber der kommerziellen Variante limitiert, aber oftmals ausreichend, um ein Problem zu analysieren. Das Tool ist in weniger als 15 Minuten einsatzbereit, so dass ich nur empfehlen kann es einfach mal runterzuladen und auszuprobieren:  http://www.appdynamics.com/free

Fabian, unser Competence Center Leiter Performance, zeigt in seinem Eintrag in zwei Screencasts wie man AppDynamics Lite in 5 Minuten installiert und danach mit Hilfe der Informationen echte Probleme analysieren kann.

Als Mitbegründer und Advisor der codecentric AG berät Mirko bei der strategischen Ausrichtung des Unternehmens. Er ist Geschäftsführer und Mitgründer der Startups CenterDevice und Instana – beides disruptive Geschäftsmodelle auf Basis von Big-Data- und Cloud-Technologien.

Seine Interessen liegen im Bereich der Veränderung von Geschäftsmodellen durch moderne Technologien und Software, also der zunehmenden Digitalisierung der Welt und den daraus resultierenden Veränderungen und Potential für Unternehmen.
Im Privatleben widmet er sich am liebsten seiner Familie, zum sportlichen Ausgleich fährt er Mountainbike.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentare

  • Mirko Novakovic

    31. August 2010 von Mirko Novakovic

    Hello Teja,

    we have been working with CA/Wily Introscope and other tools before and it is not easy to get a „comparison sheet“ to compare these kind of tools. Naturally all tool vendors have such sheets but you can imagine who wins on those sheets.

    If you are searching for a Java monitoring tool just download AppDynamics Lite and testdrive it or request a trial key for the full version. AppDynamics is easy to use and easy to install so that you don’t need a consultant who helps you with your evaluation…by the way this is the main difference between AppDynamics and other monitoring tools 🙂

    See our screencasts for a live demo of installation and performance analysis under 15 minutes here: http://blog.codecentric.de/en/2010/08/easy-performance-analysis-with-appdynamics-lite/

    Mirko

Kommentieren

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