ODMA
Архитектура веб-проектов
Владельцы на backend
| Владелец | Ответственность |
|---|---|
domains/business |
Возможности продукта, их данные и поведение |
domains/system |
Identity, управляемый контент, файлы и настройки пользователя |
infrastructure |
Конкретные адаптеры фреймворков и технологий |
core |
Настройки, URL, регистрация приложений и композиция |
Модели, сериализаторы, views, admin, CMS-плагины и тесты остаются у владельца поведения. Исполняемый код доменов и инфраструктуры получает настройки через django.conf.settings и не импортирует корень композиции. Общая инфраструктура не импортирует бизнес-владельцев: конкретные реализации связывает композиция приложения.
Владельцы на frontend
domains представляет возможности доменов вместе с их UI. primitives содержит узкие элементы интерфейса. widgets объединяет функциональные интерфейсы. pages владеет композицией страниц. app инициализирует и связывает приложение. infrastructure интегрирует маршрутизацию, транспорт и другие технологии.
Backend и frontend следуют одному принципу ownership, но не обязаны иметь одинаковые папки. У зависимости должны быть явные назначение и контракт. Перед изменением публичного контракта находим всех потребителей.
Развёртывание — отдельная ответственность
Сервисы владеют своими командами и health checks. Оркестратор приложения отвечает за порядок, готовность и распространение ошибок. Docker Compose управляет процессами и инфраструктурой. Identity развёртывается отдельно от приложения.