Event-driven Architecture
Event-driven architecture (EDA) is a software design pattern in which system behavior is determined by the production, detection, and consumption of events — discrete, asynchronous messages that announce a state change rather than request an action. In an event-driven system, components do not call each other directly; they publish events to a channel or bus, and other components subscribe to the events that concern them, enabling loose coupling and independent scalability.
The pattern is the architectural complement to FaaS and microservices: where FaaS provides the execution unit and microservices provide the organizational boundary, EDA provides the communication fabric. Without events, a serverless function is an isolated procedure; with events, it becomes a node in a reactive graph that evolves in response to state changes across the system.
EDA is not without cost. Event-driven systems are harder to reason about than request-response systems because causality is diffuse — an event may have multiple consumers, and a failure in one consumer does not block the producer. Debugging becomes a distributed tracing problem, and consistency guarantees weaken because events are asynchronous and potentially out of order. The architecture trades operational coupling for cognitive complexity.