Как моделировать жизненный цикл заказа: например, от черновика до завершённого состояния? Это event-driven architecture (событийно-ориентированная архитектура)?

Жизненный цикл заказа удобно моделировать конечным автоматом: состояния, допустимые переходы, условия и эффекты. Наличие состояний само по себе не делает архитектуру event-driven.

Короткий ответ

Что ответить на собеседовании

Жизненный цикл заказа удобно моделировать конечным автоматом: состояния, допустимые переходы, условия и эффекты. Наличие состояний само по себе не делает архитектуру event-driven.

Подробный разбор

Ответ с пояснениями

Жизненный цикл заказа удобно моделировать конечным автоматом: состояния, допустимые переходы, условия и эффекты. Наличие состояний само по себе не делает архитектуру event-driven.

Например, draft → confirmed → paid → completed допускается только при проверке соответствующих инвариантов; отмена и возврат имеют отдельные пути. Переход защищают от конкурентного изменения версией или блокировкой, сохраняют аудит. Если другие компоненты реагируют на события OrderPaid или OrderCancelled, появляется событийное взаимодействие, но оно не обязательно для самого автомата. Побочные эффекты и повторную доставку делают идемпотентными; статус не должен произвольно меняться любым setter.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее