Event-driven systems have a variety of patterns and tradeoffs to choose from.
Martin Fowler distills the list as:rF1
- Event notification provides little information and expects followup calls.
- Event-carried state transfer reduces latency with heavy payloads.
- Event sourcing derives current state from event logs.
- CQRS separates commands and queries, which is not eventing but is often used in conjunction with it.
Different queues support different eventing goals.
Evented designs decouple systems temporally, but don’t necessarily meaningfully decouple their implementations.rC6
-
↩
Derek Comartin, “Event-Driven Architecture Lost Its Way,” March 7, 2024, https://codeopinion.com/event-driven-architecture-lost-its-way/. (See notes.)
-
↩
Martin Fowler, “What Do You Mean by ‘Event-Driven’?,” martinfowler.com, 2017, https://martinfowler.com/articles/201701-event-driven.html. (See notes.)