Architektura oparta na zdarzeniach (EDA) to podejście, w którym komponenty systemu komunikują się za pomocą zdarzeń: wiadomości o występujących zmianach lub działaniach. System składa się z generatorów zdarzeń (producenci), odbiorników (konsumenci) oraz magistrali wiadomości (message bus, broker), która dostarcza zdarzenia.
EDA umożliwia tworzenie elastycznie skalowalnych, słabo powiązanych systemów. Zmiana w jednym komponencie nie wymaga modyfikacji innych: wystarczy generacja i przetwarzanie zdarzeń.
Przykład kodu (generacja i przetwarzanie zdarzeń w Node.js):
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // Odbiornik zdarzenia emitter.on('userCreated', (user) => { console.log('Użytkownik został utworzony:', user); }); // Generacja zdarzenia emitter.emit('userCreated', { id: 1, name: 'Ivan' });
Kluczowe cechy:
Czy EDA jest przeciwieństwem architektury mikrousług?
Nie, to nie są przeciwieństwa. Mikrousługi często wykorzystują EDA do komunikacji między serwisami.
Czy można używać EDA tylko z brokerami wiadomości?
Niekoniecznie. Lokalne zdarzenia (na przykład przez wzorzec Observer) także realizują EDA, ale brokerzy pozwalają na budowanie systemów rozproszonych.
Czy EDA gwarantuje niemienność danych?
Nie. EDA dotyczy interakcji komponentów; odporność na ponowne przetwarzanie (idempotencja) i spójność danych muszą być realizowane wyraźnie.