Executando verificação de segurança...
2

(INFRA) Aplicação minimamente escalável para estágio inicial

Então, estou finalizando um micro-saas relativamente grande, com as seguintes tecnologias:
Node.JS, RabbitMQ, PostgreSQL e pro cliente Vue.js.

Gostaria de saber, pra deixar essa solução minimamente escalável conforme for crescendo, qual a melhor maneira?

Atualmente está em uma VPS na Digital Ocean com o node rodando no PM2 e o restante instalado "manualmente", sem docker.

Oque vocês recomendam fazer?

Carregando publicação patrocinada...
2

Oque vocês recomendam fazer?

Teste de carga

Análise

Qual o comportamento dos seus usuários? quantos requests por segundo em cada rota?

Use alguma ferramenta de teste de carga (recomendo o k6.io) e crie um script que represente o mais fiel possível o comportamento padrão dos seus usuários.

800 usuários no script devem dar uma carga o mais próximo possível de 800 usuários reais. monitorar uso de CPU, RAM, IO de todos os servidores.

Executando os testes

Monte um ambiente identico ao original, rode o teste e vá aumentando os usuários, assim você sabe o quanto sua infra atual consegue chegar.

Escale esse ambiente, coloque mais máquinas, suba o numero de usuários até ficar insustentável, você sabera exatamente qual o lugar que vai gargalar. Geralmente é o DB.

O ponto mais fraco da tua infra é o que você precisa gastar mais esforço e atenção para melhorar.

2
  • Se puder rode o back(NodeJS) em lambda ou cloud function, seu back tem que ser stateless em relação ao servidor onde roda (baixo custo)
  • No banco de dados graranta que terá IOPS suficientes no disco, é muito facil ver problemas com uso de CPU e Memoria mas muitas vezes o gargalo é o IO no disco. (custo elevado se for reservar IOPS, mas voce pode conseguir um preço mais baixo apenas aumentando o disco)
  • Deixe o front em cache em um CDN (baixo custo)
1

"relativamente grande" são quantos milhares de usuarios simultaneos?

sem entender o que seu saas faz, como faz, nem sabendo os pontos de gargalo é praticamente impossivel profetizar aqui se esta legal ou nao do jeito que vc montou o sistema hoje

1

Cerca de 800 usuarios simultaneos acessando.

É uma plataforma omnichannel de atendimentos, então a empresa que contrata vai estar usando o sistema possivelmente o dia todo (cada empresa possui em média 5 usuarios)

1

nos seus testes de carga como o sistema se comportou no geral?

talvez faça sentido (provavel que nao por agora) começar a separar as coisas, front em vue vai para uma cdn, postgres para um servidor proprio, rabbit idem, por fim o backend.

1

Desculpa não responder relacionado a sua dúvida. Mas fiquei curioso quanto a funcionalidade da plataforma. Seria tipo um "Octadesk" da vida? Para fluxo de atendimento, whatsapp, instagram, etc?

0
3

Legal. Tenho interesse em conhecer seu app, pois uso um na minha empresa (que não tem nada a ver com a área de TI), não estou muito satisfeito e não tenho tempo pra desenvolver. Poderia até te ajudar com sugestões.

Quanto a infra, eu acho muito legal o Caprover.
Ele usa o Docker Swarm para fazer a orquestração dos containers.

É muito estável e fácil de implantar. Acho que vale a pena você dar uma olhada.

Daí conforme aumenta a demanda você vai escalando os recursos do seu VPS.