CQRS
На мой взгляд данные приложения можно:
- Читать
- Изменять
Если мы хотим прочесть какие-то данные, то формулируем запрос (query), а когда желаем что-то изменить, то отдаем комманду (command).
Это 2 основопологающие отвественности любой системы обработки данных.
Разделить их - нам предлагает подход CQRS: Command Query Responsibility Segregation.
Сделать это - очень хорошая идея. Чтение данных происходит намного чаще, чем их изменение. Читать мы хотим быстро и удобно, а изменять - аккуратно.
Кроме того, в реальных проектах, помимо ценности самих данных, очень ценна, также, история изменений этих данных, а логировать команды намного эффективнее, чем и команды и запросы. Но лучший вариант, конечно же, чтобы лог комманд и был вашим единым источником истины, но об этом в другой раз.
Если ваш проект уже работает, но такого разделения отвественности все еще не имеет, лучше начать рефакторинг с буковки Q, новый же функционал логичнее реализовывать с буковки C.