Як осмислити складність предметної області
Як осмислити складність предметної області (Managing Domain Complexity)
Вступ: Від мови до меж
У попередній главі ми вивчили Єдинумову (Ubiquitous Language) — спільну мову для опису предметної області. Але щоб Єдина мова була справді ефективною, потрібно визначити, де саме вона діє.
Уявіть, що ви плануєте подорож:
- Для руху по місту вам потрібна карта метро
- Для автомобільної поїздки — дорожня карта
- Для морської навігації — навігаційна карта
- Для польоту — аеронавігаційна карта
Що ми вивчимо?
У цій главі ми дослідимо:
Крок 1: Що таке моделі?
Розберемо концепцію моделі та її призначення.
Крок 2: Обмежені контексти
Вивчимо, що таке Bounded Contexts і чому вони критично важливі.
Крок 3: Межі контекстів
Дізнаємося, як визначати межі Обмежених контекстів.
Крок 4: Обмежені контексти vs Піддомени
Розуміємо різницю та зв'язок між цими концепціями.
Що таке модель?
Перш ніж говорити про Обмежені контексти, потрібно зрозуміти, що таке модель.
Моделі в реальному світі
Розглянемо приклади моделей з різних сфер:
Карти
Авіаційна модель
Хімічна модель
Ключові властивості моделі
::
Рішення: Розділити на Обмежені контексти
Замість однієї складної моделі створюємо три Обмежені контексти:
Єдина моваєдина застосовна лише в межах свого Обмеженого контексту. Вона орієнтована на опис тільки тієї моделі, що знаходиться в цьому контексті.
Визначення меж Обмеженого контексту
Як визначити, де має проходити межа Обмеженого контексту?
Відправна точка: Непротиворечність Єдиної мови
Найширша можлива межа Обмеженого контексту визначається непротиворечністю Єдиної мови.
Правило 1: Не ширше за узгодженість
Межа не може бути ширшою, ніж зона узгодженості термінології. Якщо терміни суперечать один одному — потрібні окремі контексти.
Правило 2: Але можна вужче
Навіть якщо термінологія узгоджена, можна створити менші контексти з організаційних або технічних причин.

Стратегічне рішення про розмір
Визначення розміру Обмеженого контексту — це стратегічне проектне рішення.
Великі контексти
Малі контексти
Причини для поділу на менші контексти
Чому ви можете захотіти розділити великий Обмежений контекст на менші?
- Нові команди розробників
- Різна експертиза (frontend, backend, ML)
- Географічний розподіл команд
- Різні життєві цикли розробки
- Різні вимоги до масштабування
- Різні технологічні стеки
- Різний темп змін
- Різні SLA (Service Level Agreement)
- Різні вимоги до безпеки
Що уникати: Надмірне розділення
- ❌ Одакові бізнес-вимоги впливають на кілька контекстів одночасно
- ❌ Зміни вимагають синхронного розгортання кількох контекстів
- ❌ Більшість часу йде на інтеграцію, а не на розробку
Порівняння Обмежених контекстів і піддоменів
Тепер розберемо ключову різницю та зв'язок між Піддоменами та Обмеженими контекстами.
Піддомени (Subdomains)
Характеристики піддоменів:
- Визначаються бізнес-стратегією
- Це аналітична концепція
- Ідентифікуються через анал із предметної області
- Існують незалежно від реалізації
- Типи: Core, Generic, Supporting
Обмежені контексти (Bounded Contexts)
Характеристики Обмежених контекстів:
- Визначаються рішеннями проектування
- Це концепція реалізації
- Створюються розробниками та архітекторами
- Можуть змінюватися залежно від потреб
- Межі моделей і Єдиної мови
Порівняльна таблиця
| Аспект | Піддомен | Обмежений контекст |
|---|---|---|
| Походження | Виявляється (Discovery) | Проектується (Design) |
| Хто визначає | Бізнес | Розробники/Архітектори |
| Що це | Частина бізнес-стратегії | Межа моделі |
| Чому існує | Бізнес-компетенція | Технічне рішення |
| Змінність | Рідко (разом з бізнесом) | Може змінюватися |
| Тип классифікації | Core/Generic/Supporting | Немає типізації |
Варіанти відображення
Як співвідносяться піддомени та Обмежені контексти?
Варіант 1: Один контекст на всю предметну Область (антипатерн для великих систем)

Варіант 2: Контексти відповідають непротиворечності моделі

Варіант 3: Один контекст на кожен піддомен

Варіант 4: Кілька контекстів на один піддомен
- Контекст Каталогу (для перегляду)
- Контекст Ціноутворення (для розрахунків)
- Контекст Інвентаризації (для управління запасами)
Ключова фраза для запам'ятовування
Піддомени визначаються бізнес-стратегією. Програмне рішення та його Обмежені контексти можуть бути спроектовані з урахуванням конкретного проєкту та обмежень."Піддомени виявляються, Обмежені контексти проектуються."
Резюме та ключові думки
У цій главі ми вивчили, як керувати складністю предметної області через Обмежені контексти.
- Модель — це спрощення реальності для вирішення конкретної задачі
- Обмежений контекст — це межа, у якій діє конкретна модель і Єдина мова
- Єдина мова є "єдиною" лише всередині свого Обмеженого контексту
- Розмір контексту — це стратегічне рішення, яке балансує між узгодженістю та складністю інтеграції
- Піддомени виявляються (бізнес), Обмежені контексти проектуються (розробка)
- Співвідношення між піддоменами та контекстами може бути різним залежно від потреб
Зв'язок з практикою
Розуміння Обмежених контекстів є фундаментальним для:
- Архітектури мікросервісів: Кожен мікросервіс зазвичай відповідає Обмеженому контексту
- Командної структури: Команди часто організовуються навколо Обмежених контекстів
- Управління складністю: Обмежені контексти дозволяють розбити монолік на керовані частини
- Патерни інтеграції між Обмеженими контекстами
- Тактичне проектування всередині контексту
- Агрегати, Entities, Value Objects
- Domain Events та CQRS