DDD Часть 1. Зачем использовать DDD?

Дизайн, управляемый доменом

Внимательно пишите статьи и делитесь ими с душой.

Персональный сайт:yasinshaw.com

Общедоступный номер: технический круг xy

Заранее извините, за последние две-три недели новых статей не было. С одной стороны я занят (ленив), с другой стороны думаю о том, на какую тему я могу написать, ведь в ежедневной разработке не так много задач, которые можно написать.

Так получилось, что я недавно участвовал в тренинге компании по DDD (Domain Driven Design), и тоже использую DDD в своем текущем проекте.За последние полгода все столкнулись с какими-то подводными камнями. Поэтому я планирую написать несколько статей по DDD, которые можно рассматривать как уточнение и обобщение знаний.

Почему DDD так популярен?

Впервые я услышал слово DDD несколько лет назад. Сначала это звучит как TDD (Test Driven Development), но это две совершенно разные вещи. В то время я читал блог о DDD, большую статью о профессиональной терминологии, и это сбивало с толку, поэтому я не стал вникать.

Хотя DDD был предложен еще в 2003 году, он не прижился. Только в последние два года об этом постепенно стало известно всем. Рассматривая причины, я думаю, что есть три аспекта:

  • Во-первых, DDD предназначен для решения сложных программных задач, а в большинстве предыдущих программ не было очень сложной логики, и играть можно было и без DDD;
  • Во втором аспекте у DDD не было хорошего руководства по посадке до публикации книги «Достижение предметно-ориентированного дизайна», которая открыла дверь для посадки DDD;
  • Третий аспект заключается в том, что нет отечественной команды для изучения и проповеди, поэтому не так много людей, которые это понимают.

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

Какой к черту ДДД?

На сегодняшний день DDD является единственным в отрасли, который включает в себяОт анализа спроса до реализацииИнструмент. DDD сосредоточится на бизнесе, разработает код из бизнеса,Бизнес – это центр DDD.

DDD делится на стратегическую и тактическую части, и они дополняют друг друга. Стратегическая часть используется, чтобы понять и разобраться в бизнесе, найти основной бизнес и лучше разделить систему (вот почему DDD можно использовать для руководства проектированием микросервисов); тактическая часть используется для того, чтобы приземлиться на код, и используйте код, чтобы четко представить бизнес, как наслоить код, как разработать зрелую программу руководства.

DDD может лучше решать разработку программного обеспечения для сложного бизнеса, но DDD — это не «серебряная пуля», а DDD — это не какие-то жесткие условия и спецификации. На самом деле, сегодняшняя индустрия все еще изучает способ применения DDD.

Silver Bullet: Удобная техника разработки, делающая реализацию проекта более эффективной.

DDD также не является единственным выбором. Его можно использовать как один из многих наборов инструментов. После оценки затрат и выгод его можно извлечь и использовать в сочетании с другими инструментами для обслуживания вашего собственного бизнеса и разработки более качественных программных услуг для себя.

Так что же такое «домен»?

Итак, последние два слова фразы «дизайн, ориентированный на домен» легко понять, но что на самом деле означает «домен»?

Анализируя бизнес, DDD, наконец, создает «домены» и разрабатывает «модели предметных областей», которые богаты бизнес-поведением.

В DDD «домен» относится к бизнес-сфере. Например, в системе электронной коммерции может быть «поле товара», «поле заказа», «поле логистики», «поле складирования» и так далее. DDD помогает нам разделить области бизнеса в соответствии с бизнесом через часть стратегии и выделить основные области, вспомогательные области и общие области. Об этом мы подробно расскажем в следующих статьях этой серии.

«Модель предметной области» относится к объектам-носителям бизнеса, таким как «товар», «заказ» и так далее. У этих объектов есть методы, имеющие значение для бизнеса, например метод «Item.Add to Cart». Мы связываем основную бизнес-логику с объектами предметной области, поэтому то, что делает операция, очень понятно и легко поддерживается.

Проще говоря, «домен» и «модель предметной области» могут более интуитивно представлять бизнес и действительно реализовывать бизнес в системной архитектуре и дизайне кода.

Зачем нужен ДДД?

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

Для сложной бизнес-системы использование DDD имеет следующие преимущества:

  • Разработчики работают вместе с людьми, знакомыми с бизнесом, укрепляя сотрудничество разных ролей между командами;
  • Может помочь деловому персоналу и разработчикам разобраться со сложными бизнес-правилами;
  • Разработанное программное обеспечение может точно выражать бизнес-правила, дизайн — это код, а код — это дизайн;

Когда вам нужно использовать DDD?

Использование DDD сопряжено с определенными затратами. Члены вашей команды должны понимать некоторые базовые знания о DDD. Лучше всего, чтобы кто-то практиковал DDD и имел некоторый опыт.

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

Вообще говоря, DDD подходит для систем «делового комплекса» и «обслуживания и расширения».

Сначала посмотрим, что естьсложный бизнес. Только представьте, если вашей системе нужно CRUD всего лишь несколько простых таблиц, то вам не нужно использовать DDD или даже разрабатывать приложение, просто использование клиента базы данных может решить проблему.

По опыту, если в вашей системе менее 30 бизнес-операций или пользовательских историй, нет необходимости использовать DDD. А если их больше 30 или 40, программное обеспечение будет иметь определенную сложность.В это время вы можете рассмотреть возможность использования DDD.

С другой стороны, даже если ПО сейчас не сложное, а будет развиваться и расширяться в будущем, усложняться в обозримом будущем, то можно также рассмотреть возможность использования DDD. Некоторым стартапам может понадобиться только простой продукт для быстрого тестирования обратной связи с рынком, и они не будут продолжать развивать и поддерживать его в будущем, а рассмотрят возможность выкупа или разработки с нуля, тогда нет необходимости тратить деньги на использование DDD.

Итак, еще раз, когда нам нужно использовать DDD?Комплексный бизнес и долгосрочное обслуживаниекогда.

Что такое DDD-Lite?

В процессе изучения DDD вы можете услышать термин DDD-Lite. Что это? Это ДДД?

DDD-Lite — это просто подмножество тактической модели DDD, которое больше касается уровня технической реализации и часто игнорирует стратегическую часть DDD. Но это нельзя назвать DDD, потому что в DDD очень важна стратегическая модель.DDD требует как тактической модели для реализации, так и стратегической модели для руководства, какая часть отсутствует, DDD не завершен.

Если DDD используется отдельно, он может не полностью отражать бизнес и может привести к объектам предметной области второстепенного уровня. Из-за отсутствия таких инструментов, как «универсальный язык» и «ограниченный контекст» в модели стратегии DDD для руководства и помощи.

Суммировать

На самом деле, на протяжении всего текста вы можете обнаружить, что ядром DDD является одно слово: бизнес. Все инструменты и реализации DDD ориентированы на бизнес и начинаются с бизнеса. Поэтому, если вы хотите хорошо внедрить DDD, вы должны признать ценность бизнеса, обратить внимание на бизнес и понять бизнес.

Быть в курсе:

«DDD Часть 2 — Поддомены и ограниченные контексты»