Event Driven Architecture
Event-driven architecture (EDA) is a software design paradigm in which services communicate exclusively by emitting and reacting to events, achieving loose coupling by ensuring that producers have no knowledge of which consumers exist or what they do with the events.
Event-driven architecture (EDA) is a software design paradigm in which services communicate exclusively by emitting and reacting to events, achieving loose coupling by ensuring that producers have no knowledge of which consumers exist or what they do with the events.
In a traditional request-response architecture, Service A calls Service B directly — it must know B's address, API contract, and availability. EDA inverts this relationship. Service A emits an event ("OrderPlaced") to a central event bus or broker, then continues executing. Service B, C, and D — each responsible for their own domain — subscribe to the events they care about and react independently. The producer never knows the consumers exist.
This decoupling delivers several architectural benefits. Services can be deployed, scaled, and failed independently. New consumers can be added without modifying producers. The event log serves as an audit trail of everything that happened in the system. And temporal decoupling means a slow consumer does not block a fast producer.
Events in EDA typically follow one of two structures: notification events (thin payloads that say "something happened, go look it up") or event-carried state transfer events (fat payloads containing the full state at the time of the event). Fat events reduce round-trips but increase payload size; thin events stay small but require consumers to query source-of-truth APIs.
EDA is the philosophical foundation for Event Streaming Architecture (which adds durability and replay), Event Sourcing Pattern (which stores events as the system of record), and the Saga Pattern (which uses events to coordinate distributed transactions). The Pub Sub Messaging model is its simplest concrete implementation.