Building event-driven systems
@JakubPilimon
jakub.pilimon@gmail.com
github.com/pilloPl

@JakubPilimon
Software developer/architect
Trainer @ Bottega IT Minds
pillopl.github.io
OOP / DDD / TDD / Architecture
Event sourcing as a persistence mechanism
CQRS
Event-driven systems
Spring Cloud Stream
Achitectural patterns and challenges
1. State = Initial State + UserCreated(name: John) applied
new User() and u.name = John
State: user {name = John}
2. State = Previous (after 1) State + UserActivated applied
u {name = John} and u.active = true
State: user {name = John, active = true}
3. State = Previous (after 2) State + UserNameChanged applied
user { name = John, active = true} and u.name = Barry
State: user {name = Barry, active = true}
...

1. insert into users_info ...
2. update user set active = true where id ...
3. update user set name = Barry where id ...
4 update user set active = false where id ...
...

message broker
User
Service
UI
When user is deactivated, payments has to be cancelled when payment is cancelled, shipments have to be cancelled and e-mail has to be sent
Communicator
User
Service
Accounting
UserDeactivated
PaymentCancelled
Shipping
ShipmentsCancelled
User
Service
?
UserDeactivated
CancelPayment
CancelShipment
SendEmail
Payments
Shipping
Communicator
Thank you!
@JakubPilimon
jakub.pilimon@gmail.com
github.com/pilloPl

Events/Webinar
By Jakub Pilo
Events/Webinar
Overview of event sourcing and CQRS benefits
- 1,570