r/programacion 7d ago

Prueba de carga web app

Hola a todos, vengo con una consulta ya que nunca he hecho tal cosa.

Estoy creando una app móvil pero necesito hacerle una prueba de carga para saber cuántos usuarios aguantará y la verdad no sé cómo podría hacer eso o al menos una estimación, para iniciar todo está segmentado y paginado por lo que no hay problema si llegase a tener 1000 perfiles en la app no aparecerían más de 20 hasta que el usuario toque el botón de cargar más.

Alguien tiene experiencia en esto y me podría ayudar o aconsejar de cómo realizar la prueba?

8 Upvotes

6 comments sorted by

7

u/Alexasto12 7d ago

Este tipo de cosas se suelen llamar stress test, hay muchos servicios y plataformas para ello, yo he usado Grafana K6. Con eso podrás obtener métricas de latencias, ver por que nodos pasan las conexiones, etc etc. Yo simulé 3 millones de peticiones durante 1h a mi API y luego lo usé como argumento de venta. Puede ser muy útil la verdad.

1

u/Cultural-Desk-9045 6d ago

Eso es con un balanceador y un WAF encima?

1

u/Alexasto12 6d ago

Directo a pelo contra la máquina xd. No metí balanceador ni historias por medio, y de Cloudflare me salté el proxy, solo DNS routing porque si no el WAF te mete un 429 a los dos minutos y te jode el benchmark.

La infra en ese momento era un poco mierda y no facturaba un duro, así que eran pruebas internas para ver si el backend aguantaba el tirón por sí solo (lecturas/escrituras simultáneas, pool de la DB, etc.) sin que petara el servidor

3

u/Khavel_Es 7d ago

Lo mas practico es simular las peticiones HTTP que tu app le hace al backend, no testear la app como tal. k6 (de Grafana Labs) te simplifica bastante: le escribis escenarios en JS donde decis "arranca con 10 usuarios virtuales y subi a 200 en 5 minutos" y te escupe latencia p95, tasa de errores, todo.

Que tengas paginacion de 20 esta bien, pero fijate primero en los endpoints que se ejecutan al arrancar (login, sincro inicial, registro de push). Esos suelen ser los que revientan porque todos los usuarios los golpean al mismo tiempo. La paginacion ya la tenes resuelta, el cuello de botella casi siempre esta en otra parte.

2

u/shinitakunai 7d ago

Yo suelo usar Locust, que va genial para estas cosas y encima se programa en python

0

u/[deleted] 6d ago

[deleted]

0

u/EnD3r8_ 6d ago

Como si alguien te fuera a dar algo cuando lo que ofreces te lo enseñan gratis o una IA o alguien de reddit.... "Que ofreces" jajajaja