Bounded Context. Упрощенно это выглядит так: LocalizedContent(entityUuid, locale, field, string, authorUuid, editedAt, ...). Причина простая: работа с контентом и мультиязом не является частью бизнес-логики конкретных агрегатов.
Теперь думаю, как отправлять туда данные. Кейс: добавление компании. Изначально мне нужно запомнить ее название, например, на русском, но в будущем добавятся переводы.
1-ый вариант через хореографиюю — из места, где регистрируется компания, кинуть ивент CompanyRegistered(id, locale, name, ...) и послушать его в LocalizedContent, сохранить. Но тогда получается, что любые правки с контентом все равно будут проходить через главный агрегат и он будет знать про locale и прочее, хотя по факту его не будет сохранять. Да и LocalizedContent будет слушать очень много событий из разных контекстов — как-то не очень.
2-ой вариант — простенькая сага. Но тогда будут саги на каждый чих-пук с контентом. Да и что-то это не очень похоже на тру бизнес long-running process.
3-ий вариант разбивать запрос на две команды в разные контексты еще на уровне гейт-вея. Типа как в докладе https://www.youtube.com/watch?v=hev65ozmYPI
Что скажете?
оч хуевый контекст
Обсуждают сегодня