Пара слов про Domain-Driven Design (DDD)

Domain-Driven Design (DDD) - это подход к разработке сложных программных систем, который фокусируется на предметной области (домене) и её логике. Основная идея DDD - создание программного обеспечения, которое точно отражает бизнес-процессы и правила предметной области.

DDD однозначно сегодня на хайпе. Много пишут на эту тему, и со многим я не совсем согласен. Во-первых, это не только для больших компаний. И это точно работает с любыми ЯП. И с монолитами, и микросервисами. И это не так сложно как может показаться на первый взгляд.

Решил выдать свою версию. Постараюсь по возможности как можно проще и подробнее всё выложить здесь к лету. А ниже список тем, которые затрону.

  1. Фокус на предметной области (Domain).
  2. Универсальный язык (Ubiquitous Language).
  3. Модель предметной области (Domain Model).
  4. Ограниченные контексты (Bounded Contexts).
  5. Стратегическое проектирование (Strategic Design): Использование таких концепций, как ядро (Core Domain), поддерживающие поддомены (Supporting Subdomains) и общие поддомены (Generic Subdomains).
  6. Тактическое проектирование (Tactical Design): Применение шаблонов проектирования, таких как сущности (Entities), объекты-значения (Value Objects), агрегаты (Aggregates), репозитории (Repositories) и сервисы домена (Domain Services).
  7. Итеративный процесс (Iterative Development).
  8. Фокус на сложности ядра (Core Domain).