Статьи серии:
DDD. Что это такое?
DDD. Единый язык. Ubiquitous language
Результаты опроса:
Итак, приступим!
DDD - Domain Driven Design - Предметно-ориентированное проектирование.
Я уже делал статью про Domain Driven Design, но она является очень highlevel overview на тему DDD с кучей ссылок и определений. Первая статья полезна лишь как справочник материалом. Стоит исправить эт о недоразумение и разобраться в вопросе подробно.
Итак, я хочу написать серию статей про DDD, где попробую описать DDD (Domain Driven Design). От простого к сложному, подробно останавливаясь на каждом аспекте с примерами.
Что такое DDD?
Подход к разработке приложение, который говорит нам, что главное - это знание об устройстве предметной области, о данных, отношениях и бизнес процессах. Основываясь на этом посыле, DDD предлагает строить приложение таким образом, чтобы оно отражало реальную предметную область.
Это как Закон Конвея, но для предметной области. DDD предлагает создавать системы, отражающие предметную область решаемой проблемы, чтобы было проще поддерживать и развивать систему.
«Организации проектируют системы, которые копируют структуру коммуникаций в этой организации»
- Мелвин Конвей
Ведь будет проще, если в коде вы видите бизнес сущности и методы, реализующие бизнес процессы и это все не размазывается по контроллерам, сервисам и прочим абстрак циям усложняя понимание того, что происходит и дробя действительно важные процессы на множество мелких кусков.
Почему появился DDD и какие проблемы он решает?
Здесь ответ короткий и вполне очевидный - для борьбы со сложностью в больших приложениях.
Имея максимально простое и приближенное к реальности описание бизнес процессов снижается сложность в понимании того, что происходит в системе, что нужно доработать и где. А как результат - снижается количество ошибок и уменьшаются сроки разработки.
Основные проблемы решаемые DDD:
- размазанная логика бизнес-процессов
- сущности которые описывают всё (god object)
- зависимость от инфраструктуры хранения, обработки, передачи данных