DDD: стратегический — bounded context, ubiquitous language, context map

↑ 8.2 Архитектурные стили и DDD · ← Предыдущая · → Следующая

Обязательно~3 мин чтенияУровень: senior

Зачем это на собесе

Стратегический DDD — про границы систем и язык; на senior-уровне важнее тактических приёмов.

Объяснение

Domain-Driven Design — подход к сложным предметным областям: модель строится вместе с экспертами домена и отражает их язык.

ПонятиеСмысл
Domain / Subdomainобласть бизнеса; поддомены: core (конкурентное преимущество), supporting, generic (готовые решения)
Ubiquitous Languageединый язык разработчиков и экспертов; терминология в коде совпадает с бизнесом
Bounded Contextграница, внутри которой модель и термины однозначны
Context Mapкарта отношений между контекстами

Один термин в разных контекстах означает разное: «Клиент» в продажах (заказы, скидки) и в доставке (адрес, телефон) — разные модели; общая единая сущность Customer на всё — источник связанности.

Паттерны отношений контекстов:

ПаттернСмысл
Shared Kernelобщий подмножество модели (осторожно)
Customer/Supplierвосходящий и нисходящий контексты, договорённости
Conformistнисходящий принимает модель как есть
Anti-Corruption Layerперевод чужой модели (см. Как строить интеграцию со сторонним API: адаптер, anti-corruption layer, таймауты, ретраи)
Open Host Service / Published Languageпубличный протокол для многих потребителей
Separate Waysконтексты не интегрируются

Bounded context часто совпадает с границей микросервиса или модуля монолита и командой (закон Конвея).

Event Storming — воркшоп для выявления доменных событий, команд и агрегатов вместе с бизнесом.

Нюансы и подводные камни

  • DDD оправдан для сложной логики; для CRUD — избыточен.
  • Не деление по технологиям, а по бизнес-смыслу.
  • Неверные границы контекстов порождают распределённый монолит.
  • Без участия экспертов DDD превращается в рисование диаграмм.
  • Граница контекста ≠ таблица в БД.

Практика

  1. Проведите Event Storming для своего проекта и найдите контексты.
  2. Составьте Context Map с типами отношений.
  3. Найдите термин с разным смыслом в разных частях системы.

Вопросы с ответами

Связанные темы