Navigating the challenges of long-running processes is an important skill to survive modern architecture. The complexities arise from the growing distribution of systems and the need to address issues related to remote communication and the unavailability of peers. Additionally, designing effective domain boundaries often requires services to handle time-sensitive business problems, whether waiting for technical responses or human interactions. I will walk you through real-life examples of all those challenges and explain why this affects most software engineers today - in most of the services we build. Ignoring the problem is not a solution!
In this talk, I will look into how process orchestration can help. Tools like microservice orchestrators or workflow engines are built to implement long-running capabilities, and there is a new generation of tools that can work at infinite scale and solve high-throughput, low-latency scenarios. As a result, long-running capabilities are available to any project, enabling software engineers to make informed choices regarding domain boundaries and overarching architectural decisions.
You will see real-life examples and sample code (available on GitHub to play around with yourself) to help you decide and adopt long-running processes in your architecture.
Speaker
Bernd Ruecker
Co-Founder and Chief Technologist @Camunda
Bernd is a software developer at heart who has been innovating process automation deployed in highly scalable and agile environments of industry leaders such as T-Mobile, Lufthansa, ING, and Atlassian. He contributed to various open-source workflow engines for more than 15 years and is the Co-Founder and Chief Technologist of Camunda – an open-source software company reinventing process automation.
He is the author of "Practical Process Automation" and co-author of "Real-Life BPMN". Additionally, he is a regular speaker at conferences around the world and a frequent contributor to several technology publications. He focuses on new process automation paradigms that fit into modern architectures around distributed systems, microservices, domain-driven design, event-driven architecture, and reactive systems.