SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
Event Sourcing
für reaktive Anwendungen
Einführung + Best Practices
Michael Plöd
@bitboss
Die meisten aktuellen
Systeme speichern den
aktuellen Zustand beim
Verarbeiten von
Transaktionen
IncidentRestController
IncidentBusinessService
IncidentDAO
Incident
ID USER_ID DATUM TEXT
1 23423 11.03.2014 Maus defekt
2 67454 12.03.2014 EMail Empfang
3 93729 12.03.2014 Monitor defekt
… … … …
Klassische Architektur
IncidentRestController
IncidentBusinessService
IncidentDAO
Incident
ID USER_ID DATUM TEXT
1 23423 11.03.2014 Maus ist kaputt
2 67454 12.03.2014 EMail Empfang
3 93729 12.03.2014 Monitor defekt
… … … …
Update
Der Datensatz wird direkt geändert. 

Keine Historie
1 Audit Log nur mit extra
Aufwand
2 Kein Replay
3 Snapshots nur über
Backups
?Probleme
Zahlreiche Anwendungen
fahren mit der klassischen
Herangehensweise gut
Es gibt dennoch Bereiche, in
denen dieses
Architekturmodell an seine
Grenzen stößt
?Reactive
? Responsive
? Resilient
? Elastic
? Message driven
IncidentRestController
IncidentBusinessService
IncidentDAO
Incident
Nicht so ganz reactive…
Datenbank
Event Sourcing ist ein
Architekturstil bei dem
der Zustand der Daten
einer Anwendung aus
einer Sequenz von
Domain Events bestimmt
wird
Aufbau / Bestandteile
Anwendung
Event
Queue
Anwendung stellt
Events asynchron
in Queue
Event
Handler
Handler verarbeitet
Events und reagiert
darauf
Event
Store
Store speichert
sämtliche Events
Ein Event ist etwas, das in
der Vergangenheit
passiert ist
t
jetzt
EventEventEventEventEvent
Die Benennung von Events
ist Teil der 

Ubiquitous Language
D D D
ShipmentDeliveredEvent

CustomerVerifiedEvent
CartCheckedOutEvent
CreateCustomerEvent
WillSaveItemEvent
DoStuffEvent
Code Beispiel
public class CustomerVerifiedEvent {
private CustomerNumber customerNumber;
private String comment;
public CustomerVerifiedEvent(CustomerNumber custNum, String comment) {
this.customerNumber = cusNum;
this.comment = comment;
}
}
Scoping von Events auf 

Basis von

Aggregaten
D D D
Ein Event ist immer
immutable
!
Den Verlauf der Events in
der Queue nennt man
Event Stream
tjetzt
EventEventEventEventEvent
IncidentCreatedEvent



incidentNumber: 1

userNumber: 23423
timestamp: 11.03.2014 12:23:23

text: „Maus defekt“
status: „offen“
Beispielhafter Event
Stream
IncidentUpdatedEvent



incidentNumber: 1

text: „Maus ist Kaputt“
IncidentUpdatedEvent



incidentNumber: 1

solution: „Neue Maus“
status: „geschlossen“
1 Kompletter Rebuild
möglich
2 Zeitbasierte Abfragen
3 Event Replay
Gängiges Beispiel
=

Versionskontroll-Systeme
Das Event Log
hat einen sehr
hohen Business
Value
Es gibt kein Delete
!
Ein Delete
ist einfach
ein weiterer
Event
IncidentCreatedEvent



incidentNumber: 1

userNumber: 23423
timestamp: 11.03.2014 12:23:23

text: „Maus defekt“
status: „offen“
IncidentUpdatedEvent



incidentNumber: 1

text: „Maus ist Kaputt“
IncidentUpdatedEvent



incidentNumber: 1

solution: „Neue Maus“
status: „geschlossen“
IncidentRemovedEvent



incidentNumber: 1

Laufe ich bei Abfragen
nicht in ein Performance
Problem, wenn ich den Zustand
aus dem Event Store
errechnen muss
Ja, vor allem
bei vielen
Events
Application
State
Vorhalten von
Application State
Anwendung
Event
Queue
Event
Handler
Event
Store
Application
State
Die Anwendung stellt
Abfragen gegen den
Application State
CQRS
Command
Query
Responsibility
Separation
IncidentSOAPEndpoint
IncidentBusinessService
IncidentDAO
Incident
Business
Model
Client
Incident

DTO
Incident

View

Model
RDBMS
Incident

ER-Model
Netzwerk
Netzwerk
EventHandler EventsEvents
Event Sourcing & CQRS
IncidentCommandEndpoint
IncidentCommandService
IncidentCommandDAO
IncidentQueryEndpoint
IncidentQueryService
IncidentQueryDAO
Lese Datenhaltung
Events
Select * from
ToolsEvent

Sourcing
Hazelcast, RabbitMQ, MQSeries, RDBMS,
MongoDB, Redis, Apache Kafka, und viele
mehr
Treiben Sie das Thema Event Sourcing nicht
aus Tooling Sicht sondern adaptieren Sie, das
was für Ihre Organisation Sinn macht
Danke!
Michael Plöd
@bitboss
http://slideshare.net/mploed
michael.ploed@gmail.com

Weitere ähnliche Inhalte

Andere mochten auch

Akka in Practice: Designing Actor-based Applications
Akka in Practice: Designing Actor-based ApplicationsAkka in Practice: Designing Actor-based Applications
Akka in Practice: Designing Actor-based ApplicationsNLJUG
 
CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDDennis Doomen
 
Akka persistence == event sourcing in 30 minutes
Akka persistence == event sourcing in 30 minutesAkka persistence == event sourcing in 30 minutes
Akka persistence == event sourcing in 30 minutesKonrad Malawski
 
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.QAware GmbH
 
Bessere Präsentationen
Bessere PräsentationenBessere Präsentationen
Bessere PräsentationenMichael Plöd
 
Sitzungen lebendig gestalten 150414
Sitzungen lebendig gestalten 150414Sitzungen lebendig gestalten 150414
Sitzungen lebendig gestalten 150414Jürg Bänziger
 
Sportequipment
SportequipmentSportequipment
Sportequipmenttuya0625
 
Seguridad industrial
Seguridad industrialSeguridad industrial
Seguridad industrialLuis Velasco
 
LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...
LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...
LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...Juan Matallana Camacho
 
Enfermedad inflamatoria intestinalintroduccion
Enfermedad inflamatoria intestinalintroduccionEnfermedad inflamatoria intestinalintroduccion
Enfermedad inflamatoria intestinalintroduccionhospital regional ambato
 
Retour en arrière
Retour en arrièreRetour en arrière
Retour en arrièreStaPel0292
 
Enrico Macias and Jocya - Pour ton mariage
Enrico Macias and Jocya - Pour ton mariageEnrico Macias and Jocya - Pour ton mariage
Enrico Macias and Jocya - Pour ton mariagezorpar
 
Competencias matemática power_point
Competencias matemática power_pointCompetencias matemática power_point
Competencias matemática power_pointpcmacory
 
Fiches de la flore et faune (L'HIVER)
Fiches de la flore et faune (L'HIVER)Fiches de la flore et faune (L'HIVER)
Fiches de la flore et faune (L'HIVER)IES JOSÉ LUIS TEJADA
 

Andere mochten auch (20)

Akka in Practice: Designing Actor-based Applications
Akka in Practice: Designing Actor-based ApplicationsAkka in Practice: Designing Actor-based Applications
Akka in Practice: Designing Actor-based Applications
 
CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDD
 
Akka persistence == event sourcing in 30 minutes
Akka persistence == event sourcing in 30 minutesAkka persistence == event sourcing in 30 minutes
Akka persistence == event sourcing in 30 minutes
 
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
 
Event-sourced architectures with Akka
Event-sourced architectures with AkkaEvent-sourced architectures with Akka
Event-sourced architectures with Akka
 
Bessere Präsentationen
Bessere PräsentationenBessere Präsentationen
Bessere Präsentationen
 
Instrucciones
InstruccionesInstrucciones
Instrucciones
 
Sitzungen lebendig gestalten 150414
Sitzungen lebendig gestalten 150414Sitzungen lebendig gestalten 150414
Sitzungen lebendig gestalten 150414
 
Sportequipment
SportequipmentSportequipment
Sportequipment
 
Seguridad industrial
Seguridad industrialSeguridad industrial
Seguridad industrial
 
Genesis
GenesisGenesis
Genesis
 
Educar -rubem_alves
Educar  -rubem_alvesEducar  -rubem_alves
Educar -rubem_alves
 
LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...
LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...
LE SUCCÈS D’UBUNTU : UN CAS D’AVANTAGE CONCURRENTIEL DYNAMIQUE DANS L’OPEN SO...
 
Enfermedad inflamatoria intestinalintroduccion
Enfermedad inflamatoria intestinalintroduccionEnfermedad inflamatoria intestinalintroduccion
Enfermedad inflamatoria intestinalintroduccion
 
Nottingham
NottinghamNottingham
Nottingham
 
Retour en arrière
Retour en arrièreRetour en arrière
Retour en arrière
 
Enrico Macias and Jocya - Pour ton mariage
Enrico Macias and Jocya - Pour ton mariageEnrico Macias and Jocya - Pour ton mariage
Enrico Macias and Jocya - Pour ton mariage
 
Examen disoluciones químicas fawp
Examen  disoluciones químicas fawp Examen  disoluciones químicas fawp
Examen disoluciones químicas fawp
 
Competencias matemática power_point
Competencias matemática power_pointCompetencias matemática power_point
Competencias matemática power_point
 
Fiches de la flore et faune (L'HIVER)
Fiches de la flore et faune (L'HIVER)Fiches de la flore et faune (L'HIVER)
Fiches de la flore et faune (L'HIVER)
 

Ähnlich wie Event Sourcing für reaktive Anwendungen

batbern43 Command & Events Divide and conquer in Microservice Architekturen
batbern43 Command & Events Divide and conquer in Microservice Architekturenbatbern43 Command & Events Divide and conquer in Microservice Architekturen
batbern43 Command & Events Divide and conquer in Microservice ArchitekturenBATbern
 
Event Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
Event Driven Architecture - OPITZ CONSULTING - Schmutz - WinterbergEvent Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
Event Driven Architecture - OPITZ CONSULTING - Schmutz - WinterbergOPITZ CONSULTING Deutschland
 
Datenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen UmgebungenDatenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen UmgebungenKroll Ontrack GmbH
 
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus ThielOSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus ThielNETWAYS
 
EventDB - Hamburg 2013
EventDB - Hamburg 2013EventDB - Hamburg 2013
EventDB - Hamburg 2013NETWAYS
 
Hands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und StolperfallenHands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und Stolperfalleninovex GmbH
 
Bernd Schellnast (Sphinx IT Consulting GmbH)
Bernd Schellnast (Sphinx IT Consulting GmbH)Bernd Schellnast (Sphinx IT Consulting GmbH)
Bernd Schellnast (Sphinx IT Consulting GmbH)Praxistage
 
Complex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSFComplex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSFadesso AG
 
SOA Suite 11g Deep Dive
SOA Suite 11g Deep DiveSOA Suite 11g Deep Dive
SOA Suite 11g Deep Diveesentri AG
 
Internet of Things Architecture
Internet of Things ArchitectureInternet of Things Architecture
Internet of Things ArchitectureChristian Waha
 

Ähnlich wie Event Sourcing für reaktive Anwendungen (10)

batbern43 Command & Events Divide and conquer in Microservice Architekturen
batbern43 Command & Events Divide and conquer in Microservice Architekturenbatbern43 Command & Events Divide and conquer in Microservice Architekturen
batbern43 Command & Events Divide and conquer in Microservice Architekturen
 
Event Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
Event Driven Architecture - OPITZ CONSULTING - Schmutz - WinterbergEvent Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
Event Driven Architecture - OPITZ CONSULTING - Schmutz - Winterberg
 
Datenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen UmgebungenDatenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen Umgebungen
 
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus ThielOSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
 
EventDB - Hamburg 2013
EventDB - Hamburg 2013EventDB - Hamburg 2013
EventDB - Hamburg 2013
 
Hands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und StolperfallenHands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und Stolperfallen
 
Bernd Schellnast (Sphinx IT Consulting GmbH)
Bernd Schellnast (Sphinx IT Consulting GmbH)Bernd Schellnast (Sphinx IT Consulting GmbH)
Bernd Schellnast (Sphinx IT Consulting GmbH)
 
Complex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSFComplex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSF
 
SOA Suite 11g Deep Dive
SOA Suite 11g Deep DiveSOA Suite 11g Deep Dive
SOA Suite 11g Deep Dive
 
Internet of Things Architecture
Internet of Things ArchitectureInternet of Things Architecture
Internet of Things Architecture
 

Mehr von Michael Plöd

Building Microservices with Event Sourcing and CQRS
Building Microservices with Event Sourcing and CQRSBuilding Microservices with Event Sourcing and CQRS
Building Microservices with Event Sourcing and CQRSMichael Plöd
 
Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Michael Plöd
 
Event Sourcing: Introduction & Challenges
Event Sourcing: Introduction & ChallengesEvent Sourcing: Introduction & Challenges
Event Sourcing: Introduction & ChallengesMichael Plöd
 
Caching in Hibernate
Caching in HibernateCaching in Hibernate
Caching in HibernateMichael Plöd
 
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESSpring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESMichael Plöd
 
Caching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best PracticesCaching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best PracticesMichael Plöd
 
Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Michael Plöd
 
Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Michael Plöd
 

Mehr von Michael Plöd (9)

Building Microservices with Event Sourcing and CQRS
Building Microservices with Event Sourcing and CQRSBuilding Microservices with Event Sourcing and CQRS
Building Microservices with Event Sourcing and CQRS
 
Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3
 
Event Sourcing: Introduction & Challenges
Event Sourcing: Introduction & ChallengesEvent Sourcing: Introduction & Challenges
Event Sourcing: Introduction & Challenges
 
Caching in Hibernate
Caching in HibernateCaching in Hibernate
Caching in Hibernate
 
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESSpring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
 
Caching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best PracticesCaching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best Practices
 
Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework?
 
Hibernate Tuning
Hibernate TuningHibernate Tuning
Hibernate Tuning
 
Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6
 

Event Sourcing für reaktive Anwendungen