In ihrer Präsentation "Event Driven Architecture" zeigen Torsten Winterberg (Direktor Strategie & Innovation bei OPITZ CONSULTING) und Guido Schmutz (Technology Manager bei Trivadis) den Nutzen von EDA für moderne Anwendungslandschaften auf.
7. EDA Basics: Event Zwei Bedeutungen: Etwas, das wahrnehmbar geschieht Etwas, das diese Aktivität in einem Computersystem repräsentiert(Event Object) Der „Event“-Begriff ist überladen Business Event: Statuswechsel in einer Unternehmung Wir sind interessiert am
11. Event Processing Durchführung von Operationen auf Ereignissen: Lesen Ändern Erzeugen Terminieren Voraussetzungen für EDA: Realität weicht von Erwartungshaltung ab Also spezifiziere: Erwartungshaltung Signifikante Abweichung Antwortverhalten
14. Event Stream Processing (ESP) „Notableevents“ UND „ordinaryevents“ treten auf „ordinaryevents“: Repräsentieren „businessasusual“: Bestellungen, RFID-Übertragungen, etc. Können lokal vorgefiltert werden, ehe sie in den Event Stream übergeben werden: -> Erkennen von „notable“-Zuständen
17. Complex Event Processing (CEP) CEP befasst sich mit dem Zusammentreffen unterschiedlicher Events um Aktionen abzuleiten Die Events (notable oder ordinary) können unterschiedliche Eventtypen haben und zusätzlich über lange Zeiträume auftreten Die Event-Korrelation kann inhaltlich, zeitlich oder räumlich sein CEP wird verwendet, um Anomalien, Bedrohungen oder Chancen im Geschäft detektieren (und darauf reagieren) zu können
19. Wo ist der Unterschied zwischen ESP und CEP? Unterschiede: ESP: Verarbeitung von Streams Event Stream ist Sequenz von Events, zeitlich geordnet (z. B. Börsenticker) CEP: Verarbeitung von Clouds Event Cloud ist das Ergebnis von vielen eventerzeugenden Aktivitäten aus unterschiedlichen Teilen eines IT-Systems. Eine Event Cloud könnte mehrere Streams enthalten. Ein Stream ist ein Spezialfall einer Cloud. Annahme einer vorliegenden zeitlichen Reihenfolge in Event Streams hat Vorteile: Schnell, nur wenige Events merken In Clouds dagegen: Abhängigkeiten sind wichtig: Welche abhängigen Events sind aufgetreten oder vielleicht ausgeblieben? In Zukunft werden mit der Evolution der Event Processing Engines nur die marginalen Differenzen verschwimmen.
20. Continuous Query Language (CQL) Deklarative Anfragesprache für Datenströme in Data-Stream-Management-Systemen Erweiterung von SQL Im Rahmen des STREAM-Projekts an der Stanford University entwickelt Noch in der Entwicklung begriffen und nicht offiziell standardisiert Oracle setzt CQL innerhalb der CEP-Engine im Release 11 der SOA Suite ein
21. Continuous Query Language (CQL) Wesentliche Erweiterung von CQL zu SQL: Zusätzlich zu Relationen existieren Datenströme als Datentypen Datenströme lassen sich als potentiell unendliche Folge von Zeit-Wertepaaren auffassen Umwandlung zwischen Strömen und Relationen durch zwei Arten von Operatoren: Ströme in Relationen „Fenster“-Operator [...] Relationen in Ströme Insert-Stream-Operator ISTREAM Delete-Stream-Operator DSTREAM Relation-Stream-Operator RSTREAM
22. Beispiel CQL Es werden kontinuierlich Wetterdaten gemessen, die als Datenstrom in einer Applikation ankommen. Der folgende CQL-Ausdruck liefert mit Hilfe eines Fenster-Operators die Durchschnittstemperatur der vergangenen24 Stunden: SELECT AVG(Temperatur) FROM Wetter [Range 1 Day] Da es sich um eine kontinuierliche Anfrage handelt, wird diese per Istream standardmäßig wieder in einen Datenstrom umgewandelt. Die vollständige Anfrage lautet also: SELECT ISTREAM(AVG(Temperatur) FROM Wetter [Range 1 Day])
23. ORDER 325 Customer C2 Address A1 Credit Card Z2 ORDER 567 Customer C5 Address A1 Credit Card Z5 ORDER 1 Customer C1 Address A1 Credit Card Z1 ORDER 567 Customer C4 Address A1 Credit Card Z4 Channel 3: web B ORDER 567 Customer C3 Address A1 Credit Card Z3 Channel 2: phone Channel 1: web A time CQL-Beispiel CREATE STREAM S ( order_id int, ship_address char(64), credit_card_id BigInt, […]); CREATE VIEW V1 (ship_address, credit_card_id) Rstream (SELECT DISTINCT ship_address,credit_card_id FROM S [RANGE 180 DAYS]); CREATE VIEW V2 (ship_address, Xcount) RStream (SELECT ship_address, COUNT(*) FROM V1 [RANGE 180 DAYS] group by ship_address; CREATE QUERY Q SELECT Xcount, credit_card_id FROM V2, V1 WHERE Xcount > 5 AND V2.ship_address = V1.ship_address;
24. Fundamental CEP Design Patterns Filtering In-memory caching Aggregation over windows Database lookups Database writes Correlation (joins) Event pattern matching State machines Hierarchical events Dynamic queries Source: http://www.coral8.com/system/files/assets/pdf/Coral8DesignPatterns.pdf
25. Conceptual Overview Three major building blocks Event producers Event Processing Network Event consumers
42. Esper Overview Esper – A Java technology ESP/CEP container When Esper statement then your Java code as usual Lightweight and embeddable into any Java technology process Open source Convergence of ESP and CEP Project background Release 1.0 announced in June 2006 NEsper for .NET CEP and ESP GPL GNU Public License v2.0 Embeddable in any Java 5 App Server Groovy and Spring Integration Commercial liability, support and services available EsperTech Inc.
43. Esper – Architecture Queries are registered, data flows through them Engine: Unit of isolation (time, threads, streams) Statements: Event Processing Language (EPL) Listener: A simple Java technology interface
44. Rich IDE Debugging JMX instrumentation Embeddable Available as a service Performance Event history replay Integration options Non-intrusive event model Variety of event data storage options Adapters Ability to start/stop queries Ability to change queries on the fly What to look for in a CEP product
46. Einsatzszenarien SOA/EDA Eine Komponente sollte SOA für einen Serviceaufruf nutzen, wenn … … genau bekannt ist, welcher Dienst aufgerufen werden soll. … der Service genau einmal aufgerufen werden soll. … eine Antwort über die Beendigung eines Dienstes erwartet wird. … wenn eine Antwort erwartet wird. Eine Komponente sollte EDA für eine Ereignispublikation nutzen, wenn … … alle Empfänger benachrichtigt werden sollen, die daran Interesse haben. … nicht bekannt ist, welche Empfänger an dem Ereignis interessiert sind. … nicht bekannt ist, wie Empfänger auf dieses Ereignis reagieren. … wenn unterschiedliche Empfänger unterschiedlich auf das gleiche Ereignis reagieren. … es sich um eine Einweg-Kommunikation vom Sender zum Empfänger handelt.
49. Beispiel: Integration von Systemen Middleware Virtualisierung Frontend Frontend Virtualisierung Backend Backend <<FTP Adapter>> xxx_out_ftp <<Webservice>> erp_in_xxx <<FTP Adapter>> xxx_out_ftp <<Webservice>> erp_in_xxx <<ERP>> Standardsoftware <<Middleware>> OracleSOA Suite 11g <<ERP>> Standardsoftware <<Webshop>> Individualentwicklung <<Middleware>> OracleSOA Suite 11g <<FTP Adapter>> xxx_in_ftp <<Webservice>> erp_out_xxx ERP aktualisierteine Artikeldefinition Middleware routet zum richtigen Shop SOA Suite übermittelt die Artikeldefinition
50. Fortsetzung Beispiel: Integration von Systemen Quellsystem feuert Event Nicht an Weiterverarbeitung interessiert Komplette Entkopplung der Aufrufketten Subscriber horcht auf interessante Eventtypen Startet Weiterverarbeitung Abstraktion von Messagingsystem Jetzt Business Event Level
51. Prozesskopplung Komplexe Vorgänge lassen sich oft nicht als lineare Prozessketten formulieren. Steuerprozess sammelt Events und reagiert ggf. situationsabhängig.
53. Fazit SOA und EDA ergänzen sich und sind keine konkurrierenden Architekturen EDN bringt Events als “first class citizens” in die SOA Suite DeklarativerAnsatz Publish/Subscribe-Semantikohnedirekt JMS zunutzen Setzt den Aspektder “Business Events” in den Fokus Führtzu Event-Driven SOA (ED-SOA)
54. Kontakt Torsten Winterberg Director Strategy & Innovation Head of Competence Center SOAOracle ACE Director OPITZ CONSULTING GmbHKirchstr. 6, 51647 Gummersbach, GermanyPhone: +49 2261 6001 0torsten.winterberg@opitz-consulting.com
55. Kontakt Guido Schmutz Technology Manager/PartnerOracle ACE Director Trivadis AGPapiermühlestrasse 73, 3014 Bern, SwitzerlandPhone: +41 31 928 09 60guido.schmutz@trivadis.com