Architekt systemówArchitekt rozwiązań

Czym jest architektura oparta na zdarzeniach (Event-Driven Architecture, EDA) i jakie problemy rozwiązuje?

Zdaj rozmowy kwalifikacyjne z asystentem AI Hintsage

Odpowiedź.

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:

  • Zapewnia słabe powiązanie między komponentami
  • Łatwo rozszerzać i zmieniać logikę reakcji na zdarzenia
  • Wymaga starannego projektowania i monitorowania interakcji

Pytania z pułapką.

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.