¿Cómo escalo una aplicación Java con una API REST y una base de datos?

Tengo una aplicación Java sin estado típica que proporciona una API REST y realiza actualizaciones (CRUD) en una base de datos Postgresql.

Sin embargo, el número de clientes está creciendo y siento la necesidad de

Aumente la redundancia, de modo que si uno falla, tenga lugar otro¿Para esto probablemente necesitaré un equilibrador de carga?Aumente la velocidad de respuesta al no inundar la red y la CPU de un solo servidor (sin embargo, ¿cómo no se inundará el equilibrador de carga?)Tal vez tendré que distribuir la base de datos?Quiero poder actualizar mi aplicación sin problemas (he visto una cosita llamada kubernetes haciendo esto): elimine cada nodo redundante uno por uno e inmediatamente reemplácelo con una versión actualizadaMi aplicación también almacena algunos archivos de imagen, que crecen rápidamente en tamaño de disco, necesito poder distribuirlosTodo esto debe ser de respaldo

Este es el diagrama de lo que tengo ahora (tanto la aplicación Java como la base de datos están en el mismo servidor):

¿Cuál es la mejor / correcta forma de escalar esto?

¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta