Event-driven architectures
enable nicely decoupled microservices and are fundamental for decentral data
management. However, using peer-to-peer event chains to implement complex
end-to-end logic crossing service boundaries can accidentally increase
coupling. Extracting such business logic into dedicated services reduces
coupling and allows to keep sight of larger-scale flows - without violating
bounded contexts, harming service autonomy or introducing god services. Service
boundaries get clearer and service APIs get smarter by focusing on their potentially
long running nature. We will demonstrate how the new generation of lightweight
and highly-scalable state machines ease the implementation of long running
services. Based on our real-life experiences, we will share how to handle
complex logic and flows which require proper reactions on failures, timeouts
and compensating actions and we provide guidance backed by code examples to
illustrate alternative approaches.
I started developing software more than 15 years ago. During my
career I coached countless real-life software projects and helped many
customers to implement business logic centered around long running
flows, for example the order process of the rapid growing start-up
Zalando selling clothes worldwide or the provisioning process for e.g.
SIM cards at a couple of big telecommunication companies. During that
time I contributed to various open source workflow engines. I am also
author of two books and co-founder of Camunda. I am totally enthusiastic
about how flows will be implemented in next generation architectures.