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

Testes de carga

Atualmente tenho a seguinte estrutura:

Backend em node.js
Frontend em vue.js
Database postgre
PM2 pra gerenciar serviços

Atualmente tenho apenas uma VPS rodando tudo e essa aplicação precisará ser escalável (já tenho uma estrutura pra kubernetes porém acredito que nesse momento inicial não seja necessário).

Quero fazer alguns testes de carga pra saber de fato quantas requisições apenas uma vps aguentaria.

Como vocês normalmente costumam fazer esses testes?

Utilizei jMetter algumas vezes, porém parece que os resultados são meio aleatorios.

Carregando publicação patrocinada...
4

Sempre utilizei o jMetter, e sempre me atendeu bem...

Uma coisa que você precisa ter em mente é que os teus testes precisam ser padronizados e replicáveis se você quiser que eles sejam consistentes. Ou seja, você precisa executar eles com o mesmo ambiente e mesma carga.

Por exemplo, o ideal seria você ter um ambiente de teste/homologação, semelhante ao teu ambiente produtivo, e que você possa limpar (ou popular) a base de dados sempre que necessário, pois a quantidade de dados no teu database pode impactar no resultado final do teu teste (visto que mais dados tendem a levar mais tempo para serem carregados), então você precisa achar um ponto ideal que lhe atenda, que pode ser uma base zerada, ou com uma quantidade x de registros no inicio...outra coisa importante também, é que se, por questão de custos, você estiver rodando isso tudo numa máquina só, os serviços vão concorrer entre si e isso vai ser meio aleatório mesmo...pra diminuir essa aleatoriedade, você pode colocar cada serviço num container docker e limitar a quantidade de vcpu e memória do container...

1

Agradeço a resposta!

Porém, ao containerizar tudo (atualmente foi tudo instalado manualmente e feito um clone do repositório na vps), eu precisaria de um orquestrador correto?

Teríamos o swarm e o próprio compose pra tal afinidade.

Oque você recomenda?

3

Nesse caso, eu sou da opinião que a melhor ferramenta é aquela que você sabe usar.

Mas, como você disse que atualmente está com uma máquina e tudo instalado nela, não seria necessário utilizar o swarm, o próprio compose já daria conta disso, e depois quando isso evoluir (para um cluster), pode ir para o kubernetes sem estresse...

1

É, quem saiba a melhor coisa seja utilizar o compose mesmo, até pra um possivel escalonamento fica mais facil com containers.

Agradeço a resposta :D

2

Usei recentemente o K6 para realizar testes de carga relacionados ao provisionamento de novas instâncias no VMSS e foi tranquilo para minha necessidade. Casa com a stack que você tá usando e os reports de resultados são ótimos, dá uma olhada.

Veja um exemplo simples retirado da documentação oficial

import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
  // Key configurations for avg load test in this section
  stages: [
    { duration: '5m', target: 100 }, // traffic ramp-up from 1 to 100 users over 5 minutes.
    { duration: '30m', target: 100 }, // stay at 100 users for 30 minutes
    { duration: '5m', target: 0 }, // ramp-down to 0 users
  ],
};

export default () => {
  const urlRes = http.get('https://test-api.k6.io');
  sleep(1);
};
0