CQRS
CQRS — паттерн, разделяющий модели записи (commands) и чтения (queries) — часто с разными хранилищами и schemas.
Мотивация
Read и write нагрузка часто асимметричны (в iGaming reads в 10-100 раз больше writes). Оптимизация под каждый паттерн. Разные консистентность и schema. Часто в паре с Event Sourcing: writes — события, reads — материализованные projections.
Архитектура
Command side: принимает мутации, валидирует, пишет в event store или normalized DB. Query side: денормализованные read-модели, оптимизированные под конкретные UI-запросы. Синхронизация через события. Eventually consistent.
Trade-offs
Плюсы: независимое масштабирование чтения/записи, оптимальные data models. Минусы: eventual consistency (UI показывает stale data краткий момент), сложность, дубликация данных. Not free — применять точечно.
iGaming-применение
Wallet: write через command handlers с строгой consistency, read из cache/replica. Leaderboards: pre-computed projections из событий. Player profile: денормализованный вид с BI-полями. Отчёты регулятору из read-only reporting DB. Обычная связка с ES.