Событийная архитектура часто воспринимается как современный и гибкий способ построения систем. Но действительно ли вы понимаете, как работает ваша система? Сложность возникает, когда начинаете проектировать систему через события, а не через состояния. Вы получаете событие UserRegistered. Что дальше? Может ли пользователь сразу делать заказы? Можно ли отправить ему email? А можно ли его заблокировать? Если Вы не знаете, какие состояния доступны и как они связаны , то Вы не контролируете систему. Вместо того чтобы создать поведение системы, создаёте «сетевой клубок» реакций. Неявные состояния возникают когда Вы не думаете в терминах состояний. События — это инструмент, но он должен быть следствием , а не моделью. Кто мыслит только событиями — тот не подключает математику автоматов. События — это импульсы. Состояния — это модель.