Pull to refresh

Comments 1

Интересная статья, спасибо.


Не очень понял как авторы различает команду и событие. Только семантически, как это часто делается? Наличием только одного обработчика? Или предполагается совершенно другой механизм отправки и обработки, например, синхронный RPC/REST для команд и асинхронный MQ для событий? Если называть командой и событием некую иммутабельную структуру данных типа сообщения о чём-то, отправка которой адресату не требует ответа, кроме сообщений о грубых ошибках отправки или доставки, то технически разница только в количестве адресатов (у команды один и только один, у события от нуля до бесконечности), а основная в семантике: событие — сообщение об изменении чего-то в источнике, а команда — сообщение о желании источника что-то изменить.


По моему опыту SOA, включая MSA, роль оркестратора бизнес-процесса не обязательно должна быть выделенной, если в бизнес-процессе легко выделяется сущность, в том числе корень агрегата, состояние которых в основном и характеризует состояние бизнес-процесса. Вот и в примерах, мне кажется, Order — это не просто бизнес-процесс с, возможно, конечным автоматом или какой-нибудь сетью Петри внутри для хранения состояния и бизнес-логикой его изменения, но полноценная сущность, состояние которой в основном и характеризует состояние бизнес-процесса по обработке заказов и обладает сквозной идентичностью, то есть каждому экземпляру процесса соответствует один и только один инстанс сущности. Кроме статуса бизнес-процесса у заказа может быть множество других изменяющихся в процессе обработки заказа свойств типа адреса доставки, да и содержимого ("табличной части", списка товаров, цен, количеств) самого заказа. Разделять управление сущностью Order и процесс OrderProcessing на два микросервиса нужны, по-моему, веские основания, когда многие бизнес-операции в OrderProcessing никак сущность Order не затрагивают, кроме, разве что, изменения статуса или, например, сущность Order может относиться к нескольким бизнес-процессам и изменяться ими независимо, а то и одновременно.

Sign up to leave a comment.

Articles