Asynchronous communication is often discussed in terms of technologies and platforms, but the most important architectural decisions are driven by business requirements and system behavior.
A pattern that works well for notifying downstream systems may not be sufficient when consumers require additional context. An event stream that supports independent processing may become difficult to manage when a business workflow spans multiple services. Requirements such as ordering, retries, auditability, compensation, delivery guarantees, and process visibility can fundamentally change which asynchronous approach is most appropriate.
In this workshop, participants will design a solution for a realistic scenario, making key architecture decisions based on the given requirements. Along the way, we’ll explore how to evaluate trade-offs and make the right design choices as systems evolve.
Rather than promoting a specific technology or architectural style, this session focuses on developing a practical decision-making framework for selecting the better asynchronous communication pattern based on the behaviour the system needs to support.
By the end of the session, Participants will have a clearer understanding of how requirements influence architecture choices, how to evaluate trade-offs between competing async patterns and how to avoid both under-engineering and unnecessary complexity when designing distributed systems. Participants will have a practical framework for evaluating asynchronous patterns, understanding their trade-offs, and making informed architecture decisions with confidence.
“Not every async problem needs Kafka. Not every event needs a workflow engine. Not every workflow needs orchestration. Architecture should evolve based on requirements, not trends”


