8. Service A
Challenge: Synchronous collaboration
Call
service B
Service B
The network is unreliable
Hystrix adds circuit
breaker & fail fast
Retry capability & async
behavior is missing
9. Service A
Challenge: Asynchronous collaboration
Send
message
to B
Service B
Wait for
response
Timeout handling
Message correlation &
deduplication
State handling
Parallelism & merging
10. Challenge: Distributed transactions
1. book
hotel
2. book
car
3. book
flight
6.
cancel
hotel
5.
cancel
car
4. In case of
failure trigger
compensations
book
trip
Service A
Car ServiceHotel Service Flight Service
ACID-Transactions
only local in the
service contexts
Distributed
transaction via Saga
pattern using
compensating
activities
40. The 7 sins of workflow
Zero-code suites
Homegrown
engine
Granularity
bloopers
Over engineering
No engine Wrong engine Wrong usage
6
Stakeholders
habitat violation
41. The 7 sins of workflow
Zero-code suites
Homegrown
engine
Granularity
bloopers
BPM monolith
Over engineering
No engine Wrong engine Wrong usage
Stakeholders
habitat violation
50. New kid on the block
https://zeebe.io/
Zeebe
Broker
Your
application
Binary (MsgPack)
Support streaming & batching
Client
Horiziontally
scalable
Append only log / event sourcing
51. Summary: How to avoid the 7 sins?
• Use a lightweight workflow engine or
state machine
• Use it properly – as a state machine
(state, timeouts, retrying, message
correlation & deduplication,
compensation)
• Do not model everything
• Leverage BizDevOps & embrace visibility
• Slice your processes fitting your contexts
(monolith vs. microservices)
• Avoid over-engineering (enterprise-wide
xyz, abstractions, …)