К основному содержимому
все выпуски
Code of Architecture · выпуск 02

Learning Domain-Driven Design — глава 2, часть 1

1:01:12

Участники выпуска

Полный состав этого выпуска пока не подтверждён источниками.

Содержание

Что обсудили голосом

Второе заседание разбирает реализацию бизнес-логики. Transaction Script организует её вокруг процедур и атомарно фиксирует результат либо откатывает операцию. За простотой скрываются распределённые записи, повторы и идемпотентность: паттерн хорош для supporting-логики, но опасен в core domain.

Active Record — похожий процедурный подход поверх объектов и CRUD. Его и anemic domain model не объявляют безусловными антипаттернами: это практичные инструменты для простой модели. Сложному домену нужна domain model, которая отделяет бизнес-сложность от инфраструктуры и защищает переходы состояния.

Модель строят из value objects, entities, aggregates и domain services. Value object определяется значениями и обычно неизменяем, entity сохраняет идентичность. Aggregate задаёт транзакционную границу и инварианты; между агрегатами принимают eventual consistency. Domain service вычисляет правило, не изменяя несколько агрегатов вместе.

Event-sourced model хранит последовательность доменных событий вместо одного текущего снимка. Она даёт аудит, отладку, новые проекции и обработку конфликтов версий, но требует эволюции событий и snapshots. Для удаления персональных данных чувствительные значения предлагают шифровать с уничтожаемым ключом либо хранить вне событий.

Серия по книге
Learning Domain-Driven Design
Vlad Khononov
Плейлист книги