You Keep Using That Word: Asynchronous And Interprocess Comms - Sam Newman - NDC London 2023

Understand communication systems beyond synchronous vs. asynchronous, focusing on properties like latency, consistency, and availability, and explore event-driven communication and event storming techniques.

Key takeaways
  • The speaker argues that the distinction between synchronous and asynchronous communication is not helpful in understanding how systems work, as it fails to capture the complexity of real-world systems.
  • Asynchronous communication is not necessarily about the timing of requests and responses, but rather about the decoupling of producers and consumers.
  • The term “asynchronous” is often used loosely and without a clear definition, leading to confusion and miscommunication.
  • The speaker suggests that instead of focusing on the distinction between synchronous and asynchronous communication, we should focus on the properties of communication that are important in a given system, such as latency, consistency, and availability.
  • The speaker also touches on the concept of event-driven communication, which is often used to describe systems that are designed to react to events rather than waiting for requests.
  • The speaker argues that a more useful way to think about communication is to focus on the types of interactions that can occur between systems, such as request-response, event-driven, and shared-state.
  • The speaker suggests that the term “run” has many different meanings depending on the context, and that we should be careful when using technical terms to ensure that they are understood in the same way by everyone.
  • The speaker also mentions the concept of “event storming”, which is a technique for understanding complex systems by identifying the events that occur in the system and how they interact with each other.
  • The speaker suggests that a more practical approach to understanding asynchronous communication is to focus on the specific problems that need to be solved in a given system, rather than trying to fit the system into a broad category of synchronous or asynchronous communication.
  • The speaker also mentions the concept of “domain coupling”, which is a type of coupling that occurs when systems are tightly coupled to each other at the domain level.