Події та команди

Як стало зрозуміло з коментарів у LinkedIn, далеко не всі розуміють різницю між подіями та командами.

Коментар на LinkedIn
Коментар на LinkedIn
Коментар на LinkedIn

Усі ці коментарі присвячені моїй публікації Основна помилка з реалізацією event-driven архітектур. Я не знаю як багато людей мають проблему із розумінням різниці між командою та подією, але вирішив написати окрему публікацію на цю тему.

Отже, маємо два твердження, які я спростую у цій публікації:

  • Відправлення команди не означає наявності яких-небудь знань,
  • Команда не відрізняється від події.

Відправлення команд означає наявність додаткових знань на рівні окремого компонента/сервіса про систему в цілому

Коли сервіс повідомляє про виконану роботу – він рееструє у системі подію. При цьому сервіс не знає нічого про оточуючий світ, окрім одного т.з. endpoint’у, куди відбувається запис результату роботи/події. Інші сервіси можуть якось реагувати на подію, або ігнорувати її і це лише їх власна справа.

Коли ж сервіс повідомляє інші сервіси про те, що вони мають якось опрацювати його команду, то такий сервіс знає про існування інших сервісів та про їх відповідальності. За таких обставин сервіси виявляються більш сплутаними (на діаграмі маємо більше стрілочок).

Взагалі, коли деяка одиниця обчислень (переважно, об’єкт чи сервіс) починає давати команди іншій одиниці обчислень – це велика помилка, яка взагалі порушує ідею об’єктів чи сервісів.

Сервіси і об’єкти не мають підкорюватися іншим. Вони повинні лише реагувати на “цікаві” їм події. У іншому випадку вони перестають бути ізольованими кластерами обчислень, їх межі стають розмитими, а самі вони – сплутаними чи змішаними.

Відправляти команди – означає керувати.

Команди суттево відрізняються від подій, хоча можуть використовуватися абсолютно однакові механізми їх передачі

КомандаПодія
Направляється до виконацівРеєструється у системі
Вказує що робитиВідзначає, що було зроблено
Залежить від сторони, що отримуєНе залежить від сторони, що отримує
Зміст не корисний сам по собіЗміст корисний сам по собі

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *