SlideShare a Scribd company logo
Break your event chains
MuCon, November 6th 2017, London
mail@bernd-ruecker.com
martin.schimak@plexiti.com
With thoughts from http://flowing.io
@berndruecker | @martinschimak
Bernd Rücker
Consultant & Dev. Advocate
10+ years workflow
Co-founder Camunda
http://bernd-ruecker.com/
Martin Schimak
Developer & Trainer, 10+ years
(de-)coding domain knowledge
DDDesign, TDD/BDD, EDA
http://plexiti.com/
http://flowing.io/
3 common hypotheses we check today:
# Events decrease coupling
# Central control needs to be avoided
# Workflow engines are painful
MuCon London 2017: Break your event chains
Simplified example:
dash button
Photo by 0xF2, available under Creative Commons BY-ND 2.0
license. https://www.flickr.com/photos/0xf2/29873149904/
Three steps…
Who is involved?
Checkout
Payment
Inventory
Shipment
Basic idea of dedicated, autonomous (micro-) services
Checkout
Payment
Inventory
Shipment
Dedicated Application Processes
Dedicated Persistence Backends
Dedicated Development Teams
Events decrease coupling
Request/Response: temporally coupled services
Checkout
Payment
Inventory
Shipment
„The button blinks green
if we can ship the item
within 24 hours!“
Request Response
Events: temporal decoupling with read models
Checkout
Payment
Inventory
Shipment
„The button blinks green
if we can ship the item
within 24 hours!“
Events are facts about
what happened (in the past)
Good
Fetched
Good
Stored
Read
Model
Events: Extract cross-cutting aspects
Checkout
Payment
Inventory
Shipment
„Inform the customer about
steps he is interested in!“
Order
placed
Payment
received
Good
shipped
Notify me when …
Order placed
Payment received
Good fetched
Good shipped
Customer
Mailings
Good
fetched
Events can decrease coupling*
*e.g. decentral data-management, read models,
extract cross-cutting aspects
Events: peer-to-peer event choreographies
Checkout
Payment
Inventory
Shipment
Order
placed
Payment
received
Good
shipped
„When the button is pressed, an
order is placed - and fulfilled!“
Good
fetched
Events: peer-to-peer event choreographies
Fetch the
goods before
retrieving the
payment
Some
customers can
pay via invoice
…
Checkout
Payment
Inventory
Shipment
Good
fetched
Order
placed
Payment
received
Good
shipped
Extract the end-to-end responsibility
Order
Checkout
Payment
Inventory
Shipment
Order
placed
Retrieve
payment
Commands have an
intent about what needs
to happen in the future
Fetch the
goods before
retrieving the
payment
Some
customers can
pay via invoice
Payment
received
Retrieve
payment
Events can increase coupling*
*e.g. complex peer-to-peer event chains
Commands can decrease coupling*
*e.g. to avoid complex peer-to-peer event chains
Central control needs to be avoided
Checkout
Payment
Inventory
Shipment
Order
Order
placed
Payment
received
Good
fetched
Good
shipped
Smart ESB-like middleware
Checkout
Payment
Inventory
Shipment
Order
Dumb pipes
„Smart endpoints and
dumb pipes!”
Martin Fowler
The danger of god services
Checkout
Payment
Inventory
Shipment
Order
„A few smart god services tell
anemic CRUD services what to do!”
Sam Newman
„Central“ order service
as bad as
central ESB logic?
A god service is only created with bad API design
Checkout
Payment
Inventory
Shipment
Order
„Smart endpoints and
dumb pipes!”
Martin Fowler
Smart endpoints
take care of a
business capability
their client does not
need to understand.
Ask: who is responsible to deal with problems?
Order
Credit
Card
Retrieve
Payment
Expired
A single central client of dumb endpoints
becomes a god service. Better: we create
several decentral, smart endpoints.
„If the credit
card expired, the
customer gets
another chance
to provide new
card details!“
Ask: who is responsible to deal with problems?
Order
Credit
Card
„If the credit
card expired, the
customer gets
another chance
to provide new
card details!“
Expired
„Smart endpoints are
potentially long-running.”
Payment
Retrieve
Payment
Payment
received
„The client of a smart
endpoint remains lean.”
Be sceptical about central control!*
*e.g. centralized ESB-like components or
god services which heavily interact with dumb endpoints
But don‘t give up control!*
*e.g. miss to extract and control important
potentially long-running business capabilities
The problem is not to command
services!
The problem is bad API design.
Workflow engines are painful
Persist thing with
Entity, Actor, …
State machine or
workflow engine
DIY
Order
Credit
Card
Payment
Payment
received
How to
implement long-
running services?
State machines
or workflow
engines
CADENCE
Baker
Workflow engines solve some hard developer problems
Monitoring &
Operations
Handling of time &
timeouts
Retry
Visibility &
Reporting
Versioning
Compensation
Message correlation &
deduplication
Performance &
scalability
Distributed systems
Workflow engines solve some hard developer problems
Monitoring &
Operations
Handling of time &
timeouts
Retry
Visibility &
Reporting
Versioning
Compensation
Message correlation &
deduplication
Performance &
scalability
Workflow
and
BPM
MuCon London 2017: Break your event chains
MuCon London 2017: Break your event chains
Bpmn.createProcess("order").executable()
//...
.sendTask().name("Retrieve payment").camundaClass(RetrievePayme
.receiveTask().name("Payment received").message("PaymentReceive
//...
{
"name": "retrieve_payment",
"tasks": [ {
"name": "Retrieve Payment",
"taskReferenceName": "payment",
"type": "SIMPLE",
...
Do you prefer coded or graphical DSLs?
* BPMN - ISO notation for modeling and
executing long-running processes and flows
Timeouts
Compensation*
Living documentation for long-running behaviour
Focus on long-running behaviour - requiring state
A visual HTML report for a specific test case
Workflows live inside service boundaries
Explicit flows help separate domain and infrastructure
Infrastructure
Aggregates,
Domain Events,
Domain Services,
etc …
+ the flow
Workflow
Engine
Payment
Application
Domain
Lightweight workflow engines are
great (and much better than DIY)*
*e.g. enabling potentially long-running services, solving hard
developer problems, can run decentralized
Workflow engines can do (service)
orchestration.*
Orchestration is not about synchronous
request/response!
*We are not talking about container orchestration
MuCon London 2017: Break your event chains
# Events decrease coupling: sometimes
read-models, no complex peer-to-peer event chains, don‘t forget commands
# Central control needs to be avoided: sometimes
no ESB, smart endpoints/dumb pipes, important capabilities need a home
# Workflow engines are painful: some of them
lightweight engines are easy to use and can run decentralized,
they solve hard developer problems, don‘t DIY
Need some code?
InventoryPaymentOrder ShippingCheckout Monitor
https://github.com/flowing/flowing-retail/
Human
Tasks
Thank you!
Code online:
https://github.com/flowing
Slides & Blog:
https://bernd-ruecker.com
https://plexiti.com
With thoughts from http://flowing.io
@berndruecker | @martinschimak
https://www.infoq.com
/articles/microservice-
event-choreographies
Images licensed from iStock
no attribution required
All icons licensed from Noun Project
no attribution required
Images licensed under Creative Commons license
Photo by 0xF2, available under
Creative Commons BY-ND 2.0 license.
https://www.flickr.com/photos/0xf2/2987
3149904/

More Related Content

PPTX
Cism course ppt
sophiarock123
 
PDF
Implementing zero trust architecture in azure hybrid cloud
Ajit Bhingarkar
 
PDF
O'Reilly SA: Complex event flows in distributed systems
Bernd Ruecker
 
PDF
DDD Belgium Meetup 2017: Events, flows and long running services
Bernd Ruecker
 
PDF
KanDDDinsky: Let your domain events flow
Bernd Ruecker
 
PDF
Communication between (micro-)services - Bernd Rücker - Codemotion Amsterdam ...
Codemotion
 
PDF
O'Reilly SA NYC 2018: Complex event flows in distributed systems
Bernd Ruecker
 
PDF
CamundaCon NYC 2023 Keynote - Shifting into overdrive with process orchestration
Bernd Ruecker
 
Cism course ppt
sophiarock123
 
Implementing zero trust architecture in azure hybrid cloud
Ajit Bhingarkar
 
O'Reilly SA: Complex event flows in distributed systems
Bernd Ruecker
 
DDD Belgium Meetup 2017: Events, flows and long running services
Bernd Ruecker
 
KanDDDinsky: Let your domain events flow
Bernd Ruecker
 
Communication between (micro-)services - Bernd Rücker - Codemotion Amsterdam ...
Codemotion
 
O'Reilly SA NYC 2018: Complex event flows in distributed systems
Bernd Ruecker
 
CamundaCon NYC 2023 Keynote - Shifting into overdrive with process orchestration
Bernd Ruecker
 

Similar to MuCon London 2017: Break your event chains (20)

PDF
Long running processes in DDD
Bernd Ruecker
 
PDF
Complex event flows in distributed systems
Bernd Ruecker
 
PPTX
Confluent_Banking_Usecases_Examples.pptx
Jon Snow
 
PDF
Transforming Financial Services with Event Streaming Data
confluent
 
PPTX
Building Serverless EDA w_ AWS Lambda (1).pptx
Ahmed791434
 
PDF
JAX 2017 talk: Orchestration of microservices
Bernd Ruecker
 
PDF
Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...
camunda services GmbH
 
PDF
Workflow automation with BPMN. Lessons learned.
Bernd Ruecker
 
PPT
Ecommerce(3)
ecommerce
 
PPTX
Event mesh api meetup AsyncAPI Singapore
Phil Scanlon
 
PPT
Iwp Preso 9 25 09
kestephensjr
 
PDF
Building and deploying microservices with event sourcing, CQRS and Docker (QC...
Chris Richardson
 
PDF
Goto meetup Stockholm - Let your microservices flow
Bernd Ruecker
 
PDF
JUG Amsterdam - Orchestration of microservices
Bernd Ruecker
 
PDF
SVCC Developing Asynchronous, Message-Driven Microservices
Chris Richardson
 
PDF
JavaBin Oslo: Open source workflow and rule management with Camunda
Bernd Ruecker
 
PDF
3 common pitfalls in microservice integration
Bernd Ruecker
 
PDF
Serverless Design Patterns (London Dev Community)
Yan Cui
 
PDF
Master the flow of microservices - because your business is more complex than...
Bernd Ruecker
 
PPTX
Stream me to the Cloud (and back) with Confluent & MongoDB
confluent
 
Long running processes in DDD
Bernd Ruecker
 
Complex event flows in distributed systems
Bernd Ruecker
 
Confluent_Banking_Usecases_Examples.pptx
Jon Snow
 
Transforming Financial Services with Event Streaming Data
confluent
 
Building Serverless EDA w_ AWS Lambda (1).pptx
Ahmed791434
 
JAX 2017 talk: Orchestration of microservices
Bernd Ruecker
 
Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...
camunda services GmbH
 
Workflow automation with BPMN. Lessons learned.
Bernd Ruecker
 
Ecommerce(3)
ecommerce
 
Event mesh api meetup AsyncAPI Singapore
Phil Scanlon
 
Iwp Preso 9 25 09
kestephensjr
 
Building and deploying microservices with event sourcing, CQRS and Docker (QC...
Chris Richardson
 
Goto meetup Stockholm - Let your microservices flow
Bernd Ruecker
 
JUG Amsterdam - Orchestration of microservices
Bernd Ruecker
 
SVCC Developing Asynchronous, Message-Driven Microservices
Chris Richardson
 
JavaBin Oslo: Open source workflow and rule management with Camunda
Bernd Ruecker
 
3 common pitfalls in microservice integration
Bernd Ruecker
 
Serverless Design Patterns (London Dev Community)
Yan Cui
 
Master the flow of microservices - because your business is more complex than...
Bernd Ruecker
 
Stream me to the Cloud (and back) with Confluent & MongoDB
confluent
 
Ad

More from Bernd Ruecker (20)

PDF
QCon London: Mastering long-running processes in modern architectures
Bernd Ruecker
 
PDF
WeAreDevelopers Live 2024 - Mastering long-running processes in modern archit...
Bernd Ruecker
 
PDF
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker
 
PDF
JCon Live 2023 - Lice coding some integration problems
Bernd Ruecker
 
PDF
JFall - Process Oriented Integration
Bernd Ruecker
 
PDF
JavaLand 2023 - Process Oriented Integration
Bernd Ruecker
 
PDF
CraftConf: Surviving the hyperautomation low code bubbl
Bernd Ruecker
 
PDF
Mastering Data for Higher Business Impact - at Commerzbank Innovation Summit
Bernd Ruecker
 
PDF
Camunda Chapter Hamburg - Surviving the hyperautomation low code bubble
Bernd Ruecker
 
PDF
Loosely or lousily coupled - Understanding communication patterns in microser...
Bernd Ruecker
 
PDF
CamundaCon 2022 Keynote: The Process Orchestration Journey
Bernd Ruecker
 
PDF
JAX 2022 - Loosely or lousily coupled
Bernd Ruecker
 
PDF
JFS 2021 - The Process Automation Map
Bernd Ruecker
 
PDF
JCon 2021 - Loosely or lousily coupled
Bernd Ruecker
 
PDF
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
Bernd Ruecker
 
PDF
Kafka Summit 2021 - Apache Kafka meets workflow engines
Bernd Ruecker
 
PDF
Process Automation Forum April 2021 - Practical Process Automation
Bernd Ruecker
 
PDF
Micronaut Webinar 2021 - Process Automation Introduction
Bernd Ruecker
 
PDF
Webinar "Communication Between Loosely Coupled Microservices"
Bernd Ruecker
 
PDF
Automating Processes in Modern Architectures
Bernd Ruecker
 
QCon London: Mastering long-running processes in modern architectures
Bernd Ruecker
 
WeAreDevelopers Live 2024 - Mastering long-running processes in modern archit...
Bernd Ruecker
 
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker
 
JCon Live 2023 - Lice coding some integration problems
Bernd Ruecker
 
JFall - Process Oriented Integration
Bernd Ruecker
 
JavaLand 2023 - Process Oriented Integration
Bernd Ruecker
 
CraftConf: Surviving the hyperautomation low code bubbl
Bernd Ruecker
 
Mastering Data for Higher Business Impact - at Commerzbank Innovation Summit
Bernd Ruecker
 
Camunda Chapter Hamburg - Surviving the hyperautomation low code bubble
Bernd Ruecker
 
Loosely or lousily coupled - Understanding communication patterns in microser...
Bernd Ruecker
 
CamundaCon 2022 Keynote: The Process Orchestration Journey
Bernd Ruecker
 
JAX 2022 - Loosely or lousily coupled
Bernd Ruecker
 
JFS 2021 - The Process Automation Map
Bernd Ruecker
 
JCon 2021 - Loosely or lousily coupled
Bernd Ruecker
 
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
Bernd Ruecker
 
Kafka Summit 2021 - Apache Kafka meets workflow engines
Bernd Ruecker
 
Process Automation Forum April 2021 - Practical Process Automation
Bernd Ruecker
 
Micronaut Webinar 2021 - Process Automation Introduction
Bernd Ruecker
 
Webinar "Communication Between Loosely Coupled Microservices"
Bernd Ruecker
 
Automating Processes in Modern Architectures
Bernd Ruecker
 
Ad

Recently uploaded (20)

PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
Best ERP System for Manufacturing in India | Elite Mindz
Elite Mindz
 
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Software Development Company | KodekX
KodekX
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PPT
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
PDF
Chapter 1 Introduction to CV and IP Lecture Note.pdf
Getnet Tigabie Askale -(GM)
 
PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PDF
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
Best ERP System for Manufacturing in India | Elite Mindz
Elite Mindz
 
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Software Development Company | KodekX
KodekX
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
Chapter 1 Introduction to CV and IP Lecture Note.pdf
Getnet Tigabie Askale -(GM)
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
Doc9.....................................
SofiaCollazos
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 

MuCon London 2017: Break your event chains

  • 1. Break your event chains MuCon, November 6th 2017, London [email protected] [email protected] 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 Developer & Trainer, 10+ years (de-)coding domain knowledge DDDesign, TDD/BDD, EDA http://plexiti.com/ http://flowing.io/
  • 3. 3 common hypotheses we check today: # Events decrease coupling # Central control needs to be avoided # Workflow engines are painful
  • 5. Simplified example: dash button Photo by 0xF2, available under Creative Commons BY-ND 2.0 license. https://www.flickr.com/photos/0xf2/29873149904/
  • 8. Basic idea of dedicated, autonomous (micro-) services Checkout Payment Inventory Shipment Dedicated Application Processes Dedicated Persistence Backends Dedicated Development Teams
  • 10. Request/Response: temporally coupled services Checkout Payment Inventory Shipment „The button blinks green if we can ship the item within 24 hours!“ Request Response
  • 11. Events: temporal decoupling with read models Checkout Payment Inventory Shipment „The button blinks green if we can ship the item within 24 hours!“ Events are facts about what happened (in the past) Good Fetched Good Stored Read Model
  • 12. Events: Extract cross-cutting aspects Checkout Payment Inventory Shipment „Inform the customer about steps he is interested in!“ Order placed Payment received Good shipped Notify me when … Order placed Payment received Good fetched Good shipped Customer Mailings Good fetched
  • 13. Events can decrease coupling* *e.g. decentral data-management, read models, extract cross-cutting aspects
  • 14. Events: peer-to-peer event choreographies Checkout Payment Inventory Shipment Order placed Payment received Good shipped „When the button is pressed, an order is placed - and fulfilled!“ Good fetched
  • 15. Events: peer-to-peer event choreographies Fetch the goods before retrieving the payment Some customers can pay via invoice … Checkout Payment Inventory Shipment Good fetched Order placed Payment received Good shipped
  • 16. Extract the end-to-end responsibility Order Checkout Payment Inventory Shipment Order placed Retrieve payment Commands have an intent about what needs to happen in the future Fetch the goods before retrieving the payment Some customers can pay via invoice Payment received Retrieve payment
  • 17. Events can increase coupling* *e.g. complex peer-to-peer event chains
  • 18. Commands can decrease coupling* *e.g. to avoid complex peer-to-peer event chains
  • 19. Central control needs to be avoided
  • 22. The danger of god services Checkout Payment Inventory Shipment Order „A few smart god services tell anemic CRUD services what to do!” Sam Newman „Central“ order service as bad as central ESB logic?
  • 23. A god service is only created with bad API design Checkout Payment Inventory Shipment Order „Smart endpoints and dumb pipes!” Martin Fowler Smart endpoints take care of a business capability their client does not need to understand.
  • 24. Ask: who is responsible to deal with problems? Order Credit Card Retrieve Payment Expired A single central client of dumb endpoints becomes a god service. Better: we create several decentral, smart endpoints. „If the credit card expired, the customer gets another chance to provide new card details!“
  • 25. Ask: who is responsible to deal with problems? Order Credit Card „If the credit card expired, the customer gets another chance to provide new card details!“ Expired „Smart endpoints are potentially long-running.” Payment Retrieve Payment Payment received „The client of a smart endpoint remains lean.”
  • 26. Be sceptical about central control!* *e.g. centralized ESB-like components or god services which heavily interact with dumb endpoints
  • 27. But don‘t give up control!* *e.g. miss to extract and control important potentially long-running business capabilities
  • 28. The problem is not to command services! The problem is bad API design.
  • 30. Persist thing with Entity, Actor, … State machine or workflow engine DIY Order Credit Card Payment Payment received How to implement long- running services?
  • 32. Workflow engines solve some hard developer problems Monitoring & Operations Handling of time & timeouts Retry Visibility & Reporting Versioning Compensation Message correlation & deduplication Performance & scalability
  • 34. Workflow engines solve some hard developer problems Monitoring & Operations Handling of time & timeouts Retry Visibility & Reporting Versioning Compensation Message correlation & deduplication Performance & scalability
  • 38. Bpmn.createProcess("order").executable() //... .sendTask().name("Retrieve payment").camundaClass(RetrievePayme .receiveTask().name("Payment received").message("PaymentReceive //... { "name": "retrieve_payment", "tasks": [ { "name": "Retrieve Payment", "taskReferenceName": "payment", "type": "SIMPLE", ... Do you prefer coded or graphical DSLs? * BPMN - ISO notation for modeling and executing long-running processes and flows
  • 41. Living documentation for long-running behaviour
  • 42. Focus on long-running behaviour - requiring state
  • 43. A visual HTML report for a specific test case
  • 44. Workflows live inside service boundaries
  • 45. Explicit flows help separate domain and infrastructure Infrastructure Aggregates, Domain Events, Domain Services, etc … + the flow Workflow Engine Payment Application Domain
  • 46. Lightweight workflow engines are great (and much better than DIY)* *e.g. enabling potentially long-running services, solving hard developer problems, can run decentralized
  • 47. Workflow engines can do (service) orchestration.* Orchestration is not about synchronous request/response! *We are not talking about container orchestration
  • 49. # Events decrease coupling: sometimes read-models, no complex peer-to-peer event chains, don‘t forget commands # Central control needs to be avoided: sometimes no ESB, smart endpoints/dumb pipes, important capabilities need a home # Workflow engines are painful: some of them lightweight engines are easy to use and can run decentralized, they solve hard developer problems, don‘t DIY
  • 50. Need some code? InventoryPaymentOrder ShippingCheckout Monitor https://github.com/flowing/flowing-retail/ Human Tasks
  • 52. Code online: https://github.com/flowing Slides & Blog: https://bernd-ruecker.com https://plexiti.com With thoughts from http://flowing.io @berndruecker | @martinschimak https://www.infoq.com /articles/microservice- event-choreographies
  • 53. Images licensed from iStock no attribution required All icons licensed from Noun Project no attribution required Images licensed under Creative Commons license Photo by 0xF2, available under Creative Commons BY-ND 2.0 license. https://www.flickr.com/photos/0xf2/2987 3149904/