We will meet at 6:30pm at the canteen of RIO – a Brand of Volkswagen Truck & Bus (MAN Truck & Bus building), with drinks and pizza.
The talks starts at 7pm and will be in English. After the talks we have time for drinks and conversations.
Know the flow! Events, commands and long-running services.
In this talk, I will probably have some more time to move even beyond my thoughts presented at DDD eXchange 2018 in London as well as ExploreDDD 2018 in Denver, focus on strategic domain-driven design and explore the long-running nature of delivering many real-life business capabilities. Designing Micro- (and Nano?) services does in my mind not stop at defining boundaries around business capabilities - it should reach out for truly smart endpoints, emphasize autonomy and the need for more coarse-grained and asynchronous APIs. The „long-running“ services behind such APIs are potentially composed of multiple steps, feel responsible for their business and sort out most problems without leaking internal troubles and bothering their clients. While long-running services will leverage domain events for decoupling, they will often expose their core functions as commands - in order to minimize coupling (even though that might sound counterintuitive to some). Extracting the customer-facing core processes of companies into dedicated, long-running services allows to keep sight of larger-scale flows, without violating bounded contexts or introducing god services.
At the age of ten Martin fell in love with coding. And later „focused“ on it by studying business and law. :-) But it turned out to be awesome: for programming business software! The energy traders, telecom people, wind tunnel experts and many others he talked to formed a domain „de“coder with now 15+ years of hands-on experience and a soft spot for lean saga managers and flow engines. Martin is a trainer with experience in 50+ companies and 10+ countries. He regularly speaks at meetups and conferences in Europe and from time to time in the US.
Implementing long-running behavior using Camunda or Zeebe
Implementing stateful (aka long-running) behavior of services isn't super simple. But workflow automation unifies multiple use cases around long running behavior solving a lot of challenges. I will show working code using the lightweight Open Source Camunda engine fitting Martins example and also dive into how long running behavior can address more challenges around distributed systems like
1. Communication is complex. With everything being distributed failures are normal so you need sophisticated failure handling strategies (e.g. stateful retry).
2. Asynchronicity requires you to handle timeouts. This is not only about milliseconds, systems get much more resilient when you can wait for minutes, hours or even longer.
3. Distributed transactions cannot simply be delegated to protocols like XA. So you need to solve the requirement to retain consistency in case of failures.
Expect live coding and opportunities to discuss any questions. I will furthermore show BizDevOps in action and discuss how modern workflow engines like Zeebe.io can be used at scale, even in highly distributed environments.
Throughout my 15+ years in software development, I have helped automating highly scalable core workflows at global companies including T-Mobile, Lufthansa and Zalando. I have contributed to various open source workflow engines. I am co-founder and developer advocate of Camunda, an open source software company reinventing workflow automation. I co-authored "Real-Life BPMN," a popular book about workflow modeling and automation, now in its fifth edition and available in English, German and Spanish. I regularly speak at conferences and write for various magazines. I am currently focused on new workflow automation paradigms that fit into modern architectures around distributed systems, microservices, domain-driven design, event-driven architecture and reactive systems.