Обзор
Domain-Driven Design (DDD) — это подход к проектированию программных систем, в котором основное внимание уделяется модели предметной области и совместному использованию единого языка (Ubiquitous Language) бизнес‑экспертами и разработчиками.
Цель DDD — сократить разрыв между бизнесом и кодом, сделав модель программной системы отражением реального мира.
Зачем использовать DDD?
- Выравнивание с бизнесом. Модель строится совместно с предметными экспертами и говорит на их языке.
- Гибкость архитектуры. Чёткие границы между автономными контекстами (Bounded Contexts) облегчают изменение и замену частей системы.
- Устойчивость к росту. Явная модульность и строгие зависимости предотвращают «зарастание» кода.
- Повышение качества коммуникации. Все участники проекта используют одинаковые термины, что снижает количество недопониманий.
Подход к внедрению
- Исследуйте домен. Используйте Event Storming, Domain Story‑telling или просто совместные сессии с экспертами.
- Найдите границы контекста. Ищите команды, словарь и правила, которые естественно отделены.
- Стройте модель итеративно. Каждый спринт может уточнять и углублять модель.
Рекомендуемая литература
- Эрик Эванс, “Domain-Driven Design: Tackling Complexity in the Heart of Software” (2003) — «синяя книга», фундаментальные принципы.
- Vaughn Vernon, “Domain-Driven Design Distilled” (2016) — «зелёная книга», сжатое практическое введение.
- Vaughn Vernon, “Implementing Domain-Driven Design” (2013) — «красная книга», подробное практическое руководство.