DDD Microservices - PullRequest
       30

DDD Microservices

0 голосов
/ 18 января 2019

Я исследовал паттерн DDD несколько недель назад и не получил ответа на вопрос.

Следуя принципам Эрика Эванса, модуль Domain не должен зависеть от других модулей, пакетов или чего-либо еще. И сюда должны быть включены все модели, такие как ошибки, сущности, интерфейсы ...

У меня вопрос, если, например, шаблон ошибки распределяется между всеми микросервисами, должен ли повторяться один и тот же объект на каждом микросервисе?

Я думаю, что это дает удивительную модульность проекту, потому что у него нет внешних зависимостей, но масштабируемость плохая, потому что при любом изменении обязательно менять каждый микросервис.

Вы когда-нибудь думали об этом? Спасибо.

1 Ответ

0 голосов
/ 18 января 2019

Руководство существует так:

  1. Ваш домен не зависит от общих библиотек. Это будет препятствовать развитию (и изменениям) в одном домене, потому что это нарушит поведение другого домена.
  2. Помогает нам убедиться, что мы не дублируем деловое поведение в разных доменах. Это очень важно.
  3. Ваш домен не зависит от инфраструктуры. У меня есть сильное подозрение, что это было гораздо важнее в то время, когда люди привыкли использовать доменную логику в хранимых процедурах, но это все еще весьма актуально сегодня, потому что она гарантирует, что логика изолирована и независима от хранилищ, хранилищ и т. Д., Что делает ее очень легко тестируемый.

Учитывая вышесказанное, можно понять, что некоторый обмен идеален. Действительно, вы уже делитесь некоторыми вещами: базовыми структурами языка и библиотеками базовых классов. Совместное использование некоторых вспомогательных библиотек абсолютно нормально, а в некоторых случаях это очень помогает. Вы должны быть очень осторожны при этом:

  1. Совместное использование бизнес-логики в форме разделяемых вспомогательных библиотек нарушает первое правило, изложенное выше, поскольку бизнес-логика может меняться по мере изменения нашего понимания нашего домена.
  2. Совместное использование специфичных для домена структур данных нарушает первое и второе правило сверху. Специфичные для домена структуры данных могут изменяться по мере того, как меняется наше понимание домена, и наличие нескольких доменов в зависимости от них будет препятствовать этому процессу. Это также нарушает второе правило, поскольку доменные структуры данных неявно несут с собой поведение.

Конкретно в вашей ситуации это действительно зависит от шаблона ошибки:

  • Похоже ли это на некоторую структуру данных, которая гарантирует, что исключения содержат некоторый базовый набор информации, который полезен при отладке и не включает какие-либо доменные структуры данных? Если так, то, вероятно, все в порядке.
  • Принимает ли он доменные структуры данных? Тогда я бы сказал, что это не хорошо
  • Содержит ли оно какое-либо доменное поведение для интерпретации некоторых доменных данных и заполнения шаблона? Тогда снова нет.
...