Definicja
Event-Driven Architecture (EDA) to styl architektoniczny, w którym komponenty systemu komunikują się poprzez zdarzenia (events). Producent emituje zdarzenie, a konsumenci niezależnie na nie reagują.
Kluczowe pojęcia
| Pojęcie |
Opis |
Przykład |
| Event |
Fakt, który się wydarzył |
„Zamówienie złożone" |
| Producer |
Emituje zdarzenia |
Moduł zamówień |
| Consumer |
Reaguje na zdarzenia |
Moduł płatności, magazyn, email |
| Event Broker |
Dystrybuuje zdarzenia |
Kafka, RabbitMQ, EventBridge |
| Event Store |
Persystencja zdarzeń |
EventStoreDB, Kafka (log) |
Wzorce EDA
| Wzorzec |
Opis |
Use case |
| Event Notification |
„Coś się stało" (krótkie) |
Powiadomienia, cache invalidation |
| Event-Carried State |
„Coś się stało + oto dane" |
Synchronizacja między serwisami |
| Event Sourcing |
Stan = suma wszystkich zdarzeń |
Audyt, undo, replay |
| CQRS |
Oddzielone odczyt/zapis |
Systemy z dużym read/write ratio |
EDA vs Request/Response
| Aspekt |
EDA |
Request/Response |
| Coupling |
Luźny (brak wiedzy o konsumentach) |
Ścisły (producent zna konsumenta) |
| Skalowalność |
Łatwa (dodaj konsumenta) |
Trudna (zmiana kodu producenta) |
| Debugowanie |
Trudne (asynchroniczne) |
Łatwe (synchroniczne) |
| Spójność |
Eventual consistency |
Immediate consistency |
Dlaczego to ważne?
BA musi rozumieć EDA, bo wpływa na user experience (dane mogą nie być natychmiast spójne) i na modelowanie procesów biznesowych.
Powiązane pojęcia