Продвинутый

Event Sourcing и CQRS

Урок 2 из 3 в курсе Событийная архитектура

Содержание курса (2/3)

Event Sourcing и CQRS

хранить не текущее состояние, а историю изменений; и разделять чтение и запись.

Почему это важно: Event sourcing решает аудит, time travel, восстановление состояния. CQRS — разные требования к чтению и записи.

Главная идея

Состояние — это свёртка всех событий. Команды меняют состояние через события, запросы читают из проекций.

Как это выглядит на практике

  1. Каждое изменение записывается как событие в event store.
  2. Текущее состояние — это применение всех событий по порядку.
  3. Для чтения создаются проекции — оптимизированные представления данных.
  4. При новой бизнес-задаче можно построить новую проекцию из истории.

Что происходит под капотом

  • Event store: append-only хранилище событий (EventStoreDB, Kafka).
  • Projection: материализованное представление, обновляемое по событиям.
  • CQRS: Command Query Responsibility Segregation — модель записи и чтения разделены.
  • Snapshots: периодическое сохранение состояния, чтобы не пересчитывать с нуля.

Типичные ошибки и заблуждения

  • Ошибка: event sourcing нужен везде. Это сложный подход с серьёзным overhead.
  • Ошибка: CQRS = event sourcing. CQRS можно применять и без событий.
  • Ошибка: проекции легко строить заново. На больших объёмах это часы или дни.
  • Ошибка: event sourcing решает любые проблемы с данными. На самом деле он добавляет свои.

Ключевые выводы

  • Event sourcing хранит историю, а не текущее состояние.
  • CQRS разделяет модели чтения и записи.
  • Проекции позволяют оптимизировать чтение под задачу.
  • Подход даёт мощь, но требует дисциплины.

Термины урока

Event sourcing: хранение состояния как последовательности событий.
CQRS: раздельные модели для команд и запросов.
Projection: производное представление данных.
Snapshot: моментальное состояние агрегата для оптимизации.

Связь с работой backend-разработчика

Event sourcing и CQRS — продвинутые паттерны, которые решают конкретные задачи (аудит, аналитика, сложные домены), но усложняют систему.

Мини-разбор реальной ситуации

Финтех-стартап выбрал event sourcing для биллинга — это дало полную аудиторскую историю и возможность реконструировать любое состояние счёта на любую дату.

Что запомнить

  • События — источник истины.
  • CQRS ≠ event sourcing.
  • Используйте, когда выгода превышает сложность.

Итог

Event sourcing и CQRS — мощные инструменты для специфических задач, не для каждого CRUD-приложения.

Комментарии к уроку

Войдите, чтобы оставить комментарий.

Пока нет комментариев — будьте первым.