Моделювання обмежених контекстів
Мета: Навчитися аналізувати предметну область та моделювати обмежені контексти на основі концепцій Domain-Driven Design (DDD). Розвинути навички ідентифікації піддоменів, побудови карт контекстів та вибору стратегій інтеграції обмежених контекстів.
Короткі теоретичні відомості¶
Єдина мова (Ubiquitous Language) — концепція DDD, яка передбачає створення спільного, узгодженого набору термінів, що використовується як розробниками, так і бізнес-експертами для опису предметної області.
- Основна мета усунення «Зіпсованого телефону»
- Принцип формування єдиної мови:
- Мова бізнесу, а не технологій;
- Відсутність синонімів та двозначностей;
- Чіткість визначень.
Зв'язок з Обмеженими контекстами є важливим аспектом, оскільки єдина мова не є універсальною для всієї компанії. У великих системах одне й те саме слово може мати різне значення для різних відділів.
Щоб уникнути конфліктів, єдину мову розбивають на Обмежені контексти.
Приклад
- У піддомені Інтернет-магазин (Універсальний) «Товар» — це красива картинка з описом та ціною;
- У піддомені Склад / Постачальники (Допоміжний) «Товар» — це фізична коробка з габаритами, штрих-кодом і місцем на полиці.
Використання концепції Єдиної мови в межах окремих контекстів дозволяє змоделювати ці поняття окремо та точно.
Обмежений контекст — чітка межа, в рамках якої термін Єдиної мови має одне непротиворічливе значення.
Приклад
Термін «Lead» для відділу маркетингу — це просто контактна інформація («хтось зацікавився»), а для відділу продажів — це складний процес угоди з життєвим циклом.
Карта контекстів (Context Map) — візуалізація контекстів системи та їхньої інтеграції.
-
Партнерство (Partnership)
Інтеграція відбувається залежно від ситуації. -
Спільне ядро (Shared Kernel)
Обмежені контексти використовують спільну модель, що належить усім учасникам. -
Конформіст (Conformist)
Клієнт адаптується під модель постачальника. -
Запобіжний шар (Anticorruption Layer)
Модель постачальника трансформується відповідно до потреб споживача. -
Сервіс із відкритим протоколом (Open-host Service)
Постачальник надає загальнодоступну модель, оптимізовану для клієнтів. -
Різні шляхи (Separate Ways)
Дублювання функціональності замість інтеграції.
Завдання¶
Опис стратегій інтеграції¶
"Система персоналізованого прогнозування попиту" та "Еко-сумісність та Хімічна безпека" мають зв'язок ACL (Запобіжний шар) — наші кастомні системи адаптуються під API магазину та отримують дані від інших піддоменів.
Інтернет-магазин зазвичай для таких варіантів просто купують, тому тут у нього зв'язок Conformist з усіма універсальними піддоменами: Бухгалтерський облік, Шифрування, Авторизація, Безготівковий розрахунок.
Через плагін можемо написати інтеграцію з соціальними мережами як допоміжний піддомен через інтернет-магазин.
У допоміжних піддоменах встановлені такі зв'язки: - Постачальники — Customer-Supplier — Склад та інвентаризація - Склад та інвентаризація — Conformist — Доставка - Інтернет-магазин — ACL — Обслуговування клієнтів
Карта контекстів HomeShop¶
graph LR
subgraph Core["🎯 Основні піддомени (Core)"]
DemandForecast["Система персоналізованого<br/>прогнозування попиту"]
ChemicalSafety["Еко-сумісність та<br/>Хімічна безпека"]
end
subgraph Universal["📦 Універсальні піддомени<br/>Generic"]
Accounting["Бухгалтерський облік"]
Encryption["Шифрування"]
Authorization["Авторизація"]
Payment["Безготівковий розрахунок"]
OnlineStore["Інтернет-магазин"]
end
subgraph Supporting["🛠️ Допоміжні піддомени<br/>Supporting"]
Suppliers["Постачальники"]
SocialMedia["Інтеграція з соціальними<br/>мережами"]
Warehouse["Склад та<br/>Інвентаризація"]
Delivery["Доставка"]
CustomerSupport["Обслуговування<br/>клієнтів"]
CMS["Управління контентом<br/>CMS"]
end
DemandForecast -->|ACL| OnlineStore
ChemicalSafety -->|ACL| OnlineStore
OnlineStore -->|Conformist| Accounting
OnlineStore -->|Conformist| Encryption
OnlineStore -->|Conformist| Authorization
OnlineStore -->|Conformist| Payment
Suppliers -->|Customer-Supplier| Warehouse
Warehouse -->|Conformist| Delivery
OnlineStore -->|ACL| CustomerSupport
OnlineStore -->|Conformist| SocialMedia
OnlineStore -->|Conformist| CMS
Пояснення зв'язків¶
| Обмежені контексти | Тип інтеграції | Опис |
|---|---|---|
| DemandForecast & ChemicalSafety → OnlineStore | ACL | Core домени адаптуються до API магазину через запобіжний шар, захищаючи власну логіку |
| OnlineStore ← Універсальні домени | Conformist | Магазин (купований продукт) встановлює стандарти для універсальних сервісів |
| Suppliers ⇄ Warehouse | Customer-Supplier | Двосторонній зв'язок: постачальники поставляють товари, склад отримує замовлення |
| Warehouse → Delivery | Conformist | Склад адаптується до вимог готового сервісу доставки |
| OnlineStore → CustomerSupport | ACL | Магазин надає шар адаптації для інтеграції з підтримкою клієнтів |
| OnlineStore → SocialMedia | Conformist | Клієнт адаптується під модель магазину через плагін |
| OnlineStore → CMS | Conformist | Клієнт (управління контентом) адаптується під модель магазину |
Варіанти використання піддоменів¶
Споживачі використовують Інтернет-магазин в рамках універсального піддомену, сюди входять базові операції, такі як наповнення кошика товарами, пошук акційних пропозицій та інтеграція з соціальними мережами для отримання аналітики.
Основні піддомени реалізуються окремими власними розробками, які пропонують персоналізований підбір товарів на основі їхнього складу та сумісності з визначеними критеріями, а також прогнозування попиту на них для формування нагадувань про майбутні покупки.
Висновок¶
Ключова цінність — створення кастомних рішень для персоналізації пошуку товарів та їхнього підбору на основі потреб споживача, його інтересів, а також прогнозування майбутніх покупок на основі історії та частоти використання конкретних товарів.