Uma explicação inicial, sou 'apenas' um freelancer, nunca trabalhei num projeto 'grande', mas já fiz alguns deploys, então os pontos são esses:
- Apenas um droplet é suficiente, até porque você define o poder computacional da máquina, o que mais faz diferença é isso.
- Eu sempre opto por docker, mas no final é decisão sua, acredito que docker é meio 'padrão' hoje em dia, talvez a pergunta fosse devo usar Docker Swarm ou Kubernetes? Independente disso acredito que essa parte é opção, da pra fazer de qualquer jeito, o importante é funcionar.
- Qualquer CI/CD é ok, não tem como repsonder isso, você pretende manter isso? É um SaaS que vai ter atualização constante? Existe um time trabalhando? Etc. Como freelancer até hoje nunca fiz algo com CI/CD até porque eu entrego um projeto e 'acabou', tenho poucos clientes 'constantes'.
- Como fazer deploy? Se for docker monta a imagem faz o pull e cria um compose pra instalar tudo, a questão é que você pode tornar isso desde algo simples como clonar um repo e usar pm2 até usar kubernetes/terraform/CI/CD etc.
- Sobre Nginx, se você precisa? Qual sentido dessa pergunta? Deve precisar né, usar um dominio/dns ao inves de ip:porta, além de deixar apenas a porta 80/443 aberta da VPS.
- Usar Nginx como hospedagem? Você vai usar o Nginx pra redirecionar, a 'hospedagem' fica na VPS, se você ta usando React é só direcionar pro 'ip' do react.
Pra mim os pontos acima não responderam 'nada', porque no final quem tem que julgar é você, mas deixo um direcionamento meu, primeiro 'siga' o KISS (Keep It Simple Stupid), faz um deploy com git clone e pronto, coloca pra funcionar primeiro, colocar em docker, criar um CI/CD, etc, isso pode ser implementado depois, não é porque você usou git clone que automaticamente não da mais pra usar docker.