Talk held at O'Reilly Software Architecture Conference London together with @martinschimak on 16th of October 2017. It is about how to tackle complex event flows in distributed systems (which could be e.g. event-driven microservices).
Code from live hacking example is here: https://github.com/flowing/flowing-retail
Unleash Your Potential - Namagunga Girls Coding Club
O'Reilly SA: Complex event flows in distributed systems
1. Complex event flows in
distributed systems
O‘Reilly Software Architecture Conference
16th of October 2017
mail@bernd-ruecker.com
martin.schimak@plexiti.com
With thoughts from http://flowing.io
@berndruecker | @martinschimak
2. Bernd Rücker
Consultant & Dev. Advocate
10+ years workflow
Co-founder Camunda
http://bernd-ruecker.com/
Martin Schimak
Consultant & Trainer
15+ years domain (de-)coding
DDDesign, TDD/BDD, EDA
http://plexiti.com/
http://flowing.io/
5. Event-Driven
Checkout Payment Inventory Shipping
Bus
Order
Placed
Does not
know
recipient
Does not
know
sender
Decentral data
management
Smart endpoints
and dumb pipes
Event: Fact that
happened in the past,
Immutable fact,
0..n recepients
Order
Placed
Customer
status
changed
Does know
event type…
6. End-to-end capabilities using event flows?
InventoryPayment ShippingCheckout
Order
placed
Payment
received
Goods
fetched
Goods
shipped
7. Shipping
Goods
shipped
End-to-end capabilities using event flows?
InventoryPaymentCheckout
Order
placed
Payment
received
Goods
fetched
Please fetch
the goods
before waiting
for payment
Some
customers can
pay via invoice
…
8. Some requirements don‘t fit anywhere… What are we missing?
Checkout Payment Inventory Shipping
10. Commanding is important!
InventoryPayment ShippingCheckout
Bus
Order
Placed
Event: Fact,
happened in the past,
immutable,
0..n recepients
Retrieve
Payment
Command: Intent,
1 recipient.
Fetch
Goods
Ship
Goods
Order
Order
Placed
Retrieve
Payment
Does not
know
sender
Just knows
command
type…
Dangerous?