Blog

Alle Beiträge von Sven Bunge

TracEE – der Weg zur finalen Version

Die Entwicklung des Frameworks TracEE schreitet mit großen Schritten voran, so dass wir (Daniel, Tobi und ich) bald die erste Version mit stabiler API herausbringen wollen. Was TracEE genau ist, hatten wir in einem vergangenen Blog-Beitrag bereits sehr ausführlich erwähnt. In wenigen Sätzen erklärt: TracEE erzeugt einen Invocation-Context im MDC und sorgt mit den Bindings dafür, dass dieser bei allen Aufrufen mitgegeben wird. Alle Log-Einträge enthalten diese Informationen und lassen sich so einfach nachvollziehen. Vor allem für das Monitoring von Microservice-Architekturen ist ein solcher MDC in den Log-Meldungen wünschenswert: Ein Frontend-Service empfängt einen Request und ein Filter erzeugt eine InvocationId. Dieser Service ruft zwei weitere Microservices auf, die getrennt deployed werden. Egal ob REST, SOAP oder etwas anderes: TracEE trägt den MDC des Logging-Frameworks weiter — es überträgt den MDC sogar im Response wieder zurück! Wir nennen diese Abbildung TPIC – TracEE Propagated Invocation Context.

In einer Aggregation der Log-Einträge (z.B. über Splunk oder einen ELK-Stack – ElasticSearch, Logstash, Kibana) werden die Zusammenhänge mittels invocationId und (pseudonymisierter) sessionId sichtbar:Log-Statements mit Invocation- und SessionId generiert und übertragen durch TracEE

Durch diese IDs wird überhaupt erst sichtbar, dass Alice auf einen Fehler im Programmablauf aufgelaufen ist — und nicht Bob. Da das Backend z.B. via REST angesprochen wurde, sind die aus Application-Servern bekannten Thread-IDs bei der Korrelation von Log-Meldungen nicht sehr hilfreich.

Reorganisation des TracEE-Projects

TracEE ist und bleibt weiterhin OpenSource und auf GitHub verfügbar. Da wir das Projekt aber nicht als alleiniges Holisticon-Projekt sehen und uns über jegliche Mithilfe, konstruktive Kritik und Code-Beiräge sehr freuen, haben wir das Repository in eine eigene GitHub-Organisation verschoben. Zudem haben wir die Context-Logger aus dem Hauptprojekt herausgelöst und in ein Tochter-Projekt überführt. Auch die Beispiele wurden in ein separates Repository verschoben und helfen dir bei der Integration in deine Projekte.

Apropos Integration: Uns erreichte die Kritik, dass die Dokumentation zwar die Zusammenhänge gut erklärt, die Integration mit den einzelnen Technologien aber überarbeitungswürdig ist. Diese Module heißen Bindings und übertragen z.B. den TPIC von einem Apache CXF-Client auf einen JaxWS-Server. Diese Dokumentation haben wir für sämtliche Bindings nachgepflegt und über die Hauptseite verlinkt. Auch die Unterseite der Bindings enthält die entsprechenden Links.

Neue Funktionen und Refactorings

Des weiteren wurden viele Technologien abseits des JavaEE-Stacks als Binding integriert. Neu seit dem letzten Blog-Artikel sind folgende Integrationen:

  • Spring MVC
  • Apache CXF
  • Quartz-Scheduler
  • Spring AMQP (RabbitMQ)

Diese wurden in Teilen von den ersten early-adoptern implementiert und in Form von Pull-Requests an das TracEE-Projekt gegeben. Interessant an dieser Stelle sind die Quartz-Scheduler. Diese oft für die Batch-Verarbeitung genutzten Jobs werden zeitlich gesteuert und stellen somit eigentlich keinen echten Request dar. Trotzdem möchte man durch einen Job ausgeführte SOAP- oder REST-Anfragen auch diesem Job zuordnen können. Daher haben wir beschlossen, den Begriff RequestId durch das generellere Konzept einer InvocationId abzulösen.

TracEE – What’s next?

Zuallererst: Du integrierst einfach mal TracEE in dein Projekt und berichtest uns und der Welt von den Vorzügen eines einheitlichen Contextes. Bei Fragen und Problemen freuen wir uns auf dein Feedback oder deine Beiträge auf Github. Für die schnelle Hilfe haben wir für TracEE einen Gitter-Kanal eingerichtet.

Außerdem arbeiten wir gerade an einer Integration in Spring WS und überarbeiten gerade die Context-Logger-Struktur. Falls Du noch immer nicht überzeugt sein solltest, kannst du auch auf unsere Blog-Serie warten. In dieser werden wir auf die Vorzüge eines zentralisierten Log-Systems eingehen und zeigen, wie TracEE und Context-Logging dir hilft, z.B. Bugs oder Abläufe über die Systemgrenzen besser nachzuvollziehen. Und irgendwann dann werden wir die 1.0 releasen.

Markus Gärtner spricht über ATDD bei der Softwerkskammer im Februar

Softwerkskammer-Hamburg-Logo-XING-223x300Die Softwerkskammer Hamburg startet am 17. Februar wie geplant ins Jahr 2015. Wir freuen uns, dass wir für die Veranstaltung Markus Gärtner als Vortragenden gewinnen konnten. Markus ist Autor, Trainer und Sprecher für Themen rund um agile Software-Entwicklung. Die agile Entwicklungs-Methode „ATDD“ fasziniert ihn gleich so sehr, dass er bereits zwei Bücher über das Thema veröffentlicht hat: „ATDD in der Praxis“ und „ATDD by example“.

Der Vortrag wird sich ebenfalls mit ATDD befassen und startet um 19 Uhr in den Geschäftsräumen von it-agile in Hamburg.  Anmelden kann man sich über unsere Meetup-Gruppe. Die Teilnahmer-Anzahl ist beschränkt.

Bonita und die Sichtbarkeit von Variablen im Prozess

Die BPM-Lösung Bonita Open Solution bietet die Möglichkeit, Prozesse zu modellieren und diese später mit Daten und Logik auszustatten. Diese Daten werden entweder eingegeben oder aus einem Backend gelesen und sollen gegebenenfalls für spätere Entscheidungen in Gateways verwendet werden. Dass die Menge an der im Prozess mitgeführten Daten Einfluss auf die Performanz des Systems hat, wurde aber schon in einem anderen Blog-Eintrag behandelt.

Bonita (in der Version 5.6.3) bietet leider nur eine begrenze Kontrolle über die Sichtbarkeit und Verfügbarkeit von Prozessdaten. Diese können entweder Pool-weit oder nur in einer Aktivität gültig sein. Bei Sichtbarkeit über den ganzen Pool stehen die Variablen im gesamten Bonita-Prozess zur Verfügung. Alle dort enthaltenen Aktivitäten, Gateways, Transitionen usw. können auf die Variablen zugreifen und sie verändern. Aktivitäts-Variablen hingegen sind nur sehr kurz sichtbar: Nur wenn die Aktivität gerade aktiv ist, sowie in allen verlassenden Transitionen kann auf die Daten zugegriffen und für Logik verwendet werden.

weiterlesen

Bonita und die Sichtbarkeit von Variablen im Prozess

Die BPM-Lösung Bonita Open Solution bietet die Möglichkeit, Prozesse zu modellieren und diese später mit Daten und Logik auszustatten. Diese Daten werden entweder eingegeben oder aus einem Backend gelesen und sollen gegebenenfalls für spätere Entscheidungen in Gateways verwendet werden. Dass die Menge an der im Prozess mitgeführten Daten Einfluss auf die Performanz des Systems hat, wurde aber schon in einem anderen Blog-Eintrag behandelt.

Bonita (in der Version 5.6.3) bietet leider nur eine begrenze Kontrolle über die Sichtbarkeit und Verfügbarkeit von Prozessdaten. Diese können entweder Pool-weit oder nur in einer Aktivität gültig sein. Bei Sichtbarkeit über den ganzen Pool stehen die Variablen im gesamten Bonita-Prozess zur Verfügung. Alle dort enthaltenen Aktivitäten, Gateways, Transitionen usw. können auf die Variablen zugreifen und sie verändern. Aktivitäts-Variablen hingegen sind nur sehr kurz sichtbar: Nur wenn die Aktivität gerade aktiv ist, sowie in allen verlassenden Transitionen kann auf die Daten zugegriffen und für Logik verwendet werden.

weiterlesen

Ankündigung: Softwerkskammer im April

Softwerkskammer-Hamburg-Logo-XINGHallo Hamburger Software Craftsman,

am 16. April findet die nächste Softwerkskammer statt, auf der wir uns erneut dem Handwerk „Software-Entwicklung“ widmen wollen. In gewohnter Manier werden wir wieder in einem Open-Space über Qualität, Testen, Prozesse und andere für Dich relevante Themen sprechen. Die Themen können im Vorfeld hier vorgeschlagen und diskutiert werden. Das aktuelle Themen-Backlog ist hier zu finden.

Die Softwerkskammer findet dieses mal bei ThoughtWorks am Großer Burstah 46-48 in Hamburg statt. Die genaue Themen-Abstimmung wird direkt vor Ort vorgenommen, falls wir voher online keine Themen finden. Ein Laptop kann ein nützliches Utensil für den Abend sein.

Das Event hat eine maximale Größe von 30 Teilnehmern. Eine Teilnahme kann über Meetup oder Xing erfolgen.

Wir freuen uns auf Euren Besuch,
Euer Softwerkskammer-Team