Executando verificação de segurança...
1
megbr
1 min de leitura ·

[DÚVIDAS] Deploy API + banco de dados + web

Há algum tempo venho desenvolvendo uma aplicação composta por: api em NestJS, banco de dados Postgres e Web em React. É uma aplicação pequena e com poucos usuários.

Cheguei num ponto em que preciso subir essa aplicação para produção e avaliando as opções o que mais me agradou foi o droplet da Digital Ocean.

Com base nas informações acima, surgiram algumas dúvidas:

  1. Somente um droplet é suficiente para os itens citados?
  2. Devo usar Docker?
  3. Faz sentido usar Github Actions neste momento para automatizar o CI/CD ou trará uma complexidade desnecessária neste momento?
  4. Caso a opção acima seja não, como fazer o deploy de maneira adequada e simples? Clone do repo?
  5. Preciso de um proxy reverso como NGINX para redirecionamento?
  6. No caso de uso do NGINX, também posso utilizá-lo para hospedagem da aplicação Web?

Espero ter feito perguntas que façam sentido. Agradeço de antemão qualquer ajuda.

Carregando publicação patrocinada...
1

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:

  1. Apenas um droplet é suficiente, até porque você define o poder computacional da máquina, o que mais faz diferença é isso.
  2. 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.
  3. 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'.
  4. 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.
  5. 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.
  6. 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.

1

Eu sempre tento optar por usar provodores nacionais apesar de um pouco mais caro:

  • Suporte em português
  • Menor latência para usuários no Brasil
  • Serviços integrados adaptados ao mercado local - Pagamentos, Mensagens
  • Conhecimento do ecosistema local - Clientes e Competidores
  • Estímulo à economia nacional. BRASIL!!

Sobre o Deploy em si:

  1. Sim.
  2. A priori sim, a menos que tenha um bom motivo para não usar.
  3. Se você não está utilziando ferramentas de CI/CD durante o desenvolvimento - quando são realmente proveitosas - não é em produção que vai começar. Não faz sentido.
  4. Recomendaria apenas usar uma boa e velha checklist em papel ou txt mesmo - talvez um scipt em python. Neste caso o clone do repo, é apenas um dos passos. O importante é você elicitar com clareza todos passos necessarios e ter uma forma eficiente e efetitiva de exercita-los no momento do deploy.
  5. O nginx pode ser usado para servir tanta a api como o frontend no mesmo dominio.