Como dimensiono um aplicativo Java com uma API REST e um banco de dados?
Eu tenho um aplicativo Java sem estado típico que fornece uma API REST e executa atualizações (CRUD) em um banco de dados Postgresql.
No entanto, o número de clientes está crescendo e sinto a necessidade de
Aumente a redundância, para que, se um falhar, outro ocorraPara isso, provavelmente vou precisar de um balanceador de carga?Aumente a velocidade de resposta não inundando a rede e a CPU de apenas um servidor (no entanto, como o balanceador de carga não será inundado?)Talvez eu precise distribuir o banco de dados?Quero poder atualizar meu aplicativo sem problemas (vi uma coisa chamada kubernetes fazendo isso): Mate cada nó redundante um por um e substitua-o imediatamente por uma versão atualizadaMeu aplicativo também armazena alguns arquivos de imagem, que crescem rapidamente no tamanho do disco, preciso poder distribuí-losTudo isso deve ser capaz de fazer backupEste é o diagrama do que tenho agora (o aplicativo Java e o DB estão no mesmo servidor):
Qual é a melhor / maneira correta de dimensionar isso?
Obrigado!