Posts Tagged ‘SOA’

Konnektorentwicklung für den ESB unter JBI

Freitag, Februar 29th, 2008

In diesem Artikel geht es um die Entwicklung von Komponenten für den ESB. In diesem Falle konkret für einen JBI-basierten ESB. Dabei soll erläutert werden, wie Komponenten geschnitten/abgegrenzt werden können und was bei der Entwicklung zu beachten ist. Dem Fehlerhandling wird ebenfalls ein eigener Absatz gewidmet.

Durch den ESB wird eine Architektur beschrieben, die die komponentenorientierte Entwicklung von Integrationsarchitekturen fördert. Dabei werden von einem ESB bestimmte Eigenschaften erwartet, die von den Herstellern in unterschiedlicher Weise umgesetzt werden können.

Im Rahmen des JCP (=Java Community Process) wurde für die Java Plattform eine ESB-konforme Spezifikation erstellt, die unter dem Namen JBI (=Java Business Integration) firmiert. Darin wird eine Kompontenarchitektur beschrieben, die den Lebenszyklus sowie die Interaktion von Komponenten beschreibt, die für die Java Plattform entwickelt werden.

Bei der Entwicklung von Konnektoren kommt es darauf an zu klären, was konkret geleistet werden soll und wie diese Funktion allgemein umgesetzt werden kann.

Das Ziel der Entwicklung von JBI/ESB Komponenten ist es, wiederverwendbare Komponenten zu schaffen, um damit zukünftige Probleme lösen zu können, ohne das Rad buchstäblich neu zu erfinden.

Aus diesem Grunde sollte bei der Umsetzung von Anforderungen in zwei Stufen vorgegangen werden:

1. Beschreibung des konkreten Lösungsvorschlags

2. Zerlegung der speziellen Lösung in eine allg. Lösung und eine spezifischen Anteil (Dekomposition)

Sollen beispielsweise Datensätze aus einer Datenbanktabelle gelesen werden, zu denen es einen Steuersatz in einer anderen Datenbanktabelle gibt, so kann man dieses Problem in einer JBI-Komponente kapseln, die genau dieses Szenario beschreibt. Schafft man jedoch eine wiederverwendbare Komponte, so könnte diese allg. eine Spalte aus einer Tabelle auslesen und anhand dessen weitere Datensätze aus einer anderen Tabelle lesen, wobei die Spalte als Einschränkung verwendet wird. Die Tabellen bzw. die entsprechende(n) Spalte(n) können dabei parametrisiert werden. Auf diesem Wege erreicht man eine Lösung, die nicht nur für ein konkretes und spezifisches Problem anwendbar ist, sondern für eine ganze Klasse von Problemstellungen verwendet werden kann.

Auch bei der Weiterverarbeitun kann man grundsätzliche Abläufe von speziellen Eigenheiten versuchen zu trennen, um damit die Nutzbarkeit der Investition (leverage) zu maximieren und für die Zukunft geringere Aufwände zu produzieren.

Über unterschiedliche Projekte hinweg kann sich somit und dadurch ein Unternehmen eine ganze Sammlung von Komponenten erarbeiten, die für Folgeprojekte zu Verfügung stehen und in diesen genutzt werden können (technical business assets). Durch die konsequente Verwendung von Standards ist dabei eine langfristige Investitionssicherheit gegeben.

Ebenfalls ergeben sich aus den Komponenten Anwendungsmuster, die in die weiteren Architektuplanung einbezogen werden können, um auch Fremdsysteme entsprechend der vorhandenen Pattern zu steuern - auch hier kann weitergehend die Investition genutzt werden.

Business Activity Monitoring - fachlich und technisch umgesetzt

Freitag, Februar 29th, 2008

In einer flexiblen Systemarchitektur, die nach service-orientierten Gesichtspunkten aufgesetzt ist, stellt die Überwachung eine besondere Herausforderung dar.Durch die sowohl technische wie auch fachliche Überwachung lassen sich während des Betriebs Trendlinien für die operative Gestaltung ableiten, aber auch Geschäftschancen ableiten.

Unter technischem Monitoring kann man dabei die folgenden Aktivitäten zusammenfassen:

  • Überwachung des Systemzustands von deployten Komponenten (gestartet, gestoppt, etc.)
  • Überwachen der Randsysteme (Zustand von DB-Tabellen, die ausgelesen werden, etc., Nachrichtenmengen in Queues)
  • Überprüfung mögl. vereinbarter Service-Level-Agreements mit dem Ziel eines Frühwarnsystems

Unter fachlichem Monitoring kann man hingegen die folgenden Aktivitäten zusammenfassen:

  • Überwachung des Auftragseingangs/Std.
  • Überwachung von Auswirkungen durch fachl. getriebene Werbekampagnen
  • Messung der Wartezeiten von Anrufern in Call-Centern

Dabei lassen sich viele Aufgabenstellungen im Umfeld BAM auf wenige, sehr gleichartige Prinzipien zusammenfassen:

  • Bewertung von Daten anhand konfigurierter Kritierien
  • Messung von Zeit, Anzahl, abgeleiteten Werten (z.B. Durchsatz)
  • Eskalation bei Überschreitung von Schwellwerten (Trend-Breaks, etc.)

Wie konkret die einzelnen Aufgaben konkret realisiert werden, ist eigentlich gleich - von Bedeutung ist, dass diese gleichartig sind und damit auf die gleiche Art und Weise realisiert werden können.

Implementiert man abstrakte/generische Komponenten, die diese Aufgaben erledigen, meistens auf Basis von XML, erhält man eine investitionssichernde Applikation, die auch späteren Änderungen standhalten kann.

Eine mögliche Architektur für eine solche Komponente kann wie folgt aussehen:

  • Erstellung von Adaptern für die einzelnen Zielsysteme. Diese greifen auf die Randsysteme zu und extrahieren die relevanten Daten. Diese liegen entweder in einem allg. Format vor, dass für die BAM Komponente allgemeingültig ist, oder in einem applikationsspezifischen Format auf Basis von XML. Sofern man für ein applikationsspezifisches Format votiert, hat das den Vorteil, das weniger Anpassungen an den betroffenen Randsystemen erforderlich sind. Dafür muss die Integration dann “vor” der BAM Komponente erfolgen.
  • Erstellung einer Vorverarbeitung. Diese extrahiert die für den Trigger relevanten Informationen und stellt diese der BAM Komponente in kanonischer Form bereit. Kanonisch bedeutet, dass alle relevanten Informationen wie eindeutige Zuordnungs-ID, relevante Zeitstempel, etc. vorhanden sind
  • Erstellung einer Integration. Diese nimmt die extrahierten, kanonischen Daten entgegen und integriert diese zu einer Gesamtsicht. Dabei bleiben alle Daten erhalten, werden aber für Zugriffe zur Verfügung gestellt. Diese Komponente ist ebenfalls in der Lage, Anfragen bzw. Bewertungsqueries zu beantworten, hinsichtlich der Anzahl von Datensätzen zu einem Schlüssel, Zeitstempel, Mittelwerte/Durchsätze. Durch die Verwendung einer zentralen Komponente, die alle Daten verwaltet, können Erweiteurngen in Bezug auf neue Abfragen/Operationen einfach (z.B. über eine Plugin-Architektur) hinzugefügt werden.

Das Hauptaugenmerk liegt sicherlich auf der BAM Komponente selber. Diese muss in der Lage sein, Konfigurationen einzulesen und diese zu verarbeiten. In diesen Konfigurationen wird für jeden Schlüssel hinterlegt, welche Operationen aufgerufen werden und welche Schwellwerte, welche Aktionen auslösen.

Durch diese nicht-monolithische Architektur wird sichergestellt, dass es keinen development-lock-in gibt, sondern kontinuierliche Erweiterbarkeit sichergestellt ist.

Die BAM Kompenten kann dabei über diverse Wege selber Statistiken bereitstellen (Hit/Miss Ratio, Trends, etc.), die Aussagen über die Intensität und den “Erfolg” der implementierten Regeln geben.

Die Aktionen, die eine BAM Komponente ausführen kann, sollte wiederum in Form von Plugins vorhanden sein. Dadurch ist maximale Flexibilität gewährleistet und jede Aktion für sich kann über das kanonische Datenmodell alle relevanten Informationen abgreifen.

Die Implementierung kann beispielsweise auf Basis eines ESB erfolgen, indem über eine Registry die vorhandenen Plugins registriert werden (je nach Kategorie (Aktion, Operation)). Die BAM Komponente kann über die Registry dynamisch abfragen, welche Operationen zu Verfügung stehen und damit autonom entscheiden, welche Trigger überhaupt aktiviert werden. Diese wiederum greifen über das zentrale Datenmodell auf die Faktenbasis zu und lösen über ihre Ergebnisse ggf. Aktionen in der BAM Komponente aus.

Über diese enge aber trotzdem loose Verzahnung von einzelnen Komponente lässt sich Flexiblität und schnelle Änderbarkeit zentral und verteilt realisieren - eine service-orientierte Architektur auf Basis (eventuell) eines ESB.

Im Rahmen dieser kurzen Ausführungen habe ich vorgestellt, wie auf Basis eines konkreten Geschäftsnutzens eine service-orientierte Architektur verwendet werden kann, um dynamisches Business Activity Monitoring zu implementieren. Als Standardarchitektur kann dabei ein Enterprise-Service Bus eingesetzt werden, der das kanonische Aufrufen von Komponenten ermöglicht und sicherstellt. Im Rahmen einer service-orientierten Architektur kann somit eine “SOA in Klein” etabliert werden, die genau die benötigten Anforderungen umsetzt.

Motivation für den Einsatz von EAI (oder SOA, ESB, EDA)?

Dienstag, Februar 26th, 2008

In modernen Geschäftsumgebungen gibt es eine ganze Reihe von Standardanwendungen und selbst entwickelten Lösungen. Gerade letztere haben sich in der Vergangenheit entwickelt, da Standardkomponenten nicht immer den Erfordernissen eines modernen Geschäftsbetriebs gerecht wurden. Die Standardanwendungen hingegen haben oftmals durch komplizierte und/oder unbrauchbare Schnittstellen ausgezeichnet, die in vielen Fällen den Wünschen der Anwender zuwiderliefen, anstatt diese zu unterstützen.

In diesem Umfeld hat sich EAI entwickelt - als Möglichkeit, beliebige Anwendungen in einem heterogenen Umfeld miteinander zu verknüpfen. Dies erfolgt auch Ebene der Daten und erfolgt über orchestrierten und geordneten Austausch der Daten über Anwendungsebenen hinweg.

Die Notwendigkeit ist dabei relativ klar, wenn man überlegt, das ein Unternehmen Daten zwischen Anwendungen austauschen können muss. Sofern die bestehenden Anwendungen hinreichend “gute” Export-/Importmöglichkeiten bietet, gibt es erstmal keine Notwendigkeit, eine EAI Infrastruktur zu realisieren. Steigt aber die Anzahl der Schnittstellen an, bzw. sollen viele Datenstrecken realisiert werden, führt dies zu Point-to-Point Verbindungen, die nicht gewünscht sind, da der Verwaltungsaufwand und die Administration extrem steigt. Zudem wird das ganze Gebildet recht schnell unübersichtlich.

In diesem Umfeld bietet sich ein zentraler Hub an, der für den Datenaustausch zuständig ist - die EAI Plattform.

Die Frage, die technisch interessant ist, ist die nach der Motivation. Reichen die Argumente, die eine EAI Plattform bieten kann:

  • Auflösen der Point-to-Point Verbindungen
  • Entflechtung und Harmonisierung der unterschiedlichen Datenströme
  • schnelle und zentrale Anpassung bzw. Änderbarkeit von Datenflüssen

aus, um sich für eine Einführung zu entscheiden?

Diese Frage hat sich sicherlich vor einiger Zeit noch gestellt, als es wenige Alternativen gibt - diese waren vor allem auch noch zumeist proprietär. Das immer gleiche Problem, dass es zu lösen gab und gibt ist, dieses:

Auf welche Art und Weise kann die IT auf die sich immer schneller ändernden Anforderungen der Geschäftswelt reagieren? Ergänzt wird dies in letzter Zeit noch mit dem Zusatz: Welchen Beitrag zum Gesamtergebnis eines Unternehmens kann die IT leisten?

Um die Gunst der IT-Entscheider ranken sich mittlerweile die Konzepte EAI, SOA, EDA und ESB.

Dabei verspricht EAI, das Business zu beschleunigen, indem die Datenströme in einem Unternehmen beschleunigt und “gestreamlined” werden. In einem Umfeld, in dem vor allem der Datenaustausch als zentrales Problem gesehen wird, die Anwendungen für sich genommen aber funktional ausreichend sind, ist dies die richtige Entscheidung. Hierbei handelt es sich also um eine Infrastruktur-Disziplin.

Dem gegenüber verspricht SOA die Geschäftsprozesse zu beschleunigen, in dem die Geschäftsprozesse analysiert werden, aufgespaltet werden in Komponenten (sogenannte Services) und anschließend über eine dynamische Orchestrierung wieder zusammengefügt werden. Hier wird ein Schritt weiter gegangen, als bei der EAI Architektur. Anstelle die Datenströme zu optimieren (und damit implizit auch einen Beitrag zur Geschäftsprozessoptimierung in zeitlicher Hinsicht) wird bei SOA der Geschäftsprozess insofern in den Mittelpunkt gestellt, als die Abbildung des gesamten Prozesses in technischer Form zu einer ganzheitlichen Orchestrierbarkeit führt. Hierbei gehört der zugehörige Datenaustausch natürlich mit ins Konzept, wird aber eher zweitrangig “mitbehandelt”. Der EAI Gedanke wird mit einbezogen und ggf. ein Teilen umgesetzt, der Fokus liegt aber klar auf dem Prozess.

Betrachtet man EDA, so handelt es sich nicht um eine technische Lösung, sondern vielmehr um ein Architekturpattern, die Event-Driven-Architecture. Diese zielt darauf ab, gerade in gewachsenen Strukturen dazu zu kommen, sich von festen Zeitpunkten zu lösen und die Plattform und die darauf laufenden Applikationen eng aneinander zu koppeln. Dabei wird jeder Prozessschritt an den nächsten angekoppelt (unter Verwendung von Triggern oder ähnlichen Ereignissteuerungen), um damit eine möglichst enge Verzahnung zu erreichen. Durch eine solche Kopplung soll erreicht werden, dass auf unnötige Wartezeiten verzichtet wird. Hierbei handelt es sich ganz klar um eine techologisch losgelöste Vorgehensweise, die sowohl mit EAI Plattformen als auch mit SOA Architekturen umgesetzt werden kann.

Als letztes tritt ESB an, die Gunst der IT’ler zu erwerben. Dabei handelt es sich um eine Architektur und Plattform, um Komponenten mit bestimmten Schnittstellen in ein Ganzes zu führen. Das bedeutet, man installiert eine Plattform und installiert auf dieser Plattform einzelne Komponenten. Jede dieser Komponenten hält sich an eine vorgegebene Schnittstelle und die Plattform kümmert sich um die Ansteuerung der einzelnen Module. Welche davon in welcher Reihenfolge angesprochen werden, ist der jeweiligen Konfiguration zu entnehmen, die mit ausgeliefert wird. Dadurch können Änderungen sehr schnell umgesetzt werden, da lediglich die Konfiguration angepasst wird. Im Falle von Änderungen an den Komponenten, müssen nur die jeweiligen Komponenten angepasst werden, die Konfigurationen nehmen die Änderungen beim Deployment automatisch auf.

Hierbei handelt es sich sowohl um ein Architekturpattern, dass nicht zwangsläufig an eine konkrete Plattform gebunden ist. Andererseits bieten diverse Hersteller Produkte dieser Kategorie an, die allesamt die notwendigen Voraussetzungen mitbringen.

Die Frage nach dem Gesamtsieger ist relativ einfach zu erklären, da es keinen tatsächlichen Sieger gibt. Stattdessen bearbeiten alle Anwärter Teilgebiete des Ganzen, das sinnvolll zusammengefügt werden will.

Folgender Ansatz kann gewählt werden, um zu einer Lösung zu gelangen:

  • Implementierung der Middleware auf Basis eines ESB. Hierbei wird einfache Erweiterbarkeit und schnelle Umkonfiguration von statischen Datenstrecken sichergestellt.
  • Implementierung von Datenstrecken auf Basis von etablierten EAI Patterns. Hiermit wird erreicht, dass synchronisierte Datenströme, die evtl. unter Performanceaspekten zu realisieren sind, in einer einheitlichen und zentral administrierten Plattform aufgebaut werden. Es wird ein ESB verwendet, ohne auf irgendwelche Aspekte der EAI zu verzichten
  • Unterstützung der Geschäftsprozesse durch eine SOA Architektur. Auf Basis eines ESB ist sichergestellt, die Vorteile der zentralen Komponenteregistrierung zu nutzen, die Flexibilität einer SOA aber weiterhin zur Verfügung zu haben. Durch die Registrierung weiterer Komponenten zur Laufzeit können dabei Funktionalitäten wie Geschäftsregeln (Business Rules), Orchestrierungen (BPEl, BPM, etc.) oder Aktivitätsüberwachung (BAM) unkompliziert nachgerüstet werden.
  • Als generelles Schema für die Implementierung sollte dabei der EDA Gedanke aufgegriffen werden. Durch eine ereignisgesteuerte Abarbeitung werden Leerlaufzeiten vermieden und damit maximale Agilität sichergestellt. Optimierungen einer Stelle des Prozesses wirken sich damit unmittelbar auf die nachgelagerten Stellen aus.

Um alles nochmal kurz zusammen zu fassen: Es wurden die Probanden EAI, SOA, EDA, ESB betrachtet. Dabei haben sich alle als tauglich erwiesen, bieten aber nur in sich verzahnt maximale Flexibilität. Diese wird dann erreicht, wenn auf Basis eines ESB die statischen Datenstrecken über EAI Architekturen abgebildet werden. Die flexiblen Bestandteile werden nach SOA Patterns abgebildet. Die grundsätzliche Vorgehensweise richtet sich dabei nach EDA Prinzipien (also mit maximaler Flexibilität).

Über ein solches Vorgehensmodell können sowohl die Anforderungen von statischen, hochperformanten Datenströmen, als auch von flexiblen Prozessen, die an die Geschäftswelt angelehnt sind, realisiert werden. Durch die Verwendung eines ESB wird die zukünftige Erweiterbarkeit sichergestellt, ohne eine spätere Gefährdung der Stabilität in Kauf zu nehmen (da nur isolierte Komponenten betrachtet werden).

ESB – Architektur und Struktur für SOA?

Samstag, Februar 23rd, 2008

Der Hype um die service-orientierten
Architekturen ist ziemlich hochgekocht und hatte auch durchaus seine
Berechtigung. Die vermutete Lösung aller Probleme jenseits der
Architekturen, Silos und Programmiersprachen hat extrem
verheißungsvoll geklungen und dieses Versprechen wurde auch zu
guten Teilen eingehalten.

Durch die Verwendung von Web-Services
ist es schließlich möglich, aus der Java-Welt heraus einen
Mainframe mit CICS anzusprechen, die Ergebnisse direkt als XML an
eine Oracle-Datenbank zu schicken und noch eine Statusmeldung an
einen Python-basierten Service zu schicken. Das diese Services quer
über den Erdball verteilt liegen können, ist dabei
lediglich das Sahnehübchen auf der Messlatte des Erreichten.

Allerdings wurde dabei eine wichtige
Eigenschaft übersehen: Die „Struktur des Ganzen“ - die
Architektur halt.

Über das Protokoll SOAP war
lediglich geklärt, wie die einzelnen Services austauschen und
worauf jeder Service bauen kann – was er erhält. Ferner hat
sich jeder Dienstanbieter dazu verpflichtet gesehen, ein Datenformat
zu nennen, mit dem seine Dienste aufgerufen werden können. Diese
haben dann alles Mögliche gemacht: PDF’s erstellt, Berechnungen
durchgeführt, Zahlen und Charts und Grafiken überführt,
etc.

Wie die ganze Orchestrierung dahinter
abläuft – das hat niemand gesagt. Also hat jeder seine eigenen
Überlegungen angestellt und daraus sind die unterschiedlichsten
Resultate hervor gekommen. Teilweise waren diese sinnvoll, teilweise
eher „proprietär“. Aus diesem Grunde ist die Entwicklung der
ESB-Architektur ein Meilenstein in der SOA Entwicklung und könnte
dem „Durchbruch von SOA in der Breite“ dienen.

Die Definition von SOA und ESB ähneln
sich dabei sehr stark: anstelle einer konkreten, spezifischen Vorgabe
handelt es sich vielmehr um eine Ansammlung von Eigenschaften, die
für das jeweilige Konstrukt prägend sind.

Ob es sich dabei um die Kombination von
SOAP/Web-Services im Falle von SOA oder JbossESB im Falle von ESB
handeln muss, ist diskutierbar. Schließlich führen viele
Wege zum Ziel und diese Freiheit ist gut und wichtig. Durch die
Festlegung von Eigenschaften ist es freigestellt, wie diese in der
jeweiligen Umgebung realisiert werden können. Anhand dieser kann
aber jeder Auftraggeber sehr einfach prüfen, welche Güte
die umgesetzte Lösung eines Dienstleisters hat und inwieweit
sich dieser an die Referenzeigenschaften gehalten hat.

Wenn man die gewonnenen Erkenntnisse
auf die Software-Entwicklung überträgt, so kann man dort
sehr einfach Analogien feststellen. Am Anfang der Entwicklung hat
jeder so gearbeitet, wie es ihm beliebte. Die Build-Prozesse wurden
dabei über „ant“ in erste Bahnen gelenkt. Durch die
konsequente Weiterentwicklung in Richtung „maven“ ist nun ein
neuer Meilenstein erreicht: ein vorgegebenes Framework für die
Software-Entwicklung mit einer einheitlichen Abhängigkeitsverwaltung,
einer einheitlichen Verzeichnisstruktur und vielem mehr.
Kontrollierte Freiheit.

Diese Entwicklung scheint nun auch im
Bereich der SOA Einzug zu halten – und dies ist absolut
begrüßenswert!

Architektur für den Enterprise Service Bus – warum das ?

Samstag, Februar 23rd, 2008

Entscheidet man sich dafür, die
eigenen Middlerware auf einen Enterprise Service Bus zu heben, so
könnte man dies 1:1 tun. Das Ergebnis wäre relativ
monolithisch, schwer erweiterbar und käme dem Gedanken des ESB
vermutlich nicht nahe. Anstelle dessen sollte man sich konkret
anschauen, was ein ESB für Konzepte anbietet und wie diese
Konzepte sinnvoll Verwendung finden.

Findet neben einem ESB noch ein
Applikationsserver Verwendung (z.B. als größere
Laufzeitumgebung) so erweitern sich die Möglichkeiten der
Architektur um einiges und müssen daher mit Bedacht bewertet
werden.

 

Folgende Konzepte eines Java gestützten
ESB (JBI) sollen betrachtet werden:

  • JBI Komponente

  • JBI Shared Library

  • Service Unit

  • Service Assembly

  • Message Exchange Listener

JBI Komponente

Eine JBI Komponente stellt eine
wiederverwendbare Funktionalität für den Bus zur Verfügung.
Das kann z.B. die Fähgikeit sein, XSLT-Transformationen
auszuführen, oder CSV Dateien zu generieren. Alle Funktionen,
die an mehr als genau einer Stelle Verwendung finden sollen (und
nicht für einen konkreten Anwendungsfall spezifisch sind),
sollten als JBI Komponente realisiert werden.

Bei allen anderen Teilkomponenten ist
es relativ schwierig zu entscheiden. Wenngleich die Spezifikation das
hergibt, halte ich es für relativ … schwach :)

JBI Shared Library

Für shared libraries gibt es einen
klassischen Anwendungsfall: Klassen, die übergreifend in JBI
Komponenten verwendet werden sollen. Diese Bibliotheken stehen dem
gesamten Bus zur Verfügung und sind daher für übergreifende
Funktionalitäten sinnvoll.

Service Unit

Eine Service-Unit ist die Instanz einer
JBI Komponente. Diese werden über XML Dateien parametrisiert. Da
in solchen XML Beschreibungen auch „anderweitige“ Konfigurationen
abgelegt werden können, sollte beim Design explizit darauf
geachtet werden, dass nur SU-spezifische Konfigurationen dort
abgelegt werden, da ansonsten die Übersichtlichkeit leidet.

Service Assembly

Eine Service-Assembly stellt die
logische Bündelung von Service-Units dar. Aus diesem Grunde
sollte ein SA auch nur aus denjenigen SU’s bestehen, die für die
Anwendung notwendig ist. Dabei sollten die SA’s in sinnvolle und
applikationsspezifische Blöcke geschnitten werden.

Message Exchange Listener

Das Konzept der Message Exchange
Listener sorgt dafür, dass man eine Möglichkeit hat, auf
Veränderungen und Serviceaufrufe zu reagieren. Darüber kann
man globales Fehlerhandling, Logging, etc. implementieren. Durch die
Implementierung an einer zentralen Stelle kann damit das gesamte
Verhalten der Plattform beeinflusst werden.

Die Beeinflussung kann dabei positiv
wie negativ sein. Da je nachdem, wie komplex die Operationen sind,
die in einem MEL abgehandelt werden, kann dabei die Gesamtperformance
leiden. Aus diesem Grunde sollte jeder MEL so aufgebaut werden, dass
möglichst früh in der Verarbeitung festgestellt werden
kann, ob der Exchange evtl. verworfen werden kann (da nicht alle
Matching-Kriterien erfüllt sind).

Fazit

Die Verwendung eines Enterprise Service
Bus stellt erstmal keine direkt höheren Anforderungen als ein
anderes IT-Produkt oder Middleware-Plattform. Allerdings sollte man
sich mit den Grundlagen und Architekturkonzepten dieses Prinzips
vertraut machen, um die Möglichkeiten voll ausschöpfen zu
können und sich nicht von Anfang an in eine grundsätzliche
architektonische Sackgasse bewegen.

Best Practices
Auf Wiederverwendbarkeit hin
designen

  • bereits bei der Planung einer
    neuen Strecke sollte man sich überlegen, welche generischen
    Komponenten benötigt werden. Eine zu starke Fokussierung auf
    den konkreten Anwendungsfall löst zwar vielleicht das Problem,
    reduziert aber den Nutzen, den Wiederverwendbarkeit bringt. Gerade
    bei der Verarbeitung von Datenformaten sollte auf den kleinsten
    gemeinsamen Nenner hin entwickelt werden, sodass die Spezialisierung
    über die Parametrisierung erfolgt

Business Activity Monitoring – Warum das ?

Donnerstag, Februar 21st, 2008

Mit dem Schlagwort „Business Activity Monitoring“ wird ein relativ aktuelles Buzzword umschrieben, hinter dem sich die fachliche Überwachung von technisch umgesetzten Prozessen versteckt. Die Idee dabei ist, dass in einer flexiblen IT-Welt unterschiedliche Ereignisse dynamisch eintreten können und diese oft erst relativ weit hinten auf einem Zeitstrahl erkannt werden können. Oftmals werden die Informationen eines Unternehmens in einem Data-Warehouse zusammengefasst. Auf diesem Datenbestand können dann Analysen und Berichte aufgesetzt werden. Das ist für viele Daten soweit okay, allerdings bietet es auch das Problem, dass Daten niemals zeitnah zur Verfügung stehen.

Da Busienss Activity Monitoring setzt aber direkt auf Ebene der Datenströme auf und kann dadurch sehr viel zeitnäher informieren. Dabei werden durch die Fachbereiche „interessante“ Kriterien definiert, die eine Aktivität beschreiben – Bestellungen, Orderaufgaben, Bearbeitungsstati. Während nun all diese Aktionen zu Reaktionen innerhalb der IT-Welt führen, greift die/eine BAM-Komponente die unterschiedlichen Datenströme ab und bewertet sie anhand der vorgegebenen Kriterien.

Als Reaktion kann durch so eine Komponente beispielsweise bewertet werden, wie lange eine Orderausführung benötigt, an welcher Stelle im Prozess Verzögerungen aufgetreten sind und wie sich diese entlang des gesamten Ausführungsprozesses verteilen. Alternativ kann auch im „Livebetrieb“ der Erfolg von Werbemaßnahmen bewertet werden, da erkennbar ist, für welche Produkte Bestellungen eingehen. Insofern sind mannigfaltige, sehr zeitnah ausführbare, Analysen möglich. Die Historisierung kann dabei entweder auch innerhalb der Plattform, oder in einem Data-Warehouse erfolgen.

Die Integration von BAM in eine bestehende Plattform kann dabei ganz unterschiedliche Ausmaße annehmen. Verwendet man als Rückgrat einen ESB (=Enterprise Service Bus) bzw. ein entsprechendes Konzept, so kann die Integration sehr transparent erfolgen, da Produkte wie beispielsweise Apache ServiceMix die Möglichkeit bieten, die gesamte Kommunikation innerhalb des Buses abzugreifen und vor-/nachzuverarbeiten. Findet eine SOA Einsatz, die auf einen ESB verzichtet, so kann ein Interceptor-Pattern angewendet werden, um einen BAM-Layer einzuziehen. Die Änderungen sind dabei ebenfalls eher gering, können aber zu einer weitreichenden Datenbasis führen, die durch die Änderung an einer zentralen Stelle in der Architektur hervorgerufen wird.

Egal, welchen Ansatz für die Integration gewählt wird, ein auf jeden Fall wichtiger Punkt ist die Performance der Plattform. Da diese Auswertung on-top auf die bestehende Plattform aufgezogen wird, ist es notwendig, diesen Layer so schlank wie möglich zu halten, um die Gesamtperformance nur minimal zu beeinflußen. Daher sollte hier, egal wie die konkrete Lösung aussieht, lediglich ein Store-and-forward Prinzip Verwendung finden. Die empfangenen Nachrichten sollen gespeichert bzw. an ein Messaging-System oder anderweitigen persistenten Speicher übergeben werden und die Verarbeitung soll sofort weiterlaufen. Eine tatsächliche Echtzeit-Verarbeitung ist für dieses Konstrukt nur in wenigen Fällen sinnvoll (in denen es keine zeitlichen Restriktionen gibt) und aus diesem Grunde sollte jeder Eingriff minimal-invasiv (medizinisch gesprochen) vorgenommen werden.

EAI, SOA, BPM - warum das ?

Mittwoch, Februar 20th, 2008

Das Thema service-orientierte Architekturen ist lang und breit diskutiert worden.
Eine einheitliche Definition gibt es eigentlich nicht, dafür ein relativ breites Verständnis davon, was eigentlich das Ziel der Übung ist.

In den Unternehmen haben sich Silos angesammelt. Diese haben sich dadurch etabliert, dass unterschiedliche Anwendungen für verschiedene Zwecke eingesetzt werden - das ist soweit auch okay, allerdings ergibt sich dadurch zwangsläufig eine redundante Datenhaltung und keine einheitliche “Architektur des Ganzen”. Der Aspekt der redundanten Datenhaltung und Synchronisierung kann über EAI (=Enterprise Application Integration) Architekturen als Middleware gelöst werden. Dabei wird eine Middleware eingesetzt, die sich um den Datenaustausch zwischen den Anwendungen kümmert.

Damit wird die erste Hürde genommen - alle Anwendungen in einem Unternehmen werden mit einem sinnvollen und einheitlichen Datenbestand versorgt. Dabei sind führende Systeme definiert worden, sodass für alle Beteiligten transparent ist, von welchen Systemen ausgeliefert werden und welche Systeme die Abnehmer dieser Daten sind.

Wenn diese Herausforderung gemeistert ist, verwendet das Unternehmen die Anwendungen auf einem einheitlichen Datenbestand, aber noch nicht verzahnt. Darauf sind die Anwendugen auch nicht ausgelegt - jede Anwendung löst das spezielle Problem für das sie ausgelegt/angeschafft ist/wurde, aber verständlicherweise können darüber vernetzte Probleme nur schwer bewältigt werden.
Aus diesem Grunde werden bei einer service-orientierten Architektur die Anwendungen in Services, also Blöcke zerlegt. Jeder “Block” stellt dabei einen für sich abgeschlossenen Funktionsblock dar, der entweder selbsttätig die ganze Arbeit erledigt, oder aber auf Funktionen anderer Services zurückgreift. Durch diese Dienste-orientierung ist es möglich, dass Prozesse bzw. Workflows über Anwendungsgrenzen hinaus definiert werden können. Diese werden anschließend in Services gegossen und aufgerufen. Dabei kümmern sich die Services um die Datenbeschaffung (sofern notwendig) und Abarbeitung der Aufgaben.
Durch die Kapselung der Funktionen in Services können die darunterliegenden Anwendungen ausgetauscht werden - die einzige Änderung an den Prozessen besteht in der Anpassung der betroffenen Services.

Ist ein Unternehmen so weit, diese Stufe erreicht zu haben, bedarf es einer Möglichkeit, die Prozesse zu steuern. Im Anfangsstadium sind diese typischerweise fest verdrahtet, sofern nur wenige Services umgesetzt wurden oder erstmal nur “im Kleinen” begonnen wurde. Mit zunehmender Komplexität bedarf es aber der Möglichkeit, diese besser zu koordinieren. Zudem hat der Fachbereich ein Interesse daran, Änderungen an “seinen” Prozessen auch weitgehend selber durch zu führen. Dies wird über BPM-Systeme ermöglicht. Innerhalb eines BPM Systems werden dabei Prozesse und Service-Aufrufe abgebildet und zu einer Einheit zusammengefügt. Diese Einheit kann, sofern alle Zwischenschritte und etwaige Transformationen vorhanden sind, manuell durch den Fachbereich verändert und rekombiniert werden - die IT unterstützt die Fachprozesse, das Ziel jeder Veränderung.

Technologisch betrachtet hat alles bei proprietären Lösungen angefangen. Durch zunehmende Verbreitung können alle diese Themen aber auch durch konstenlose Werkzeuge aus der Open-Source Welt umgesetzt werden, da die eingesetzten Technologien zu einer “Commodity”, zu einem Allgemeingut werden. Rückgrat der ganzen Architektur ist ein ESB (=Enterprise-Service-Bus). Diese Architektur (denn es ist nicht zwangsläufig ein konkretes Produkt!) bietet die Voraussetzung für die dynamische Kombination und Verschaltung von isolierten Komponenten (=Services). Darauf aufbauend können Architektur-Muster für service-orientierte Architekturen auf Basis von Web-Services, EJB’s, What-ever umgesetzt werden.

Wie ist euer Verständnis von dem Thema? Habt ihr andere Sichtweisen - immer her damit !?