Skip to content

Моделювання обмежених контекстів

Мета: Навчитися аналізувати предметну область та моделювати обмежені контексти на основі концепцій Domain-Driven Design (DDD). Розвинути навички ідентифікації піддоменів, побудови карт контекстів та вибору стратегій інтеграції обмежених контекстів.

Короткі теоретичні відомості

Єдина мова (Ubiquitous Language) — концепція DDD, яка передбачає створення спільного, узгодженого набору термінів, що використовується як розробниками, так і бізнес-експертами для опису предметної області.

  1. Основна мета усунення «Зіпсованого телефону»
  2. Принцип формування єдиної мови:
    • Мова бізнесу, а не технологій;
    • Відсутність синонімів та двозначностей;
    • Чіткість визначень.

Зв'язок з Обмеженими контекстами є важливим аспектом, оскільки єдина мова не є універсальною для всієї компанії. У великих системах одне й те саме слово може мати різне значення для різних відділів.

Щоб уникнути конфліктів, єдину мову розбивають на Обмежені контексти.

Приклад

  • У піддомені Інтернет-магазин (Універсальний) «Товар» — це красива картинка з описом та ціною;
  • У піддомені Склад / Постачальники (Допоміжний) «Товар» — це фізична коробка з габаритами, штрих-кодом і місцем на полиці.

Використання концепції Єдиної мови в межах окремих контекстів дозволяє змоделювати ці поняття окремо та точно.

Обмежений контекст — чітка межа, в рамках якої термін Єдиної мови має одне непротиворічливе значення.

Приклад

Термін «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 Клієнт (управління контентом) адаптується під модель магазину

Варіанти використання піддоменів

Споживачі використовують Інтернет-магазин в рамках універсального піддомену, сюди входять базові операції, такі як наповнення кошика товарами, пошук акційних пропозицій та інтеграція з соціальними мережами для отримання аналітики.

Основні піддомени реалізуються окремими власними розробками, які пропонують персоналізований підбір товарів на основі їхнього складу та сумісності з визначеними критеріями, а також прогнозування попиту на них для формування нагадувань про майбутні покупки.

Висновок

Ключова цінність — створення кастомних рішень для персоналізації пошуку товарів та їхнього підбору на основі потреб споживача, його інтересів, а також прогнозування майбутніх покупок на основі історії та частоти використання конкретних товарів.