Перейти к содержимому
6 / 15

Когда стоит разделять модель чтения и модель записи (CQRS), а когда это преждевременно?

CQRS — разделение модели записи и модели чтения, потому что требования у них разные: записи нужны инварианты и транзакции, чтению — форма под конкретный экран и скорость. Разделять можно на трёх уровнях: просто не смешивать команды и запросы в коде; читать мимо агрегатов прямым запросом в той же базе; держать отдельную витрину чтения, которую наполняет проекция. Первый уровень полезен почти везде, третий — серьёзное архитектурное решение. Важно: CQRS не требует event sourcing и не обязывает заводить второе хранилище. Цена третьего уровня — задержка проекции, дублирование данных, обязанность делать проекцию идемпотентной и уметь пересобирать витрину с нуля. Преждевременно, когда нагрузка невелика, а форма чтения близка к схеме хранения.

Когда стоит разделять модель чтения и модель записи (CQRS), а когда это преждевременно? | JScriptiser