3. How does ordering Pizza work?
Pizza
Place
You
Phone Call
Synchronous blocking communication
Feedback loop (ack, confirmation or rejection)
Temporal coupling (e.g. busy, not answering)
Pizza
Place
You
Email
Asynchronous non-blocking communication
No temporal coupling
Pizza
Place
You
A feedback loop might make sense
(ack, confirmation or rejection)
Email
Confirmation Email
@berndruecker
4. Feedback loop != result
Pizza
Place
You
Email
Confirmation Email
Pizza Delivery
Feedback (ACK, confirmation, rejection)
Result
@berndruecker
5. Only the first communication step is synchronous / blocking
Pizza
Place
You
PUT/order
HTTP 200
Pizza Delivery
The task of
Pizza making is
long running
@berndruecker
11. When do services want to wait? Some business reasons…
Human work Waiting for response
Let some time pass
12. Why is waiting a pain?
Persistent state How to solve the technical challenges without adding accidential
complexity?
Monitoring &
Operations
Visibility
Versioning
Scheduling &
Timeouts
Domain Logic
Scalability &
Resilience
20. There are also technical reasons
why services need to wait…
21. When do services need to wait? Some technical reasons…
Asynchronous communication
Wait for
responses
Wait for
availability
Especially failure scenarios
Unavailability of peers
42. Distributed systems introduce more complexity
Credit
Card
Payment
REST
Cancel
charge
Using an orchestration engine allows to do long
running processes reliably, and end-to-end
45. Further requirements when extending payment Options
begin commit
{local TX}
Customer Credit Service
begin commit
{local TX}
Credit Card Service
@berndruecker
52. Example
Booking Payment
If the credit
card was
rejected, the
customer can
provide new
details
Credit
Card
Retrieve
Payment
Rejected
Rejected
@berndruecker
???
53. Payment
failed
Who is responsible to deal with problems?
Booking Payment
If the credit
card was
rejected, the
customer can
provide new
details
Credit
Card
Retrieve
Payment
Rejected
Payment
received
@berndruecker
57. Long running avoids „god services“
Booking Payment
If the credit
card was
rejected, the
customer can
provide new
details
Credit
Card
Retrieve
Payment
Rejected
Rejected
@berndruecker
A few
smart god services
tell
anemic CRUD services
what to do
Sam Newmann
59. Being able to implement
long running services
makes it easy to distribute
responsibilities correctly
@berndruecker
60. Being able to implement
long running services
makes it easy to embrace
async/non-blocking
@berndruecker
61. You need a
process orchestration capability
that is available as-a-service
within your organization
to create competitive architectures
62. What we see most successful: Center of Excellence
https://camunda.com/process-orchestration/automation-center-of-excellence/
63. Focus: Enablement and platform
Business Unit
or Domain
Business Unit
or Domain
Business Unit
or Domain
Process Automation
Center of Excellence
Solution
Delivery
Solution
Delivery
Solution
Delivery
Solution
Delivery
Solution
Delivery
enable
64. But isn’t a central CoE
harming
team autonomy?
(This is a rhetorical question - the answer is of course NO)
70. At Twilio, we do it by offering what we call the paved path.
These are mature services that you can just pull off the shelf,
adopt, and get up and running super quickly.
But if a team wants to diverge from that path they can make
that decision. You just still have to pass the same rigorous bar
of quality, reliability, and security.
So what you do is you create the incentive structure for teams
to take the paved path. It’s a lot easier. But if they really have
to go a different route, you make it possible for them to do
that.
88. Recap
• You need capabilities for long running behavior for technical and
business reasons
• Process orchestration platforms are a great fit
• This allows you to design better service boundaries, implement quicker
with less accidental complexity, embrace asynchronoucity and provide
a better customer experience (plus increase operational efficiency and
reduces risk)
• Organize central enablement (center of excellence, platform as-a-
service) for easy adoption at scale
@berndruecker