Coder Social home page Coder Social logo

rats's Introduction

Herramienta simple y barata para GRANDES pruebas de carga

Snyk service vulnerabilities reported License

Motivación

Al momento de probar aplicaciones web existen muchas herramientas que se usan

  • apache ab
  • jmeter
  • soapui
  • curl
  • etc

Todas ellas tienen un límite de ejecuciones en paralelo. Generalmente dados por la capacidad de hilos en paralelos del computador donde se corren. Si necesitas mas procesamiento deberías pagar por ejemplo blazemeter u otra. Estas herramientas en general no son baratas y los planes gratis son mas limitados que correrlas localmente.

Solución propuesta

Muchas veces las pruebas de carga siemplemente son un post o get a algun endpoint durante un determinado tiempo, tantas veces en paralelo Si ese es tu caso sigue leyendo por favor.

En este repositorio se presenta una solución(barata) para este tipo de problema usando el plan gratis de Google Cloud Plattform, el cuál posee 2 millones de ejecuciones mensuales gratis y regala 300 dolares por probar la plataforma. Los pasos a seguir son:

  1. Crear una cuenta gratis en Google Cloud plattform(tienes 300 dolares para "jugar")
  2. Crear una cuenta en mlab.com(tienes 500mb gratis) para almacenar los resultados de las pruebas
  3. Crear un archivo .env.yaml con el siguiente formato
    MONGO_URI: URLQUETEDIOMLAB
    MONGO_USER: USERDEBDMLAB
    MONGO_PASS: PASSDEMLAB
    
  4. Desplegar la funcion que se encuentra en el archivo index.js un numero de veces que quieras, yo cambiaba el exports.ratQueen por exports.ratQueen2 y podia desplegar en todas las regiones de gcp nuevamente todas las ratas de la forma (cloud functions deploy ratQueen --runtime nodejs10 --trigger-http --region us-central1 --allow-unauthenticated --memory=1024MB --timeout=120s --env-vars-file=.env.yaml)
  5. Crear un script que te permita llamar a las funciones creadas variando los parámetros de entrada

Parametros de entrada:

Un ejemplo de llamada sería https://URLAFUNCTIONS.cloudfunctions.net/ratQueen?ratsNumber=2&loop=2&interval=2000&options=eyJ1cmwiOiJodHRwczovL3d3dy5nb29nbGUuY2wiLCAibWV0aG9kIjoiZ2V0In0=

  • ratsNumber: numero de ratas que va a crear la reina, esto quiere decir el número de hilos con los que esa reina le va a pegar al endpoint que le digas
  • loop: esto quiere decir el numero de veces que la reina lanzara sus ratas sobre el endpoint
  • interval: Cada cuanto tiempo va a lanzar la reina sus ratas sobre el endpoint
  • options: Este es un string en base 64 de las opciones que axios acepta

Obtención de información

Este repositorio tambien contiene un archivo(getData.js) que te permite obtener la información de mlab y guardarla en un csv para por ejemplo dibujarla con gnuplot.

Resultados

He llegado a desplegar mas de 80 funciones cambiando el nombre y la ubicación. Con las cuales he podido llegar a testear aplicaciones con 100000tps. Todo esto sin ningun cobro.

Autores

Contribuciones

Sientete libre de modificar y enviar mejoras si te interesa. Esto fue una prueba de conceptos que nos sirvió mucho y quisimos compartir. Acá puedes encontrar la forma de hacerlo Contributing

Contacto

rats's People

Contributors

snyk-bot avatar tenpo-open-source avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.