An Event-Driven Architecture (EDA) is an architectural style in which events are considered first-class citizens of the architecture. In an EDA, events play an important role in the communication between components. Each event represents a fact that happened, usually actual business facts. Certain components make changes to the system and emit events to represent these facts, while other components consume these events and take corresponding actions. With this topic we will cover a foundation for domain-driven design and decoupled microservices, analysis with event storming, the differences between asynchronous communication, messages and events, and the use of events rather than state. We’ll ask if events are the only means of communication between components in an EDA, how an EDA relates to event sourcing, and how to can keep track of cause and effect chains in an event-driven system.