View a markdown version of this page

Backend - Pruebas de carga distribuidas en AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Backend

El backend consiste en un contenedor, una canalización de imágenes, una canalización y un motor de pruebas de carga que se utilizan para generar la carga para las pruebas. Interactúas con el backend a través del front-end. Además, las tareas de Amazon ECS en AWS Fargate lanzadas para cada prueba se etiquetan con un identificador de prueba (ID) único. Estas etiquetas de identificación de prueba se pueden usar para ayudarlo a monitorear los costos de esta solución. Para obtener información adicional, consulte las etiquetas de asignación de User-Defined costos en la guía del usuario de facturación y administración de costos de AWS.

Canalización de imágenes de contenedores

Esta solución utiliza imágenes de contenedor creadas con Amazon Linux 2023 como imagen base. AWS aloja estas imágenes en un repositorio público de Amazon Elastic Container Registry (Amazon ECR). La solución las usa para ejecutar tareas en el clúster Amazon ECS en AWS Fargate.

La imagen que utilice una tarea depende del modo de forma del tráfico de la prueba. Para obtener más información sobre los modos, consulte Modos de forma de tráfico.

  • El modo estándar usa una sola imagen con el marco de pruebas de carga de Taurus instalado. Taurus es un marco de automatización de pruebas de código abierto que admite JMeter, k6, Locust y otras herramientas de prueba. Aplica los parámetros de carga que configuraste en la consola a cualquier marco que utilice la prueba.

  • El modo nativo usa una imagen dedicada para cada marco de prueba (JMeter, k6 o Locust), sin Taurus. Cada imagen ejecuta su marco directamente en el script.

Para obtener más información, consulte la sección de personalización de imágenes de contenedores de esta guía.

Aprovisionamiento del marco de pruebas

Los tres marcos de prueba compatibles se aprovisionan en diferentes momentos del ciclo de vida de la solución para equilibrar el tamaño de la imagen con la flexibilidad de la versión:

  • Apache JMeter: se almacena en un bucket de S3 de su cuenta durante la implementación de la pila y se extrae durante el tiempo de ejecución de la prueba cuando se ejecuta una prueba de JMeter o Simple HTTP Endpoint.

  • Grafana k6: se descarga directamente del proveedor del marco y se extrae durante el tiempo de ejecución de la prueba, solo cuando se ejecuta una prueba de k6.

  • Locust: se instala en la imagen del contenedor en el momento de la compilación y permanece inactivo hasta que se ejecuta una prueba de Locust.

El aprovisionamiento funciona de la misma manera en ambos modos de configuración del tráfico. Las imágenes del modo nativo obtienen cada marco en el mismo punto del ciclo de vida que la imagen del modo estándar. Por lo tanto, los requisitos de red e implementación que se indican a continuación se aplican a ambos.

nota

k6 requiere acceso de red saliente a la versión k6 de Grafana durante el tiempo de ejecución de la prueba. La salida restringida provocará que las pruebas de k6 fallen en la etapa de descarga.

Infraestructura de pruebas

Además de la CloudFormation plantilla principal, la solución proporciona una plantilla regional para lanzar los recursos necesarios para realizar las pruebas en varias regiones. La solución almacena esta plantilla en Amazon S3 y proporciona un enlace a ella en la consola web. Cada pila regional incluye una VPC, un clúster de AWS Fargate y una función Lambda para procesar datos en tiempo real.

Para obtener más información sobre cómo implementar la infraestructura de prueba en otras regiones, consulte la sección de Multi-Region implementación de esta guía.

Cargue el motor de pruebas

La solución Distributed Load Testing utiliza Amazon Elastic Container Service (Amazon ECS) y AWS Fargate para simular miles de usuarios simultáneos en varias regiones y generar solicitudes HTTP a un ritmo sostenido.

Los parámetros de prueba se definen mediante la consola web incluida. La solución usa estos parámetros para generar un escenario de prueba de JSON y lo almacena en Amazon S3. Para obtener más información sobre los scripts de prueba y los parámetros de prueba, consulte los tipos de prueba en esta sección.

Una máquina de estados de AWS Step Functions ejecuta y monitorea las tareas de Amazon ECS en un clúster de AWS Fargate. La máquina de estados de AWS Step Functions incluye una función de AWS Lambda que comprueba el estado de las tareas, una función de AWS Lambda que ejecuta tareas, una función de AWS Lambda que ejecuta tareas, una función de AWS Lambda de cancelación de tareas y una función de AWS Lambda de análisis de resultados. Para obtener más información sobre el flujo de trabajo, consulte la sección Flujo de trabajo de ejecución de pruebas de esta guía. Para obtener más información sobre los resultados de las pruebas, consulte la sección Explorar los resultados de las pruebas de esta guía. Para obtener más información sobre el flujo de trabajo de cancelación de pruebas, consulte la sección Cancelar una prueba de esta guía.

Si seleccionas datos en tiempo real, la solución inicia una función Lambda de publicación de datos en tiempo real en cada región a partir de los CloudWatch registros que corresponden a las tareas de Fargate en esa región. A continuación, la solución procesa y publica los datos sobre un tema de AWS IoT Core en la región en la que se lanzó el paquete principal. Para obtener más información, consulte la sección Monitorización con datos en tiempo real de esta guía.