DDD
DDD - domain-driven-development - стиль разработки, при котором бизнес логика отделяется от кода приложения, таким образом разделяя систему на слои. Бизнес логика пишется максимально понятной для эксперта предметной области, код приложения лишь дергает эту бизнес логику, не зная ничего о реализации.

Составляющие DDD

Entities - бизнес сущности, то вокруг чего пишутся бизнес сценарии
Aggregates - аггрегаты - сущности, из которых строятся Entities, например, для бизнес сущности Заказ: позиции заказа будут являтся аггрегатами
Value Objects - легковестные сущности, например, дата, является каркасом для аггрегатов
Factories - фабрики - аналогично паттернам Фабричный метод и Фабрика - классы, инкапсулирующие создание сущностей
Services - сервисы - здесь описываются бизнес сценарии
Repositories - репозитории - абстракция над любым персистенцем (бд/celery-worker); например, в контексте бд репозиторий преобразует бизнес-сущности в записи бд и сует их в бд
Материалы
Борис Цема, Wargaming.net «Как мы уменьшили сложность наших проектов» - видас про ddd в питоне
Robert Smallshire - Domain Driven Design Patterns in Python - еще про ddd в питоне
Алексей Мерсон — Domain-driven design: рецепт для прагматика - видас про ddd на c#
Максим Аршинов — Быстрорастворимое проектирование - еще про ddd на c#
Modular Monolith with DDD - пример проекта с подробным описанием как все устроено
Last updated
Was this helpful?