TGViewer
Системный сдвиг Системный сдвиг @systemswing · 10.2K subscribers
Post #876 2.6K
Ну и завершая тему DDD (готов уворачиваться от помидоров) — ни в одной рекламной статье вам не расскажут про "DDD трилемму" — аналог CAP-теоремы для моделирования доменов.

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

Дело в том, что из трёх китов: изоляции доменной логики, чистоты модели и производительности можно выбрать, как обычно, только два пункта.

В реальной жизни у вас либо бизнес-логика оказывается размазана по уровням (что-то контролируется в модели, что-то — в контроллере, что-то вообще в БД), либо модель должна ходить в базу / в глубинные слои инфраструктуры, соответственно — начинает зависеть от реализации, либо всё красиво и абстрактно, но нещадно тормозит.

Вот ключевая статья на эту тему от Владимира Хорикова https://enterprisecraftsmanship.com/posts/domain-model-purity-completeness/ + преза на русском.

Там простой пример: проверка уникальности email'а при регистрации пользователя. Как его делать? То ли передать с уровня домена в контроллер (и там сначала проверить существование пользователя с таким email), то ли прямо из модели пользователя сходить в хранилище поискать email'ы, то ли поднимать всех пользователей из хранилища на уровень домена, и отдавать модели пользователя (сожрет всю память).

Ну и вот, выбирайте, как хотите. И так, и так, и так будет криво, вопрос — с какой кривизной вы готовы столкнуться?

Это, в общем, следствие старого Закона дырявых абстракций Джоела Спольски: все нетривиальные абстракции дырявы.

И DDD тут тоже не является серебряной пулей. Собственно, претензии к адептам примерно те же, что и к инфобизнесменам — не в том дело, что приемы какие-то неправильные, дело в том, что нельзя создавать впечатление, что DDD решит все проблемы с целостностью и изолированностью изменений. Не решит. Всё равно придётся выбирать плохое из худшего.
  • 👍 13
  • ❤ 3
  • 🤔 3
  • 🔥 1
  • 💯 1
More from @systemswing
  1. Sep 21, 2026Знаю, что в Яндексе работает много аналитиков данных, или BI-аналитиков — тех, кто перемал…
  2. Sep 18, 2026Дальше культурно-историческая теория деятельности (в изложении Энгестрема) говорит о проти…
  3. Sep 17, 2026Что-то перерывы между постами стали совсем длинными. Надеюсь в ближайшее время вернуться в…
  4. Aug 29, 2026Сел тут выписывать категории стейкхолдеров. В проекте положено делать анализ стейкхолдеров…
  5. Aug 18, 2026Глядя на разрастание объема требований в очередном проекте, вспомнил шутку про поправочный…
  6. Aug 15, 2026Я часто вижу среди рекомендаций по системному анализу книгу Донеллы Медоуз "Азбука системн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →