Learning Domain-Driven Design — глава 2, часть 2
Участники выпуска
Полный состав этого выпуска пока не подтверждён источниками.
Что обсудили голосом
Третья встреча посвящена архитектурным паттернам и связи bounded contexts. Layered Architecture делит систему на presentation, application, business logic и data access. Она подходит простым subdomains с Transaction Script или Active Record, но зависимость домена от инфраструктуры мешает богатой domain model.
Ports and Adapters инвертирует зависимость: бизнес-логика объявляет порты, техника подключается адаптерами. Hexagonal, Onion и Clean Architecture считают формами этой идеи. CQRS разделяет консистентную command model и read projections, а event sourcing позволяет строить разные синхронные или асинхронные представления.
Архитектуру выбирают для каждого bounded context. Модель переводит потребитель через anti-corruption layer либо поставщик через open-host service и published language. Данные из нескольких источников собирает агрегатор, иногда со своим хранилищем; похожую задачу для клиента решает BFF.
Публикация domain events до или после коммита оставляет разные окна отказа. Transactional outbox сохраняет данные и событие вместе, затем публикует с семантикой at least once. Операцию через несколько агрегатов ведёт saga: линейную цепочку связывают события, а ветвящийся процесс с решениями становится process manager.