Я всегда разрабатывал код в виде SOA. В этом году я пытался сделать больше DDD, но я все время чувствую, что не понимаю. На работе наши системы сбалансированы по нагрузке и не имеют состояния. Архитектура:
Сайт
=== Физический уровень ==
Главная служба
== Физический уровень ==
Сервер 1/Сервис 2/Сервис 3/Служба 4
Только сервер 1, служба 2, служба 3 и служба 4 могут разговаривать с базой данных, а главная служба вызывает правильную услугу на основе заказанных продуктов. Каждый физический уровень также сбалансирован по нагрузке.
Теперь, когда я разрабатываю новую услугу, я пытаюсь думать о DDD в этой службе, даже если это не похоже на то, что она подходит.
Я использую хорошие принципы DDD, такие как сущности, типы значений, репозитории, агрегаты, фабрики и т.д.
Я даже пытался использовать ORM, но они просто не похожи на то, что они вписываются в архитектуру без состояния. Я знаю, что есть способы обойти это, например, использовать IStatelessSession вместо ISession с NHibernate. Однако ORM просто чувствует, что они не вписываются в архитектуру без гражданства.
Я заметил, что я действительно использую только некоторые из концепций и моделей, которые DDD научил меня, но общая архитектура по-прежнему является SOA.
Я начинаю думать, что DDD не подходит для больших систем, но я думаю, что некоторые из шаблонов и концепций подходят для больших систем.
Как я уже сказал, может быть, я просто не понимаю DDD, или, может быть, я уже разбираюсь в своих проектах? Может быть, используя шаблоны и концепции, которые DDD научил меня, я использую DDD? Не уверен, есть ли на самом деле вопрос к этому сообщению, но больше мыслей, которые я имел, пытаясь понять, где DDD вписывается в общую систему и насколько она масштабируема. Правда, я не думаю, что действительно знаю, что такое DDD?