Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow...
Transcript of Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow...
![Page 1: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/1.jpg)
Opportunities & Pitfalls of Event-Driven Utopia
@berndruecker
![Page 2: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/2.jpg)
Why this talk
![Page 3: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/3.jpg)
Why this talk
![Page 4: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/4.jpg)
Service 1
Agenda
Service 2
Events on the inside
Events on the outside
1
3
![Page 5: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/5.jpg)
Service 1
Agenda
Service 2
Events on the inside
Events on the outside
1
3
Events inside out2
![Page 6: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/6.jpg)
Service 1
Agenda
Service 2
Events on the inside1
Events on the outside3
Events inside out2
![Page 7: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/7.jpg)
Once upon a time…
RDMS
Application
Client
BBC architecture(box - arrow – box – arrow - cylinder)
Every architecture diagramyou'll ever need
![Page 8: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/8.jpg)
The great thing about this architecture
RDMS
Application
DB gurantees (e.g. ACID)
![Page 9: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/9.jpg)
The problem
not webscaleresiliency is expensive
RDMS
Application
RDMS
cloud-scale
![Page 11: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/11.jpg)
Append-onlyLog
…
bankaccount created
+2,500 $transfered
-14.99$paid by
credit card
…
Persistent change
RDMS
Account # Balance
12345 2,500$
Persistent state
Current Balance = 2,485.01 $
![Page 12: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/12.jpg)
Append-onlyLog
…
bankaccount created
+2,500 $transfered
-14.99$paid by
credit card
…
Persistent change Event
Bank Account Created2019/04/16 11:00
# 12345
Event
Money Transfer Received2,500$
2019/04/16 11:00# 12345
![Page 13: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/13.jpg)
An example from my world
![Page 15: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/15.jpg)
We build two different workflow engines. Why?
Camunda BPM ZeebePersistent State
Persistent change
![Page 16: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/16.jpg)
WorkflowInstanceId
CurrentActivity
State
2 RetrievePayment running
WorkflowInstanceId
CurrentActivity
State
2 ShipGoods running
WorkflowInstanceId
CurrentActivity
State
2 OrderDelivered ended
2.
3. UPDATE
2. UPDATE
1. INSERT
3.1.
RDMS
Workflow Engine
![Page 17: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/17.jpg)
Append-onlyLog1.
createworkflowinstance
workflowinstancecreated
startevent
occured
sequenceflow taken
activityactivated
taskcreated
lockcreated
tasklocked
completetask
taskcompleted
activitycompleted
sequenceflow taken
…
…
2.
2.1.
Workflow Engine
![Page 18: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/18.jpg)
Event Handling, Replication & Single Writer
FollowerFollower
complete taskcommand
task completedevent
1 send
2 append command
Broker (Leader)
StreamProcessor
4 process
7store & replicateevent6 append event
3store & replicatecommand
5 respond
Single Writer(single thread)
![Page 19: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/19.jpg)
What we do different
FollowerFollower
complete taskcommand
task completedevent
1 send
2 append command
Leader
StreamProcessor
4 process
7store & replicateevent6 append event
3store & replicatecommand
5 respond
Single Writer(single thread)
Store and replaycommands
Delete records thatare fully processed
Persist & replicateinternal state
![Page 20: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/20.jpg)
ConsistencyAvailabilityPartition
![Page 21: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/21.jpg)
Zeebe is CP
FollowerFollower
complete taskcommand
task completedevent
1 send
2 append command
Leader
StreamProcessor
4 process
7store & replicateevent6 append event
3store & replicatecommand
5 respond
Single Writer(single thread)
![Page 22: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/22.jpg)
Horizontal scalability by partitioning
Partition 1
Partition 2
Partition 3
Partition 4
Every workflow instance isexactly handled by onepartition
instance id: 2-42
instance id: 3-66
StreamProcessor Single Writer
(single thread)
![Page 23: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/23.jpg)
Queries and read models
ZeebeBroker
ZeebeBroker
StreamingExporter
ask
ask
![Page 24: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/24.jpg)
Recap 1 – Events on the inside
# Natural mechanism to build scalable services in distributed systems (with Outbox & co included)
But# You have to think about reads, queries & eventual consistency# Few industry experience available
@berndruecker
![Page 25: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/25.jpg)
Service 1
Agenda
Service 2
Events on the inside
Events on the outside
1
3
Events inside out2
![Page 26: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/26.jpg)
Event Store and Messaging
Customer
…
1. Create Customer
Customer Event Store
![Page 27: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/27.jpg)
Merge Messaging and Event Store
Customer
…
1. Create Customer
Customer Event Store
![Page 28: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/28.jpg)
Merge messaging and event store
Customer
…
1. Create Customer
Shared Event Store
![Page 29: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/29.jpg)
Enter the world of Kafka…
![Page 30: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/30.jpg)
Merge messaging and event store
Customer
…
1. Create Customer
Shared Event Store
![Page 31: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/31.jpg)
Kafka as transport
Customer
…
1. Create Customer
Used as queue (but persistent!)
![Page 32: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/32.jpg)
Kafka as transport
Customer
…
1. Create Customer
Used as queue (but persistent!)
![Page 33: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/33.jpg)
Service 1
Agenda
Service 2
Events on the inside
Events on the outside
1
3
Events inside out2
![Page 34: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/34.jpg)
Once upon a time
Billing
Customer
Change Address
![Page 35: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/35.jpg)
Event Notification
Addresschanged
Billing
Customer
![Page 36: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/36.jpg)
Event Notification
Addresschanged
Billing
Customer
Billing
Customer
Reverse directionof dependency
What‘sgeneral
WhichWho direction
of dependency
ChangeAddress
![Page 37: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/37.jpg)
Event Notification
Addresschanged
Billing
Customer AdressChanged{
customerId: 42 }
Ask for details
![Page 38: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/38.jpg)
Event-carried State Transfer
Addresschanged
Billing
Customer
AddressChanged{ customerId: 42,address: ...
}
CustomerChanged{ customerId: 42,status: A,address:...,
}
AddressChanged{ customerId: 42,oldAddress: ...newAddress: ...
}
CustomerMoved{ ...,}
![Page 39: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/39.jpg)
This decision is complex
Addresschanged
Billing
Customer
Billing
Customer
Reverse directionof dependency
What‘sgeneral
WhichWho direction
of dependency
ChangeAddress
![Page 40: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/40.jpg)
Example
Change Address
Address
SubmitFrom [email protected]
Date 2019-04-23 09.05
To confirm your address change please click on this link:
http://company.com/confirm?id=82e97d49-166c-4862-9973-4db348e6225d
Incoming Email
![Page 41: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/41.jpg)
Example
Customer
Notification
Address changeconfirmed
Change AdressAddress change
requested
http://company.com/confirm?id=82e97d49-166c-4862-9973-4db348e6225d
direction of dependency
![Page 42: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/42.jpg)
Example
Customer
Notification
‚Confirmation‘ approved
Change Adresshttp://company.com/confirm?id=82e97d49-166c-4862-9973-4db348e6225d
Send mail ‚Confirmation‘
Addresschanged
direction of dependency
![Page 43: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/43.jpg)
Challenge:Command vs. Event
Event
Command
vs
![Page 44: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/44.jpg)
It is NOT about communication protocols
Addresschanged
Billing
Customer
Billing
Customer
ChangeAddress
It can be messaging, REST, whatever, ….
![Page 45: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/45.jpg)
Manifold ways of transport
…
![Page 46: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/46.jpg)
Manifold ways of transport
…
![Page 47: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/47.jpg)
?
Event Command Query
Message Record Event
Fact, happened in the past, immutable
Intend, Want s.th. to happen,The intention itself is a fact
![Page 48: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/48.jpg)
?
Event Command Query
Message Record Event
![Page 49: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/49.jpg)
Commands in disguise
The Customer Needs To Be Sent A Message To Confirm
Address ChangeEvent
Send Message
Wording ofSender
Wording ofrecipient
![Page 50: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/50.jpg)
Examples
PaymentOrder
Subscription
RetrievePayment
More general,does not need to know
who is retrieving paymentsCustomer
Order
AddressChanged
Billing
More general,does not need to care about
who is interessted in address changes
Notification
SendMail
Global service
OrderNotification
OrderPlaced
PaymentReceived
Goods Shipped
Service that canhandle notifications
for ordersautonomously
![Page 51: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/51.jpg)
Distributed MonolithsAuthorization
Service
Document Context PageContext
Document attached
Pagecreated
Document moved
Page moved
…
![Page 52: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/52.jpg)
Define stable contract/API insteadAuthorization
Service
Document Context PageContext
Add auth
…
![Page 53: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/53.jpg)
Next challenge:Event chains
![Page 54: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/54.jpg)
Event Chains
AdressCheck
Credit Check
Registration
@berndruecker
Customer
Event BusRegistration
requestedCredit
checkedAddresschecked
Customer registered
![Page 55: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/55.jpg)
Event Chains
AdressCheck
Credit Check
Registration
@berndruecker
Customer
Event BusRegistration
requestedCredit
checkedAddresschecked
Customer registered
How does customerregistration work?
![Page 56: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/56.jpg)
The danger is that it's very easy to make nicely decoupled systems with event notification, without realizing that you're losing sight of that larger-scale flow, and thus set yourself up for trouble in future years.
https://martinfowler.com/articles/201701-event-driven.html
@berndruecker
![Page 57: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/57.jpg)
The danger is that it's very easy to make nicely decoupled systems with event notification, without realizing that you're losing sight of that larger-scale flow, and thus set yourself up for trouble in future years.
https://martinfowler.com/articles/201701-event-driven.html
@berndruecker
![Page 58: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/58.jpg)
The danger is that it's very easy to make nicely decoupled systems with event notification, without realizing that you're losing sight of that larger-scale flow, and thus set yourself up for trouble in future years.
https://martinfowler.com/articles/201701-event-driven.html
@berndruecker
![Page 59: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/59.jpg)
Monitoring Workflows Across Microservices
https://www.infoq.com/articles/monitor-workflow-collaborating-microservices
@berndruecker
![Page 60: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/60.jpg)
Typical approachesDistributed Tracing
Data Lake / Event Monitoring
Process Mining
@berndruecker
![Page 61: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/61.jpg)
What we currently build with customers…
CamundaOptimize
ElasticRegistration
requestedCredit
checkedAddresschecked
Customer registered
@berndruecker
![Page 62: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/62.jpg)
All great – until you have to move…
![Page 63: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/63.jpg)
Keep it stable, just move thatone stick down there to the
top.
How hardcan it be?
![Page 64: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/64.jpg)
Changes required for an additional check
AdressCheck
Credit Check
Registration
CriminalCheck
@berndruecker
Customer
Event BusRegistration
requestedCredit
checkedCustomer registered
Addresschecked
![Page 65: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/65.jpg)
Changes required for an additional check
AdressCheck
Credit Check
Registration
CriminalCheck
@berndruecker
Customer
Event BusRegistration
requestedCredit
checkedCustomer registered
Addresschecked
Criminalchecked
![Page 66: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/66.jpg)
Alternative flow
AdressCheck
Credit Check
Registration
CriminalCheck
@berndruecker
Customer
Kafka Customer registered
Registration requested
Addresschecked
Creditchecked
Criminalchecked
![Page 67: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/67.jpg)
Alternative flow
AdressCheck
Credit Check
Registration
CriminalCheck
@berndruecker
Customer
Kafka Customer registered
Registration requested
Addresschecked
Creditchecked
Criminalchecked
„Credit checks got moreexpensive, do that only if all
other checks succeed“
![Page 68: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/68.jpg)
What we wanted
Photo by Lijian Zhang, under Creative Commons SA 2.0 License and Wikimedia Commons / CC BY-SA 4.0
@berndruecker
![Page 69: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/69.jpg)
Orchestration
Address CheckCredit Check
Registration
Customer
KafkaRegistration
requestedCredit
checkedAddresschecked
Customer registeredCheck
credit
Check address
@berndruecker
![Page 70: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/70.jpg)
Changes…
Address CheckCredit Check
Registration
Customer
KafkaRegistration
requestedCredit
checkedAddresschecked
Customer registeredCheck
credit
Check address
@berndruecker
Criminal Check
Crimes checked
Check crimes
![Page 71: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/71.jpg)
Couplingmyths
@berndruecker
![Page 72: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/72.jpg)
Comparison
2 changescriminal check can be deployed first
2 changes, criminal check can be deployed first
See also https://www.infoworld.com/article/3391592/how-to-tame-event-driven-microservices.html
@berndruecker
![Page 73: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/73.jpg)
Your IT architecture
Choreography
Orchestration
@berndruecker
Your servicesor applications
![Page 74: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/74.jpg)
Monolith Chaos
Choreography
Orchestration
@berndruecker
Process Monitoring
Your servicesor applications
![Page 75: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/75.jpg)
Your IT architecture
Process Monitoring
Monolith Chaos
Choreography
Orchestration
Your servicesor applications
Balance choreography and orchestration@berndruecker
![Page 76: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/76.jpg)
In my world…
CustomerOn-boarding
Leverage Workflow Engine & BPMN within Service
![Page 77: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/77.jpg)
Customer
Local Orchestration
CentralOrchestration
Service
![Page 78: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/78.jpg)
Recap 2# Commands vs. Events: Decide about the direction ofdependencies# Beware of event-chains and avoid losing sight# Balance choreography and orchestration
@berndruecker
![Page 79: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/79.jpg)
Service 2Service 1
Recap
Events on the inside
Events on the outside
1
3
Persistent state vs persistent changeEvent sourcing & Event StoreConsistency & CAPRead Models & CQRS
Events as APIEvent vs CommandEvent chains & visibilityOrchestration vs Choreography
Shared Event Store
Events inside out2
![Page 80: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/80.jpg)
Want to see code?
![Page 81: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/81.jpg)
Meet practicioners around orchestration & workflow April 23-24
Capital One,Cox Automotove, Nokia Bell Labs, Goldmann Sachs, …https://www.camundacon.com/
![Page 82: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/82.jpg)
Nothing for the faint of heart…Events on the inside
Events on the outside
![Page 83: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/83.jpg)
Nothing for the faint of heart…
…but doable…
…and worth it
![Page 84: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/84.jpg)
Thank you!
@berndruecker
![Page 85: Opportunities & Pitfalls Event-Driven Utopia€¦ · Camunda. We build two different workflow engines. Why? Persistent Camunda BPM Zeebe State Persistent change. Workflow Instance](https://reader030.fdocuments.us/reader030/viewer/2022040612/5edcbd66ad6a402d66678930/html5/thumbnails/85.jpg)
[email protected]@berndruecker
https://berndruecker.io
https://medium.com/berndruecker
https://github.com/berndruecker
https://www.infoq.com/articles/events-workflow-automation
Contact:
Slides:
Blog:
Code:
https://www.infoworld.com/article/3254777/application-development/3-common-pitfalls-of-microservices-integrationand-how-to-avoid-them.html
https://thenewstack.io/5-workflow-automation-use-cases-you-might-not-have-considered/