Я всегда разрабатывал код в стиле 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?