Когда начались тормоза, сразу добавил новый инстанс приложения, производительность практически удвоилась, но позже и второй инстанс начал задыхаться, добавил третий и производительность не увеличилась. Запустил профилировщик, увидел, что все упирается в бд, на ум сразу пришло вынести эту часть в микросервис, а основной монолит будет обращаться к этому микросервису, но опять же проблема, а что будет, когда и этот микросервис начнет задыхаться?
Вопрос интересно звучит. Как будто - куда "соломки" положить чтоб мягче падать.
Пускай
планом Б у тебя будет просто поднятие еще одной БД или нескольких БД с балансировкой.
Если 1 база не успевает отработать поток, по пол-потока или треть она успеет.
Попробуй
мемоизировать результат ответа от БД. Положи в Redis. Это на тот случай если есть
горячие комбинации парамтеров запроса и есть вероятность что клиент их затребует несколько раз.
Подскажите, что можно предпринять (если менять архитектуру, то на какую)? Пожалуйста, подробнее и более простым языком (для тупых).
На данный момент ничего менять не надо. Т.к. непонятно в какую сторону тебе двигаться.
Однозначно тебе нужен хороший специалист по БД. Он должен уметь смотреть execution
plans и давать советы по тому какой сет индексов построить. Иногда помогает переход
в архитектуру
Key-Value dbms (если это только не противоречит бизнесу). Поэтому я не скажу
что это совет. Это скорее мысль, о чем можно говорить с бизнесом.