Event Modeling
Marian Schubert
Why?
Why?
Fixed Price ✅
Integration Tests
No Mocking
No Ceremonies
No Backlog
No Ticketing Systems
🏃♂️Work Parallelization
Shared Understanding
Information Completeness
Guaranteed
Code matches model
DDD
(no books required)
No Magic
(Words)
Specification By Example
Simple
How?
What?
Event Model example - Hotel
UI / API / Job
Events
Room Added, Room Booked, Checked In, …
Read Models (Views)
Cleaning Schedule, Sales Report, … per use-case
Commands
Add Room, Book Room,
Check In, …
Automation
Treat it like humans would do it. Also, metrics, SLAs, …
Automation
Treat it like humans would do it. Also, metrics, SLAs, …
Event Model example - Hotel
Why?!
Shared understanding
It’s pretty simple to explain
Work in slices
Possibly in parallel, open-closed principle,
rewrite whole slice, …
Slice #1
Slice #2
Implementation
matches model
You can find Add Room, Room Added, Room Availability in production code.
Information
completeness
Testing
Specification by example, Unit-tests, …
Resources - The End
Patterns
Patterns
Given -> When -> Then
Patterns
Given -> Then
AuthorizeTransaction(
trnId = trn.trnId,
response = runCatching { someClient.authorize(authorizationRequest) },
processingRoute = authorizationRequest.processingRoute,
isFailuresThresholdExceeded = isFailuresThresholdExceeded
).execute()