Artillery en docker

Artillery en docker

Cargando Pruebas de Carga con Artillery en Docker

En este post, aprenderemos cómo ejecutar pruebas de carga utilizando Artillery sin necesidad de instalarlo directamente en nuestra máquina. Utilizar Docker simplifica el proceso y asegura que tengamos un entorno limpio y reproducible. Usaremos el ejemplo del post de Oscar Cortés como referencia y lo probaremos en Docker.

¿Qué es Artillery?

Artillery es una herramienta de pruebas de carga y rendimiento que permite simular múltiples usuarios y evaluar cómo se comporta una aplicación bajo diferentes condiciones. Es fácil de usar y permite realizar pruebas de carga complejas con configuraciones simples.

Requisitos Previos

  1. Docker: Asegúrate de tener Docker instalado en tu máquina. Puedes seguir esta guía para instalarlo.

  2. Un archivo de configuración de Artillery: Crearemos un archivo YAML basado en el ejemplo del artículo de Oscar Cortés para definir nuestra prueba de carga, por favor leer éste post antes de continuar Link.

Pasos para Ejecutar Artillery en Docker

1. Crear el archivo de configuración

Creamos un directorio de trabajo, por ejemplo 'artillery-docker' y luego ingresamos al directorio

mkdir artillery-docker
cd artillery-docker

Basado en el ejemplo de Oscar, crea un archivo llamado load-test.yaml con el siguiente contenido:

config:
  target: "https://webhook.site/xxx"
  phases:
    - duration: 10
      arrivalRate: 10
  payload:
    path: "message.csv"
    fields:
      - "id"
      - "contacts"
    cast: true
    order: random
  http:
    # HTTP requests from all virtual users will be sent over the same ten connections.
    pool: 10
    timeout: 350

scenarios:
  - name: "Send dropoff"
    flow:
      - post:
          url: "/"
          json:
            id: "{{ id }}"
            contacts: "{{ contacts }}"

Asegúrate de personalizar el target y el url según tu aplicación.

2. Obtener archivo message.csv

Podemos obtener un archivo de ejemplo en el repositorio oficial de Artillery en Github

curl -O https://raw.githubusercontent.com/olcortesb/sam-eventbridge-api/refs/heads/main/artillery-api-eb/message.csv

3. Ejecutar Artillery en Docker

Usa el siguiente comando para ejecutar Artillery en un contenedor Docker. Asegúrate de estar en el mismo directorio donde guardaste tu archivo load-test.yaml.

docker run --rm -v $(pwd):/scripts artilleryio/artillery run /scripts/load-test.yaml --record --key XXX

En el sitio https://webhook.site/xxx podemos observar la queries que realiza Artillery durante el proceso de prueba

4. Ver los resultados

Después de ejecutar el comando anterior, Artillery generará un informe con los resultados de la prueba de carga. Puedes revisar los resultados en la terminal o guardarlos en un archivo especificando la opción -o:

docker run --rm -v $(pwd):/scripts artilleryio/artillery run -o /scripts/test.json /scripts/load-test.yaml

5. Análisis de Resultados en forma local

Puedes utilizar Artillery para generar un informe más visual a partir del archivo JSON que generaste. Para ello, ejecuta:

docker run --rm -v $(pwd):/scripts artilleryio/artillery report --output /scripts/test.html /scripts/test.json

Esto generará un archivo HTML que puedes abrir en tu navegador.

Captura parcial de los resultados

Es importante agregar, que Artillery nos informa que pronto dejará de estar disponible éste tipo de reportes, para ser reemplazado por Artillery Cloud, aquí dejo captura del aviso

6. Análisis de Resultados en Artillery Cloud

Artillery está llevando la visualización de reportes en su servicio Artillery Cloud, donde puedes ver los resultados de las pruebas, siempre que corras el comando seguido de --record --key XXX, donde XXX es la clave que se genera en el sitio de Artillery.

Debes tener en cuenta que la cantidad de reportes, retención, tamaño, etc., dependen del tipo de cuenta que tengas. Por ejemplo, la versión Developer (Free) permite 1000 reportes por mes.

Agrego captura parcial de la visualización de los resultados

Conclusión

Utilizar Artillery en Docker es una forma eficiente y rápida de realizar pruebas de carga sin ensuciar tu entorno local o también para ser utilizado en instancias remotas sin instalar demasiado software. Puedes ajustar la configuración del archivo YAML según tus necesidades específicas y repetir las pruebas tantas veces como desees.

Espero que este post te haya sido útil para comenzar con pruebas de carga usando Artillery en Docker. Para más detalles, consulta el artículo de Oscar Cortés aquí.

Referencias:

Gracias por dedicar tu tiempo a leer este artículo.

Saludos!

Maximiliano Baez