Ранее я задавал вопрос о том, как уведомления и пользователи, которые видят эти уведомления, могут быть смоделированы в DDD.
Ссылка здесь: Все ли должно быть в совокупности? Связь «многие ко многим»
Кратко об этом:
Мы можем создавать уведомления в системе, которые мы хотим показывать пользователям. (Уведомление будет нацелено на определенных пользователей, для которых вы определяете фильтр. Например, показывать только администраторов, показывать только обычных пользователей, показывать только пользователей для клиента x). Когда пользователь видит уведомление, мы хотим пометить его, чтобы он его не видел. снова.
В посте было предложено иметь агрегат уведомлений и хранить ссылку на него в агрегате пользователя. Таким образом, при создании уведомления событие будет выбрано, и служба добавит это уведомление пользователям, которые считает нужным.
Итак, у нас есть список уведомлений в файле user.
Я думаю, что это ограниченный контекст (контекст, ограниченный уведомлением). Конечно, если бы я моделировал его как микрослужбу, я бы обрабатывал эти уведомления в отдельной микрослужбе.
Если бы мы использовали микрослужбы, событие, созданное пользователем, пришло бы из другой службы (службы пользователей).
Вопрос: Создание уведомления будет происходить в микросервисе уведомлений. У меня также возникнет соблазн пометить пользователя, что он также видел уведомление в этой службе.
Таким образом, на этом этапе микрослужба уведомлений не будет содержать полную совокупность пользователей, а будет иметь только частичную, содержащую; идентификатор, сбор уведомлений и любые критерии, которые могут потребоваться для фильтрации
Можно ли иметь агрегат (будь то частичный, поскольку это только то, что нам нужно) в микросервисе (микросервисе уведомлений), которому он не принадлежит? Таким образом, по сути, у нас есть совокупность пользователя в микросервисе пользователей и уведомления.
Звучит не так уж плохо, так как это уменьшит нагрузку на пользователя за счет разделения частей, и было бы неплохо объединить эту функциональность в сервис, который ее обрабатывает.
Однако хотим ли мы хранить все пользовательские данные в одном месте? даже если он добавляет в него другие функции? Будет ли уведомление отображаться в пользовательском микросервисе (это неправильно)
Спасибо