Alle Artikel in: Technologien & Entwicklung

Analyse von Nutzeranfragen mit stagemonitor

Stagemonitor ist vor allem dafür bekannt, dass damit die Performance einer Anwendung analysiert werden kann. Es gibt jedoch noch ein weiteres Gebiet, wofür stagemonitor nützlich ist, welches nicht nur Entwickler interessieren dürfte. Es geht darum, ein tieferes Verständnis davon zu bekommen, wie die Anwendung von den Kunden genutzt wird, wo und warum Fehler auftreten, ob Missbrauch mit der Anwendung getrieben wird und vieles mehr. Ein derzeit populäres Vorgehen ist die Analyse von HTTP Anfragen mit dem sogenannten “Elastic Stack” (ehemals ELK Stack). Hierbei werden beispielsweise mit Hilfe von “Logstash” Access Logs vom Apache Server geparsed, ggf. in Redis zwischengespeichert, in Elasticsearch indexiert und mit Kibana visualisiert. Stagemonitor wird direkt in die Anwendung integriert und hat somit direkten Zugriff auf Informationen wie die angefragte URL, die Verarbeitungszeit, aufgetretene Exceptions usw.. Dadurch entfällt der aufwendige Schritt, diese Informationen aus Logdateien zu extrahieren. Die gesammelten Daten über eine HTTP-Anfrage, sogennante “Request Traces”, werden asynchron an Elasticsearch gesendet, sodass die Performance der Anwendung nicht beeinträchtigt wird. Zusätzlich bietet stagemonitor ein bereits vorkonfiguriertes Kibana Dashboard an, mit dem die Anfragen …

jStage PIM - Client - Architekturüberblick

jStage PIM – Client – Architekturüberblick

Schichtentrennung, Modularisierung, Kapselung, Don’t repeat yourself (DRY), … es gibt viele grundlegende Prinzipien, mit denen sich gute Softwarearchitektur beschreiben lässt. In jedem (größeren) Softwareprojekt spielt eine klare Architektur eine wichtige Rolle. Die Gründe hierfür sind beispielsweise Performance, Übersichtlichkeit und Wartbarkeit. Je klarer die Architektur, desto leichter kann neue Funktionalität implementiert werden. Auch die Einarbeitung neuer Mitarbeiter fällt mit einer klaren, strukturierten und nachvollziehbaren Architektur deutlich leichter.  Auch der jStage PIM – Client verfügt über eine solche Architektur, die in dieser Beitragsserie näher betrachtet wird. Systemarchitektur Überblick Abbildung 1 zeigt überblicksartig die Architektur des jStage PIM. Es basiert auf einer klassischen Mehr-Schichten-Architektur mit einer relationalen Datenbank. In den nachfolgenden Kapiteln wird näher auf die einzelnen Schichten sowie auf die verwendeten Technologien eingegangen. Oberfläche / Client Der jStage PIM – Client basiert auf der Eclipse Rich Client Platform (RCP). Hierbei handelt es sich um ein Open Source (Eclipse Public License (EPL)) Framework zum Bau eigener Applikationen. Das RCP-Framework stellt dabei eine große und stabile Grundlage dar, auf Basis derer komplexe Desktop-Anwendungen entwickelt werden können. Die bekannteste RCP-Applikation …

Mehr Überblick im Firmennetzwerk – Zugriffsrechte zentral steuern mit “NAM”

Die Verwaltung eines Firmennetzwerks ist eine anspruchsvolle Aufgabe. Verfügbarkeit, Sicherheit und Datenschutz müssen gewahrt werden, die Administratoren müssen genau steuern und nachvollziehen können, welches Gerät und welcher Benutzer auf welche der im Netzwerk bereitstehenden Ressourcen zugreifen können.

So wird 2016: Themen, Trends und Prognosen

Auf Wiedersehen 2015 – Willkommen 2016! Unser jStage Blog startet in sein zweites Jahr. An dieser Stelle möchten wir es uns nicht nehmen lassen, sämtlichen Kunden, Lesern und Interessenten ein frohes und vor allem erfolgreiches Jahr 2016 zu wünschen. Wir hoffen, Sie auch in Zukunft mit unseren spannenden Beiträgen und Insights begeistern zu können. Wie zu Beginn eines jeden Jahres gibt es auch diesmal wieder eine Vielzahl von Themen, die in den Bereichen E-Business und E-Commerce als DIE Trends 2016 gehandelt werden. Wir haben auf den gängigen Internet-Plattformen recherchiert und die wichtigsten Begriffe für Sie zusammengetragen. Da wäre beispielsweise die digitale Transformation, welche bereits in den vergangenen Jahren rapide vorangeschritten ist und auch in Zukunft die Strategie und Prozessabläufe von Unternehmen maßgeblich beeinflussen wird. Oder aber kreatives Storytelling, welches primär im Zuge des Content Marketing eingesetzt wird um die gesamte Buyers Journey spannender zu machen. Auch das Thema “Seamless Commerce”, also der Versuch, den Endverbraucher über eine Vielzahl von verschiedenen Kanälen, Plattformen und Endgeräten nahezu übergangslos für ein Produkt zu begeistern, wird in naher Zukunft immer mehr an Bedeutung gewinnen. …

Beitragsbild zu Hibernate beyond OR Mapping

Hibernate beyond OR-Mapping: Envers

Hibernate ist als OR-Mapping-Framework seit Jahren fest in der Java-Welt (und darüber hinaus, siehe NHibernate ) etabliert. Weniger bekannt sind allerdings die zusätzlich enthaltenen Module, mit denen Hibernate dem Entwickler auch über die OR-Mapping-Thematik hinaus das Leben einfacher machen kann. Nachdem sich der erste Beitrag der “Hibernate beyond OR-Mapping” Serie mit dem Thema “Suche” anhand von Hibernate Search beschäftigte, soll hier nun die Versionierung von Geschäftsdaten mittels Hibernate Envers das Thema sein. Envers erweitert Hibernate  um die Historisierung von Entity Beans. Damit lassen sich frühere Bearbeitungsstände (Revisionen) abfragen und Änderung nachvollziehen (wer hat wann was gemacht). Seit der Hibernate-Version 3.5 ist Envers Bestandteil des Core-Moduls. Im  jStage Backendsystem “Stagemanager” wird es für die Historisierung besonders geschäftskritischer Daten, wie z. B. Artikelmengendefinitionen und Benutzerrechte, eingesetzt. Unter Envers erfolgt die Versionierung transparent beim Speichern der entsprechenden Entitäten ohne zusätzlichen Boilerplate-Code. Zudem wird das Auslesen der Historientabellen durch entsprechende API-Methoden unterstützt. Somit bietet der Einsatz von Envers erhebliche Produktivitätsvorteile gegenüber selbstgestrickten Implementierungen. Historisierung Sehen wir uns nun die Historisierung anhand eines Beispiels an. Historisierte Entitäten werden mit der Annotation @Audited gekennzeichnet. …

Technologieupgrade am Beispiel von Java 8

Es gibt viele gute Gründe, eine Java Anwendung auf die aktuelle Sprachversion zu aktualisieren. In größeren Softwareprojekten kann allerdings jedes Technologieupgrade an trivialen Dingen scheitern – Der Spruch “Never touch a running System” ist nicht umsonst so populär. Vor gut einem Jahr haben wir den jStage eShop, unsere E-Commerce-Lösung, auf Java 8 umgestellt. Dieser Erfahrungsbericht zeigt auf, worauf man achten sollte, damit der Wechsel  erfolgreich über die Bühne geht. Java: Sprache und Laufzeitumgebung Mit Java wird sowohl die Programmiersprache Java als auch die Laufzeitumgebung bezeichnet. Mit einer bestimmten Sprachversion entwickelte Anwendungen können nur auf einer Laufzeitumgebung mindestens der gleichen Version betrieben werden. Umgekehrt laufen dagegen ältere Anwendungen fast immer problemlos auf einer neueren Laufzeitumgebung. Dazu gleich mehr. Für uns ergibt sich dadurch die Reihenfolge der Umstellung: Zuerst wird die Laufzeitumgebung aktualisiert, dann die Entwicklung der Anwendung auf Java 8 umgestellt. Umstellung der Laufzeitumgebung Probleme macht in der Regel nicht die eigene Anwendung, sondern die verwendeten Softwarebibliotheken. Kritische Kandidaten sind unter anderem solche, die den Bytecode manipulieren, wie z. B. Javassist (Java Programming Assistant). Hier zahlt …

Code Reviews mit Gerrit

Doppelt hält besser – Code Reviews mit Gerrit

Wer hat sich nicht schon mal über Softwarefehler geärgert, sei es am Fahrkartenautomat, bei der Bank oder bei der täglichen Büroarbeit.  Je komplexer eine Software, desto höher ist die Wahrscheinlichkeit, dass diese Fehler beinhaltet, die den Benutzer frustrieren. Dieser Blogbeitrag beschäftigt sich mit einer Möglichkeit, Fehler frühzeitig zu erkennen und somit vor dem Deploy zu beheben: Code Reviews. Code Qualität Bevor wir zu den Code Reviews an sich kommen, ein paar Worte zum Thema “Code Qualität”. Man hört und liest sehr häufig, dass es wichtig und notwendig ist, Quellcode mit hoher Qualität zu schreiben. Doch wieso ist diese hohe Qualität so wichtig, speziell im Umfeld produktiver und profressioneller Software? Wartbarkeit stellt hier ein sehr wichtiges Kriterium dar. Professionelle Software wird meist über viele Jahre hinweg (weiter) entwickelt und gepflegt. Je höher die Qualität, desto leichter ist die Wartbarkeit bzw. das sukkzessive Erweitern der Software. An dieser Stelle kommt ein weiterer wichtiger Faktor ins Spiel: Lesbarkeit des Codes. Dazu gehören speziell die sprechende Benennung von Variablen und Methoden, klare Strukturierung und Kommentare. Je höher die Lesbarkeit, …

Agile Webentwicklung mit Spring Boot und AngularJS

Technologie-Vorträge über aktuelle Kundenprojekte oder rund um die Software-Entwicklung im Allgemeinen sind in der iSYS Software GmbH schon seit langem eine gern gesehene Tradition. In der diesmaligen Veranstaltung von Fabian Trampusch und Najum Ali ging es um Webentwicklung und dabei konkret über den in drei Projekten erfolgreich eingesetzten Technologiestack. Dabei spielen besonders die beiden Frameworks Spring Boot und AngularJS eine große Rolle. Der Fokus dieses Beitrags liegt auf der Erfahrung, die mit diesen beiden Technologien im Zusammenspiel gemacht wurden. Projektanforderung Sowohl für interne als auch für externe Kundenprojekte sind aktuell Webanwendungen der Standard, um fachspezifische Datenpflege zu ermöglichen. Dabei müssen Daten vom Server angefordert werden, welche von Endbenutzern (je nach Recht) manipuliert und wieder gespeichert werden können. Auch wenn sich die fachlichen Anforderungen teilweise sehr unterscheiden, so ist jedoch die technische Handhabung der Daten sehr ähnlich. Für die technische Umsetzung wurden moderne Frameworks eingesetzt, welche ausschließlich unter Opensource-Lizenzen stehen. Diese Frameworks übernehmen einen Großteil der Standardimplementierung einer Webanwendung, sodass sich der Entwickler vielmehr auf die tatsächliche Geschäftslogik konzentrieren kann. Demnach kann man erste Ergebnisse der Anwendung schon nach wenigen Stunden sehen und diese mit dem Kunden in agilen Iterationen abstimmen. Technologiestack mit Spring Boot und AngularJS Der grundlegende Gedanke der Architektur …

Hibernate beyond OR-Mapping: Hibernate Search

Hibernate ist als OR-Mapping-Framework seit Jahren fest in der Java-Welt (und darüber hinaus, siehe NHibernate ) etabliert. Weniger bekannt sind allerdings die zusätzlich enthaltenen Module, mit denen Hibernate dem Entwickler auch über die OR-Mapping-Thematik hinaus das Leben einfacher machen kann. Eines dieser Module ist Hibernate Search, das im jStage Backendsystem “Stagemanager” bereits für eine Vielzahl an Suchen verwendet wird. Es setzt auf das objekt-relationale Modell von Hibernate auf und erweitert es um Funktionen zur Implementierung von Volltextsuchen. Unter der Haube steckt dabei die mächtige Such-Bibliothek Lucene. Die Verwendung von Hibernate Search setzt zwar ein gewisses Grundverständnis der Funktionsweise von Lucene voraus, entbindet den Entwickler  aber größtenteils von der Low-Level-Programmierung auf Lucene-Ebene. Sowohl bei der Entwicklung der Indexierung als auch der eigentlichen Suche ergeben sich so signifikante Produktivitätsvorteile gegenüber einer rein auf Lucene basierenden Implementierung. Konfiguration Sehen wir uns zunächst die Definition eines Suchindex in Hibernate Search an. Zunächst müssen wir unser Hibernate Properties File, bzw. unter JPA unsere persistence.xml, um die folgenden Angaben ergänzen.

In der ersten Property definieren wir, dass wir unsere Indizes in einem …

Freemarker – In Action

Bei der Erstellung einer webbasierten Software Lösung muss man sich frühzeitig auf eine geeignete Technologie zur Erzeugung der Website (Frontend) festlegen. Dies kann sowohl serverseitig als auch clientseitig geschehen. Dieser Beitrag befasst sich mit der serverseitigen Erzeugung von HTML-Code mithilfe der Template-Engine Freemarker. Natürlich ist eine Kombination beider Verfahren in Zeiten von JavaScript und AJAX nicht unausweichlich.

Performance Monitoring mit stagemonitor während der Entwicklung

Der erste Blogpost über stagemonitor gab einen groben Überblick über die vielseitigen Einsatzzwecke und Funktionen des Open Source Performance Monitoring Tools stagemonitor. In diesem Teil beschäftigen wir uns näher mit dem In Browser Widget, welches bereits während der Entwicklung einer Webanwendung Analysemöglichkeiten bietet und ein konstantes Feedback über die Performance gibt. In vielen Fällen bekommt man oft erst mit, dass eine Webanwendung langsam ist, wenn es eigentlich schon zu spät ist und sich ein verärgerter Kunde über eine langsame Seite beschwert. Gerade bei eCommerce Webseiten führt dies teilweise zu erheblichen wirtschaftlichen Schäden. Nicht nur, dass ein verärgerter Kunde wahrscheinlich nicht nochmals einen langsamen Shop besucht, viele machen ihrem Unmut auch bei Freunden oder in sozialen Netzwerken Luft. Deshalb ist es entscheidend, Performance-Bugs so früh wie möglich im Entwicklungszyklus zu beheben. Das In Browser Widget Stagemonitor bietet mit dem In Browser ein Werkzeug an, mit dem die Performance während der Entwicklung analysiert und optimiert werden kann. Zudem wird der Entwickler auf Probleme hingewiesen, die sonst evtl. erst in der Produktion sichtbar werden. Das In Browser Widget …

Warum weniger manchmal eben doch mehr ist

Gehören Sie zu den eher faulen Zeitgenossen? Zugegeben, das klingt nicht gerade nach einer schmeichelhaften Frage. Und dennoch ist sie aus Sicht des Entwicklers goldrichtig mit einem “Ja” zu beantworten, wenn es um die “Lines of Code”, also die Anzahl der geschriebenen Programmzeilen, geht. Warum das so ist? Guter Code ist kurz, prägnant und im besten Falle an anderen Stellen wiederverwendbar. Andererseits ist eine solch komprimierte Essenz fast immer das Ergebnis intensiven Arbeitsaufwandes. Und dieser kostet natürlich Zeit. So ist es nicht weiter verwunderlich, dass eine Aufgabe zwar oft gut und termingerecht gelöst wird, dabei jedoch mehr Programmzeilen entstehen als eigentlich notwendig. Noch ungünstiger wird es, wenn später eine ganz ähnliche Aufgabe nicht oder nur wenig von dem bereits vorhandenen Code profitieren kann und weitere Programmklassen erforderlich macht. “Ich schreibe dir einen langen Brief, weil ich keine Zeit habe, einen kurzen zu schreiben.” (Blaise Pascal) Am Beispiel einer zu erstellenden Tabelle möchte ich zeigen, wie eine Code Optimierung aussehen kann. Die Tabelle habe ich gewählt, da sie ein häufig genutztes Widget (grafische Komponente) bei der …

Demodaten aus Wikipedia mittels Semantic Web

derived from S. Krause | CC Um produktive IT-Systeme stetig erweitern und verbessern zu können, haben sich dedizierte Testumgebungen bisher immer gut bewährt. So können neue Features und eventuelle Fehlerbehebungen in einer isolierten Umgebung getestet werden, bevor diese in den produktiven Betrieb aufgenommen werden. Anforderung Aktuell arbeiten wir an unserem jStage Shopsystem mit diversen Testumgebungen, um die Stabilität unserer Software stetig zu erhöhen und um den Kunden Einblicke in die zukünftigen Vorabversionen gewähren zu können. Für eine noch agilere Entwicklung wurde eine kompakte Testumgebung konzipiert, sodass das gesamte Shopsystem lokal auf dem Rechner eines Entwicklers abläuft. In dieser Testumgebung ist anstatt der Testdatenbank eines Kunden, eine vom Kunden unabhängige Datenbank enthalten. Dadurch fehlt es natürlich auch an Demo- bzw. Testdaten (z.B. Test-Produkte für den Shop). Um eine größere Menge an Artikeln (samt Artikeldaten, Bilder, usw.) nicht per Hand anlegen zu müssen, wurde nach einem automatisierten Prozess gesucht. Lösungsfindung Zunächst habe ich nach frei verfügbaren und geeigneten Datenquellen recherchiert, aus denen die Demo-Artikel letztendlich generiert werden können. Die aktuelle Wahl ist auf Wikipedia und dabei willkürlich auf Motorräder gefallen. Um die Daten natürlich nicht per Hand kopieren zu müssen, wurde die Wikipedia-API evaluiert um die Daten programmatisch abzugreifen. Doch wie …

Die digitalen Kundenberater im Web

Welche Versicherung schließe ich ab?“, „Welches Buch passt zu meinem Lieblingsgenre?“ oder „Zu welchem Zeitpunkt soll ich meine Aktien verkaufen?“. Jedem sind solche Entscheidungssituationen wohl bekannt, in denen man gewöhnlich nach einem Rat im Freundeskreis oder in vertrauter Umgebung sucht. Sind die Vorlieben und Verhaltensweise einer Person bekannt und gegebenenfalls Erfahrung zum gesuchten Sachverhalt vorhanden, so können i.d.R. gute personenbezogene Ratschläge ermittelt werden.

Versionierung von Datenbanken mit Liquibase

Prozesse innerhalb eines Unternehmens verändern sich im Laufe der Zeit. Es kommen neue Abläufe hinzu, andere werden vereinfacht oder erweitert. Auch Informationen ändern sich. Neue Informationen kommen hinzu, werden umstrukturiert oder anders organisiert. Die Software, die diese Arbeitsprozesse und die Speicherung der Informationen unterstützt ist einem ständigen Wandel unterworfen. Das trifft auch auf viele Projekte bei uns im jStage Team zu. Deshalb haben wir uns mit dem Thema Datenbankversionierung näher beschäftigt, mit dem Ziel unseren Entwicklungprozess dahingehend zu erweitern. Genau wie bei der Verwaltung von Source Code ist es auch auf Datenbankebene wichtig, die gemachten Änderungen zu erfassen und zu versionieren. Diese Versionierung bietet für uns im Entwicklungsprozess folgende Vorteile: Änderungen sind nachvollziehbar Geht man mit Schemaänderungen wie mit Source Code Änderungen um, lässt sich jederzeit feststellen wer eine bestimmte Änderung am Datenmodell zu welcher Zeit vorgenommen hat. Verbindet man die Änderung noch mit der eigentlichen Aufgabe aus dem Issue Tracking System, hat man sogar den fachlichen Bezug. Außerdem kann man jederzeit das versionierte Modell mit der Produktion abgleichen bzw. Änderungen automatisiert einspielen. Erleichtert das …

Testen von Java-REST-Clients mit Mockito und Wiremock

Die meisten Entwickler dürften schon einmal vor dem Problem gestanden haben, einen Test für Software zu entwickeln, welcher von fremden Schnittstellen abhängig ist. Die in diesem Zusammenhang auftretenden Fragen können beispielsweise lauten: Wie kann Geschäftslogik abgeprüft werden, die Zugriff auf externe Schnittstellen beinhaltet? Wie kann der Zugriff auf REST-Schnittstellen getestet werden? Dieser Artikel soll diese beiden Fragen beantworten.

Performance Monitoring mit stagemonitor

Jedes Software Projekt muss sich früher oder später Gedanken über die Performance machen, um marktfähig zu bleiben und den Erwartungen der Nutzer zu entsprechen. Hierzu ist ein gutes Monitoring Werkzeug unerlässlich. Kommerzielle Lösungen sind teuer und bestehende Open-Source-Projekte sind meistens nicht speziell für Webanwendungen ausgelegt oder tun sich schwer mit dem Monitoring von geclusterten Anwendungen. Genau hier setzt stagemonitor an. Stagemonitor ist eine Open-Source Java Application Performance Monitoring Lösung, welche alle Werkzeuge bietet, die während der Entwicklung, Qualitätssicherung und Produktion nötig sind, um die Performance einer Java Webanwendung überwachen zu können. Stagemonitor ist speziell dafür ausgelegt, aktuelle und historische Metriken von geclusterten Anwendungen zu überwachen. Durch die Plug-In Architektur kann der Funktionsumfang beliebig erweitert werden. Stagemonitor in der Praxis bei Hama GmbH & Co KG Aktuell setzen wir stagemonitor für die Entwicklung und die Überwachung der produktiven Shop-Webseite unseres Kunden Hama GmbH & Co KG ein. Das Beispiel Hama zeigt dabei sehr schön die flexiblen Möglichkeiten von stagemonitor, einzelne Server bis zu komplexen Serverclustern mit verschiedenen Anwendungen zu überwachen. Die folgende Grafik veranschaulicht vereinfacht die …