Integrating microservices and taming distributed systems is hard. In this talk I will present three challenges I've observed in real-life projects and discuss how to avoid them.
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.
I will not only use slides but also demonstrate concrete source code examples available on GitHub.
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.