А как песочницу себе сделать в монолите? Например, у нас чувствительные данные и мы хотим запретить подсистеме аутентификации создавать tcp-соединения?
Зачем? Там достаточно довольно верхнеуровневой оценки. Типа "кэшируй не более 10mln объектов". Это все легко настраивается и конфигурируется в реальной жизни под реальный сайзинг.
Падаёт только часть, а не весь монолит. Опять же, до падения уже будет алерт по памяти(и мы сразу будем знать какой сервис), а через PSI сервис сам узнает о проблемах и может что-то с этим делать.
Но, еще раз, в большей части проектов вообще нет таких задач, если эти задачи появляются - для них есть свои решения. А переходить на микросервисы (со всем ростом стоимости разработки под микросервисы) только ради бюджетов - нужен очень специалный проект, мне такой даже в голову не приходит.
Я не про кеширование, а про объекты которые создаются в нормальной жизни. Обработка 1 запроса создаёт не так много объектов, но из-за того что запросов много суммарно может оказаться что память уже кончилась. А дальше цирк в виде пейджинга(и время ответа улетает в небеса), либо OOM.
Разница в частичной недоступности или полной. Я ж не просто так пишу про graceful degradation. То что клиенту не покажут какой-то саджест не так страшно, как полная недоступность(потому что мы таки решили всем пришедшим показать саджесты).
Ну, если запросов настолько много, что они съедят всю память (гм, не видел такого, обычно скорее в проц упираемся), то там логично думать о горизонтальном масштабировании (или просто добавить память).