Chronacta — хранилище событий в вашей инфраструктуре

Сервер для систем на Event Sourcing

Храните изменения как события домена и восстанавливайте из них состояние агрегатов. Chronacta предоставляет потоки событий, контроль конкурентной записи, подписки и проекции — в вашей инфраструктуре.

ПРИЛОЖЕНИЕPlaceOrderкоманда · order-42appendCHRONACTA · EVENT STOREпоток orders-42v1OrderPlacedv2ItemAddedv3PaymentAuthv4OrderShippedprojectМОДЕЛЬ ЧТЕНИЯorders_list · пересобираемая

Почему Chronacta

01

Используйте специализированное хранилище

Записывайте и читайте события через API, построенный вокруг потоков и версий, вместо самостоятельной реализации операций хранилища событий.

02

Обнаруживайте конфликты записи

Указывайте ожидаемую версию потока. Если поток изменился, Chronacta отклонит запись, чтобы приложение могло обработать конфликт.

03

Стройте модели чтения из событий

Используйте проекции для подготовки данных к запросам. Пересобирайте производные модели из сохранённых событий при изменении логики проекций.

04

Управляйте своим развёртыванием

Запускайте Chronacta в своей инфраструктуре. Выберите один узел или рассмотрите Enterprise для высокой доступности и дополнительных средств эксплуатации.

Хранение событий, подписки и проекции

Chronacta — сервер-хранилище событий. Приложение обрабатывает команды и обеспечивает соблюдение инвариантов агрегатов; Chronacta сохраняет полученные события и предоставляет их для чтения, проекций и подписчиков.

Потоки с версиями

Храните события в упорядоченных потоках. Используйте версии для оптимистического контроля конкуренции, а ключи идемпотентности — при повторных запросах на запись.

Чтение и подписки

Читайте отдельный поток или общий журнал событий. Устойчивые подписки сохраняют позицию обработки при перезапуске потребителя.

Проекции и воспроизведение

Обрабатывайте сохранённые события для построения моделей чтения. Повторно воспроизводите нужную историю, чтобы пересобрать производные данные.

Развёртывание и эксплуатация

Начните с Chronacta на одном узле. Enterprise добавляет высокую доступность, интеграции безопасности и дополнительные средства эксплуатации.

Когда последовательность событий — часть модели

В Event Sourcing события служат источником истины, а не дополнительным журналом аудита. Приложение восстанавливает из них состояние агрегатов, а проекции строят модели чтения. Такой подход полезен, когда переходы состояния имеют значение для предметной области.

Заказы и исполнение

Представляйте оформление заказа, изменение его состава, отмену и отгрузку отдельными событиями домена с учётом инвариантов агрегата.

Платежи и счета

Явно описывайте финансовые операции и рассчитывайте остатки и другие модели чтения на основе записанных событий.

Обращения и процессы

Восстанавливайте переходы, которые привели обращение к текущему состоянию, и применяйте правила предметной области к следующим командам.

Несколько моделей для запросов

Стройте списки, отчёты и поисковые индексы из одной истории событий, не меняя поток агрегата.

От команды к модели чтения

Обработчик команды получает запрос на отгрузку заказа. Он загружает агрегат заказа, восстанавливает его состояние из событий и вызывает проверку операции в агрегате. Если правила допускают отгрузку, приложение добавляет OrderShipped с ожидаемой версией потока. Chronacta сохраняет событие. Проекция обновляет список заказов, а подписчик может уведомить другой сервис.

Команда
Решение
Событие
Хранилище событий
Проекция
Приходит команда → приложение применяет правила и порождает события домена → хранилище событий добавляет их в поток → проекции строят моделей чтения, которые запрашивает интерфейс.

Правила предметной области остаются в приложении. Chronacta предоставляет механизмы хранения и доставки, необходимые для использования событий домена как источника истины.

Реализуйте один агрегат целиком

Начните с конкретной операции предметной области и проверьте весь путь: от команды до обновлённой модели чтения.

  1. 1. Определите модель

    Выделите агрегат, его инварианты, принимаемые команды и события, описывающие переходы состояния.

  2. 2. Подключите Chronacta

    Запустите сервер, добавьте события с ожидаемой версией и восстановите состояние агрегата, прочитав поток.

  3. 3. Добавьте проекцию и подписчика

    Постройте модель чтения. Проверьте перезапуск потребителя, повторную доставку и пересборку производных данных.

  4. 4. Выберите способ развёртывания

    Оцените требования к производительности, восстановлению и доступности. Выберите Chronacta или Enterprise в соответствии с этими требованиями.