Domain-Driven Design: Предметно-ориентированное проектирование — Eric Evans — обложка книги
560 страниц
Java
PDF
4.5

Domain-Driven Design: Предметно-ориентированное проектирование

Стратегия и тактика моделирования сложного ПО

Автор:

Год:

Краткое содержимое:

Введение

Книга Эрика Эванса «Domain-Driven Design: Tackling Complexity in the Heart of Software» (2003) — это фундаментальный труд, который перевернул представление о проектировании сложных программных систем. Несмотря на то, что примеры в книге написаны на Java, её идеи универсальны и активно применяются в экосистеме Python (Django, FastAPI, SQLAlchemy). Для образовательного сайта pythonlib.ru это обязательная рекомендация для тех, кто хочет перейти от «кода ради кода» к созданию осмысленных, поддерживаемых и гибких приложений.

О чём эта книга?

Эванс предлагает не просто набор паттернов, а целостную философию разработки, в центре которой находится предметная область (domain) — та сфера бизнеса или деятельности, для которой пишется программа. Основная идея: код должен быть точным отражением ментальных моделей экспертов этой области. Книга разбита на четыре части:

  • Часть I: Постановка задачи — объясняет, почему традиционные подходы (анархия, монолитная архитектура, чрезмерное увлечение технологиями) ведут к провалу сложных проектов.
  • Часть II: Моделирование предметной области — вводит ключевые строительные блоки: Entity (сущность), Value Object (объект-значение), Aggregate (агрегат), Repository (репозиторий), Factory (фабрика) и Service (сервис).
  • Часть III: Универсальный язык (Ubiquitous Language) — показывает, как создать единый язык между разработчиками и экспертами, который будет использоваться и в коде, и в обсуждениях.
  • Часть IV: Стратегическое проектирование — описывает работу с несколькими моделями в большом проекте: Bounded Context (ограниченный контекст), Context Map (карта контекстов), Shared Kernel (общее ядро) и Anti-Corruption Layer (антикоррупционный слой).

Для кого эта книга?

Книга рассчитана на опытных разработчиков и архитекторов ПО, которые уже сталкивались с проблемами «большого грязного кода» (Big Ball of Mud) и хотят научиться строить системы, устойчивые к изменениям. Она будет полезна:

  • Python-разработчикам, работающим над сложными веб-приложениями (ERP, CRM, fintech, medtech).
  • Тимлидам и техлидам, которые хотят наладить коммуникацию с бизнес-заказчиками.
  • Всем, кто интересуется архитектурой микросервисов — DDD лежит в основе многих современных подходов.

Что узнает читатель?

После изучения книги вы сможете:

  • Отличать сущности от объектов-значений и правильно выбирать между ними.
  • Проектировать агрегаты — границы транзакционной согласованности.
  • Строить репозитории для инкапсуляции доступа к данным.
  • Применять фабрики для создания сложных объектов.
  • Выделять ограниченные контексты и строить карту контекстов для больших систем.
  • Организовывать совместную работу с экспертами через универсальный язык.
  • Избегать антипаттернов вроде «анемичной модели» (Anemic Domain Model).

Сильные стороны книги

1. Глубина и системность. Эванс не даёт готовых рецептов, а учит думать. Каждая глава — это шаг к пониманию того, как модель становится ядром системы.
2. Практические примеры. Сквозной пример с системой управления контейнерными перевозками (Cargo Shipping) наглядно демонстрирует, как абстрактные концепции превращаются в код.
3. Актуальность. Несмотря на 2003 год, идеи DDD сегодня переживают ренессанс благодаря микросервисам, Event Sourcing и CQRS.
4. Языковая нейтральность. Хотя примеры на Java, любой разработчик на Python, C# или Ruby легко адаптирует их под свой стек.

Кому рекомендуется особенно?

Если вы пишете на Python и используете Django ORM или SQLAlchemy, книга поможет вам не превратить модели в простые обёртки над таблицами, а сделать их полноценными носителями бизнес-логики. Для тех, кто работает с FastAPI и микросервисами, раздел про Bounded Context станет настольным руководством. Domain-Driven Design — это не книга для начинающих, но для тех, кто хочет стать архитектором, она обязательна к прочтению.

Рекомендаций