Session
Was ist Event-Sourcing und wie verhält es sich zu CQRS und Event-Driven Architecture (EDA)?
Mit der steigenden Popularität von Event-Sourcing, CQRS und EDA entsteht einiges an Verwirrung zwischen diesen orthogonalen Konzepten, die sehr nützlich sind aber klar abgegrenzt werden sollten.
1) Zunächst werfen wir einen Blick auf jedes dieser Konzept im Einzelnen und wie sie zusammen benutzt werden können.
2) Danach werden wir im hands-on Teil einige verschiedene Patterns zur Implementierung von event-sourced Aggregates kennenlernen. Die Teilnehmer werden verschiedene Versionen des gleichen Aggregats im Stile von "Code Koans" implementieren. Für jede Variante sind die Test-Fälle schon vorgegeben, ebenso wie ein Skelett der Implementierung, das mit dem fehlenden Code gefüllt werden muss, damit die Tests grün werden.
Was die Teilnehmer dabei (kennen)lernen:
* Verschiedene Stile, um ein Aggregate zu implementieren
* Wie man das Konzept eines Aggregates ohne ein großes "Objekt" implementieren kann
* Die Basics des Event-Sourcing
* Eine light Version von Ensemble (Mob) Programming oder Pair-Programming
* Die Idee der "Code Koans"
Wir stellen Git Repositories zur Verfügung, die Java-, Kotlin-, C# und PHP Code enthalten:
https://github.com/MaibornWolff/aggregate-implementation-patterns-java
https://github.com/MaibornWolff/aggregate-implementation-patterns-kotlin
https://github.com/klimisa/aggregate-implementation-patterns-csharp
https://github.com/jursimplicate/aggregate-implementation-patterns-php
Die Teilnehmer brauchen einen Laptop mit einer IDE, mit der sie in einer dieser Sprachen entwickeln können.
Idealerweise sollten sie den Code schon vor dem Workshop auschecken und die Abhängigkeiten installieren, so dass die Unit Test bereits laufen.
3) Schließlich werden wir uns den Q Teil von CQRS anschauen und mindestens eine "Projection" für ein(en) query/read-model/view implementieren. Die Teilnehmer können ihre Ideen einbringen und sich read-models ausdenken, die sie interessant finden.
4) Zeit für weitere Fragen und Antworten
Es handelt sich um einen Ganztags-Workshop, der teilweise flexibel gehalten werden kann:
Bei einer Länge von 6-7 Stunden:
* Alle Teilnehmer sollten in der Lage sein, 4 Varianten zu implementieren, von "typischen" OOP zu "functional"
* Wir sollten mindestens 20-30 Minuten für Fragen&Antworten haben
Bei einer Länge von 4-5 Stunden werden wir alle 4 Teile so weit wie nötig kürzen, aber weiterhin das komplette Bild vermitteln.
Falls der Workshop remote stattfindet:
* Teilen wir die Teilnehmer in Teams auf (idealerweise nicht mehr als 4), um sie mit 2 Trainern ausreichend unterstützen zu können
* Jedes Team wird als Ensemble (Mob) arbeiten und die "Driver" Rolle bei jeder Variante tauschen
Wenn der Workshop live stattfindet und eine gute Aufteilung der Teilnehmer erlaubt:
* Wir überlassen den Teilnehmern, ob sie als Team, Pair oder solo arbeiten wollen
Wenn der Workshop live stattfindet, aber der Raum recht klein ist:
* Wir überlassen den Teilnehmern, ob sie als Pair oder solo arbeiten wollen
Remote bevorzugen wir bis zu 20 Teilnehmer, maximal 24.
Live können wir mit bis zu 30 Teilnehmern arbeiten, 26 wäre ideal.
Remote benötigen wir ein Tool wie Zoom (mit Breakout Session).
Live brauchen wir eine großen Bildschirm oder einen Beamer.
Teil 2) dieses Workshops ist "rock solid", wir haben ihn erfolgreich und mit gutem Feedback bereits in unterschiedlichen Varianten gehalten:
* KandDDDinsky Okt/Nov 2022 (kandddinsky.de) - live (ein Raum, ca. 18 Teilnehmer)
* DDD Europe 06/2022 (dddeurope.com) - live (ein Raum, ca. 26 Teilnehmer)
* DDD Summit 11/2021 (ddd-summit.de) - remote (in 4 Teams aufgeteilt, ca.20+ Teilnehmer)
* DDD Europe 02/2021 (dddeurope.com) - remote (in 4 Teams aufgeteilt, ca.20 Teilnehmer)
* OOP Digital 02/2021 (www.oop-konferenz.de) - remote (in 4 Teams aufgeteilt, ca.20 Teilnehmer)
* DDD Summit 11/2020 (ddd-summit.de) - remote (in 4 Teams aufgeteilt, ca.20+ Teilnehmer)
* DDD Summit 06/2020 (ddd-summit.de) - remote (in 4 Teams aufgeteilt, ca.20+ Teilnehmer)
* Mehrmals innerhalb unserer Firma, mit kleineren Gruppen, remote
Der komplette Workshop mit den zusätzlichen Teilen 1) und 3) wurde bisher einmal für einen externen Kunden mit 6 Teilnehmern gehalten.
Anton Stöckl
Principal Learning Designer for Software Developers @ MaibornWolff
Munich, Germany
Links
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top