ты не можешь кэшировать работу логики приложения -> тк ты сталкнешся с тем что кэш не соответствует реальной модели данных, и это приводит к ошибкам в сервисе (погугли инвалидация кэша), в итоге чтоб тебе держать кэш корректным тебе нужно будет еще больше нагрузки проводить и сверять корректность кэша с данными в БД.
так что про кэширование логики забудь, кэширую простые готовые ответы пользователю, не поболее того.
1. Для гиганского ускорения (в тысячи раз) тебе нужно перенести модель и логику в оперативную память, а для этого забыть про всякие там ноды хуеды, а перейти на статически типизированные компилированные языки, и уже эту модель данных в памяти асинхронно сохранять в базу данных, тогда все летать будет.
2. Для легкой и самое главное корректной разработки сервиса с большим количеством "событийных" зависимостей - желательно использовать "Функциональное реактивное программирование" (в гугле поищешь материалы почему и как это реализуется)