Архитектура
Архитектурные стили и подходы: как организовать приложение целиком. Все темы раздела решают одну задачу - оформление заказа: позиции, проверка склада, сумма в копейках, сохранение, оплата, уведомление. Так стили видно рядом, на одних и тех же запросах.
Темы
Как разложить приложение
- Слоистая архитектура (Layered Architecture) - представление, логика, данные; каждый слой вызывает только нижний
- Гексагональная архитектура (Hexagonal Architecture) - ядро объявляет порты, база, оплата и почта подключаются адаптерами
- Чистая архитектура (Clean Architecture) - сценарий как объект с входом и выходом, зависимости направлены внутрь
Как устроить домен и данные
- Тактический DDD (Domain-Driven Design) - агрегат держит инварианты, значения проверяются при создании, события сообщают о случившемся
- Разделение команд и запросов (CQRS) - команды меняют модель записи, запросы читают отдельную модель под экран
- Хранение событий (Event Sourcing) - журнал событий вместо текущего состояния, снимки и конфликт версий
Темы
- clean-architecture/Чистая архитектура Clean ArchitectureДелает каждый сценарий приложения отдельным объектом с явным входом и выходом, а все зависимости в коде направляет внутрь, к бизнес-правилам.
- cqrs/Разделение команд и запросов CQRSКоманды меняют модель записи и ничего не возвращают, запросы читают отдельную модель, собранную под экран, и не трогают агрегат.
- ddd/Тактический DDD Domain-Driven DesignПравила предметной области живут в самих объектах домена: агрегат не даёт привести себя в неверное состояние, значения проверяются при создании, а о случившемся сообщают события.
- event-sourcing/Хранение событий Event SourcingВместо текущего состояния заказа хранится журнал всего, что с ним случилось, а состояние каждый раз получается проигрыванием этого журнала.
- hexagonal/Гексагональная архитектура Hexagonal ArchitectureСтавит предметную область в центр: ядро объявляет порты, а база, платёжная система, HTTP и почта подключаются к ним адаптерами снаружи.
- layered/Слоистая архитектура Layered ArchitectureДелит приложение на слои представления, бизнес-логики и данных, где каждый слой вызывает только тот, что под ним.