@berndruecker
I want my process back!
#microservices
#serverless
Last year our strategy was
cloud-ready
now it is
cloud-first
„
„
There is this cloud-scale workflow thing…
…let‘s benchmark that!
@berndruecker
What I want
Load
Generator
(Workers, BPMN, …)
@berndruecker
Google Cloud Platform (GCP) Cluster
Kubernetes
Docker
Linux
What I did
Load
Generator
(Workers, BPMN, …)
JVM
@berndruecker
Google Cloud Platform (GCP) Cluster
Kubernetes
Docker
Linux
What I did
Load
Generator
(Workers, BPMN, …)
JVM
@berndruecker
Google Cloud Platform (GCP) Cluster
Kubernetes
Docker
Linux
What I did
Load
Generator
(Workers, BPMN, …)
JVM
@berndruecker
GCP Kubernetes Cluster
Kubernetes
Docker
Linux
Docker
Linux
What I did
Load
Generator
(Workers, BPMN, …)
JVMJVM
undifferentiated heavy lifting
@berndruecker
GCP Kubernetes Cluster
Kubernetes
Docker
Linux
Docker
Linux
Load
Generator
(Workers, BPMN, …)
JVMJVM
undifferentiated heavy lifting
@berndruecker
Drone
Delivery
Shopfront
Cognitive load
Obscure commands or arcane configuration options increase the cognitive load on team members,
effectively reducing their capacity for acquiring or improving business-oriented aspects
Business Capabilities
Business Capabilities
undifferentiated
heavy lifting undifferentiated
heavy lifting
Work
one team
can do
Business Capabilities
„
https://techbeacon.com/app-dev-testing/forget-monoliths-vs-microservices-cognitive-load-what-matters
@berndruecker
What I would love to do
Load
Generator
Camunda CloudFaaS
@berndruecker
We will build applications very differently 10 years from now.
Cloud, Microservices and Serverless are here to stay.
We will leverage many more managed services.
@berndruecker
The era of APIs
API
API
API
API
API
API
API
API
@berndruecker
API
API
API
API
API
API
API
Microservices
External Services
Standard Software
API
Functions
Cloud
@berndruecker
Connecting the dots…
API
API
API
API
API
API
API
Microservices
External Services
Standard Software
API
Functions
@berndruecker
Example
@berndruecker
Example
Payment
Seat
ReservationBooking
Ticket
Generation
Example
@berndruecker
sync
Example
@berndruecker
Weaknesses
Payment
Seat
ReservationBooking
Ticket
Generation
REST
Weaknesses: Latency creep
Payment
Seat
ReservationBooking
Ticket
Generation
REST
300 ms
1150 + x ms
600 ms
250 ms
Weaknesses: Availabiliy erosion
Payment
Seat
ReservationBooking
Ticket
Generation
REST
99 % uptime
99 % uptime
99 % uptime
96 % uptime
And it is even hard to implement
Payment
Seat
ReservationBooking
Ticket
Generation
REST
And it is even hard to implement
Payment
Seat
ReservationBooking
Ticket
Generation
REST
@berndruecker
happy
case
failure
case
Redesign your business process accordingly!
@berndruecker
Redesign your business process accordingly!
Reactive
Business
Processes
@berndruecker
Reactive?
@berndruecker
https://www.reactivemanifesto.org/
Yeah!
Let‘s go reactive.
Phil Calcado at QCon NYC 2019
API
API
API
API
API
API
API
Microservices
External Services
Standard Software
„What the hell just happened?“
@berndruecker
Example: Customer Onboarding
Address
Check
Credit Check
Customer
Registration
requested
Customer
registered
https://www.infoworld.com/article/3391592/how-to-tame-event-driven-microservices.html
@berndruecker
Pattern: Event-Driven Choreography
Address
Check
Credit Check
Registration Customer
Event Bus
Registration
requested
Credit
checked
Address
checked
Customer
registered
@berndruecker
Challenge:
Understand the workflow!
Pattern: Event-Driven Choreography
Address
Check
Credit Check
Registration Customer
Event Bus
Registration
requested
Credit
checked
Address
checked
Customer
registered
@berndruecker
Process Event Monitoring
Camunda
Optimize
Elastic
Registration
requested
Credit
checked
Address
checked
Customer
registered
@berndruecker
That‘s great
That‘s great – until you have to move…
That‘s great – until you have to move…Keep it stable, just move that
one stick down there to the
top.
How hard
can it be?
Changes required for an additional check
Address
Check
Credit Check
Registration
Criminal
Check
@berndruecker
Customer
Event Bus
Registration
requested
Credit
checked
Customer
registered
Address
checked
Changes required for an additional check
Address
Check
Credit Check
Registration
Criminal
Check
@berndruecker
Customer
Event Bus
Registration
requested
Credit
checked
Customer
registered
Address
checked
Criminal
checked
Changes required for an additional check
Adress
Check
Credit Check
Registration
Criminal
Check
@berndruecker
Customer
Event Bus
Registration
requested
Credit
checked
Customer
registered
Address
checked
Criminal
checked
„Credit checks got more
expensive, do that only if all
other checks succeed“
What we wanted
Photo by Lijian Zhang, under Creative Commons SA 2.0 License and Wikimedia Commons / CC BY-SA 4.0
@berndruecker
Pattern: Orchestration
Address
CheckCredit Check
Registration
Customer
Kafka
Registration
requested
Credit
checked
Address
checked
Customer
registeredCheck
credit
Check
address
@berndruecker
Changes…
Address
CheckCredit Check
Registration
Customer
Kafka
Registration
requested
Credit
checked
Address
checked
Customer
registeredCheck
credit
Check
address
@berndruecker
Criminal
Check
Crimes
checked
Check
crimes
Coupling
myths
@berndruecker
Comparison
2 changes
criminal 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
Your ITarchitecture
Choreography
Orchestration
@berndruecker
Your services
or applications
Monolith Chaos
Choreography
Orchestration
@berndruecker
Process Monitoring
Your services
or applications
Your ITarchitecture
Process Monitoring
Monolith Chaos
Choreography
Orchestration
Your services
or applications
Balance choreography and orchestration
@berndruecker
@berndruecker
Final enemy
API
API
API
API
API
API
Microservices
External Services
Standard Software
@berndruecker
API
Final enemy: TLM - The Terrible Legacy Monolith
API
API
API
API
API
API
Microservices
External Services
Standard Software
@berndruecker
API
TLM Feature Highlights
61
★ Clumsy user interface
★ No proper API
★ Just one big piece of code
★ New features released once per year
★ Supports only parts of our core processes
★ No transparency of those processes
@berndruecker
Final enemy: TLM - The Terrible Legacy Monolith
API
API
API
API
API
API
Microservices
External Services
Standard Software
@berndruecker
API
API
API
API
API
API
API
Microservices
External Services
Standard Software
API
@berndruecker
API
Going step by step
API
API
API
API
API
API
API
Microservices
External Services
Standard Software
API
API
@berndruecker
P
D
D
@berndruecker
Pain
Driven
Development
@berndruecker
Thank you!
@berndruecker

I want my process back! #microservices #serverless