CQRS и Event Sourcing: паттерны для сложных доменов

CQRS и Event Sourcing решают проблемы сложных доменов с высокими требованиями к аудиту.

CQRS (Command Query Responsibility Segregation)

Commands: изменяют состояние (write). Queries: читают данные (read). Разные модели: оптимизация под задачу. Разные хранилища: SQL для writes, NoSQL для reads. Масштабирование независимо.

Event Sourcing

Сохранение всех изменений как событий. Текущее состояние — результат применения событий. Полный audit trail. Возможность "путешествия во времени". Идеально для финансовых транзакций и compliance.

Применение в игровых платформах

Betting history: все ставки как события. Balance changes: каждая транзакция сохраняется. Audit trail: регуляторы требуют полную историю. Replay: воспроизведение любого момента. Compliance: доказательство корректности.

Trade-offs

Сложность: значительно сложнее CRUD. Eventual consistency: read model отстает. Storage: хранение всех событий требует места. Migration: сложность изменения схемы событий. Использовать только когда действительно нужно.