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 they can be avoided with Open Source technologies.
- Communication is complex. With everything being distributed failures are normal so you need sophisticated failure handling strategies (e.g. stateful retry).
- 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.
- Distributed transactions cannot simply be delegated to protocols like XA. So you need to solve the requirement to retain consistency in case of failures.