13:30 - 17:00
Event-driven architectures enable nicely decoupled microservices. 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. I will demonstrate how a new generation of lightweight and highly-scalable state machines ease the implementation of long-running services. I will emphasize how this can also help to solve consistency challenges in distributed systems. Based on real-life experience, I will share how to handle complex logic and flows which require proper reactions on failures, timeouts, and compensating actions, and provide guidance backed by code examples.