CQRS і event-driven архітектура — це не одне й те саме
Сьогодні поговоримо про архітектурні патерни у високонавантажених системах. Я часто чую, як люди пов’язують або навіть ототожнюють CQRS та Event-Driven Architecture. Хоча зв’язок між ними досить слабкий.
CQRS — це про розділення потоків запитів на запис і читання з фокусом на їхній оптимізації. Для реалізації CQRS зовсім не обов’язково використовувати Event-Driven Architecture чи взагалі брокер повідомлень або подій. Хоча така реалізація теж можлива і допомагає максимально розділити компоненти запису та читання, приносячи новий біль у вигляді eventual consistency.
Про різні варіанти реалізації CQRS можна прочитати в цій статті.
Event-Driven Architecture (EDA), своєю чергою, є архітектурним підходом до побудови адаптивних, стійких і масштабованих розподілених систем за рахунок зниження зв’язаності компонентів. В його основі лежить генерація подій про зміни стану системи та побудова бізнес-процесів як реакцій на ці події. У рамках EDA існує безліч готових дизайн-патернів під різні кейси.
І що ще важливіше, як CQRS, так і EDA можна застосовувати не лише в мікросервісній архітектурі. :)