Как мне масштабировать приложение Java с REST API и базой данных?

У меня есть типичное Java-приложение без сохранения состояния, которое предоставляет REST API и выполняет обновления (CRUD) в базе данных Postgresql.

Однако количество клиентов растет, и я чувствую необходимость

Увеличьте избыточность, чтобы в случае неудачи произошел другойДля этого мне вероятно понадобится балансировщик нагрузки?Увеличьте скорость отклика, не затопляя сеть и ЦП только одного сервера (однако, как балансировщик нагрузки не будет загружен?)Может быть, мне нужно будет распространять базу данных?Я хочу иметь возможность беспрепятственно обновлять свое приложение (я видел, как это делает штука под названием kubernetes): убейте каждый избыточный узел один за другим и немедленно замените его обновленной версией.Мое приложение также хранит некоторые файлы изображений, которые быстро растут в размере диска, я должен иметь возможность распространять ихВсе это должно быть с возможностью резервного копирования

Вот диаграмма того, что у меня сейчас (и приложение Java, и БД находятся на одном сервере):

Каков наилучший / правильный способ масштабирования этого?

Спасибо!