Dos
Всем привет! Такой вопрос. Есть аукцион (торги). После торгов площадка берет комиссию с участников торгов. Так же площадка выставляет счёт услуги. У услуг есть пакеты Тарифов. Дальше будут внутренний счет, который можно пополнять.
Все это делаю независимо модульно. Общаются через шину данных. Как мне лучше сделать? Сейчас планирую так. Есть только аукцион.
Auction Service
- Member
...
Order Service
Invoice Service
Service Service
Payment Service
На русском:
Сервис Аукциона
Сервис заказов
Сервис счетов
Сервис услуг
Сервис платежей
Правильно ли такое разделение?
Либо последние 3 объединить в Finance, например?
Что-то запутался в простых вещах.
вот начиналось все так красиво, шины данных, колаборативный домен... само то для CQRS :)
Определись по какому принципу ты определяешь разделение. Мол "логически" (logical cohesion, чуть лучше чем случайный кохижен) или же на основании того какие данные как меняются и какие данные влияют на эти изменения. Это довольно важно определиться чем руководствоваться при поиске границ ответственности.
Я бы рекомендовал тебе "имена" модулей выбирать в последний момент. Когда ты определился с тем какие модули какие юзкейсы хэндлят и какие данные для этих юзкейсов нужны. Мол "красный модуль позволяет нам делать ставки. для этого надо такие-то данные, зеленый модуль считает что-то еще - для этого ему нужны такие-то данные". Мотивация может быть в том что между модулями ты никак не можешь гарантировать что будешь работать с актуальными данными, что важно в условиях колаборативного домена. Ну либо у тебя будут распределенные локи и медленно (можно еще консистентные хэши и очереди но это надо оч хорошо партиции данных выбирать)
Имена модулей (особенно когда эти имена выбираются по бизнес сущностям) существенно влияют на то как ты будешь определять какие данные куда класть. Мол "но не логично в модуле счетов держать историю ставок, это ж аукционы".