Las pruebas de carga son muy importantes para medir el rendimiento del sitio web, la aplicación web y la API durante picos de tráfico normales, pesados o incluso repentinos. Esta publicación le ayudará a comprender las pruebas de carga mediante contenedores Docker con herramientas de integración continua (CI). El enfoque de Docker para las aplicaciones de prueba de carga permite compartir las pruebas entre los usuarios y replicar el entorno de prueba fácilmente mediante contenedores de Docker. Explicaremos brevemente qué es Docker y utilizando contenedores de Docker y herramientas utilizadas para cargar aplicaciones de prueba a través de CI.

 

¿Qué es Docker?

¡Docker! Es posible que hayas escuchado esta palabra fascinante entre tu equipo o leído en blogs de tecnología y también podría sonar intimidante en primer lugar. Docker es una plataforma de contenedor que empaqueta el código fuente de la aplicación y todos los paquetes de dependencia en un formulario denominado contenedor de Docker. Se asegura de que la aplicación se ejecuta en cualquier entorno sin pensar en la sobrecarga de las configuraciones del sistema operativo o del sistema. ¡No es genial!

Además, Docker es una herramienta popular que facilita la creación, implementación y ejecución de aplicaciones mediante contenedores. Debido a esto, nuestra aplicación se puede ejecutar en cualquier lugar con tener el mismo comportamiento. Y lo importante, Docker es de código abierto.

 

¿Qué es un contenedor de Docker?

Un contenedor Docker es un paquete de software ejecutable ligero, independiente que incluye todo lo que una aplicación necesita: código base, bibliotecas del sistema, herramientas del sistema y configuración. Un contenedor envuelve el código y sus dependencias juntos, lo que ayuda a la aplicación a ejecutarse de forma rápida y fiable de un entorno a otro.

 

Con Docker, los desarrolladores pueden centrarse en escribir código sin preocuparse por el sistema en el que se ejecuta la aplicación, lo que hace que la aplicación sea portátil. La forma en que se ejecuta una aplicación en el equipo local sería igual o igual a la producción.

 

Características principales de Docker

  • Fácilmente escalable. Debido a los contenedores ligeros, los contenedores acoplables pueden girar en segundos y pueden escalar fácilmente.
  • Aumenta la productividad. Facilita la sobrecarga técnica para el desarrollo de aplicaciones, configuración del entorno. Además, ayuda a ejecutar la aplicación en un entorno aislado y reduce el uso de recursos.
  • Aislamiento de aplicaciones. Cada aplicación se ejecuta de forma independiente entre sí y ejecuta aplicaciones de forma aislada.
  • Reducción de los costes de infraestructura y mantenimiento. Ayuda a admitir que las plataformas existentes se muevan a Docker fácilmente, lo que se ejecuta de forma automatizada, lo que reduce los costos de mantenimiento.
  • Enjambre. Swarm es una herramienta de agrupación y programación para contenedores Docker. Permite al usuario administrar varios contenedores implementados en varios equipos host.
  • Malla de enrutamiento. Ayuda en la forma de rutear y equilibrar el tráfico a los contenedores.

 

Beneficios de Docker

  • Docker permite la portabilidad de las aplicaciones.
  • Docker permite ciclos de lanzamiento de desarrollo más rápidos.
  • Brilla con arquitectura de microservicios.
  • Docker proporciona un entorno de aislamiento para las aplicaciones.
  • Docker permite un escalado horizontal de aplicaciones más rápido y fácil.
  • Permite un uso eficiente de los recursos.

 

Docker Inside CI Tools

La mayor ventaja con Docker es que no tendemos a preocuparnos por los conflictos de dependencia. Por ejemplo, si queremos crear un proyecto con Golang 1.11 y un proyecto con la versión Golang 1.12, Docker puede ayudar a segregar esto y crear imágenes para ambos e incluso ejecutar ambos en paralelo en un contenedor diferente sin conflictos, lo que no sería posible hacerlo en un servidor. Las imágenes cocinadas con diferentes versiones se pueden guardar en el registro y se pueden utilizar como parte de herramientas de integración continua como Jenkins.

Jenkins proporciona compatibilidad en este caso, donde selecciona las imágenes de Docker disponibles creadas para la prueba de rendimiento o prueba de integración y se guarda la sobrecarga para cocinar imágenes de Docker desde cero. El almacenamiento en caché de capas de Docker ahorra mucho tiempo aquí. Como parte de nuestra canalización de CI, necesitamos crear una imagen de Docker para una prueba de rendimiento y esta imagen se puede ejecutar mediante CI para llevar a cabo una prueba de rendimiento de la aplicación. Incluso podemos automatizar este paso, con cada adición o cambio de características, podemos ejecutar una prueba de rendimiento para comparar y salvaguardar el impacto en el rendimiento debido a cambios recientes.

 

Limitaciones del uso de Docker para pruebas de rendimiento

Aunque Docker tiene muchas ventajas, tiene un par de limitaciones al realizar pruebas de rendimiento:

  • Cuando ejecutamos una simulación de prueba de carga pesada con varios contenedores de Docker en la misma máquina, puede consumir una gran cantidad de CPU del servidor en ejecución, lo que puede afectar a nuestros resultados de prueba.
  • El informe de pruebas de rendimiento a través de Docker carece de suficientes detalles de la aplicación.
  • Es posible que necesitemos ajustar el sistema operativo host y los contenedores donde se ejecutan las pruebas de rendimiento.
  • Como los contenedores de Docker son desechables, puede provocar la pérdida del informe.

Para salvarnos de todas estas limitaciones, podemos utilizar una solución como LoadView,que se puede integrar fácilmente con Jenkins, para ayudar a automatizar el proceso de pruebas de rendimiento.

 

Integración de pruebas de carga de LoadView con Jenkins

Cada vez que probamos cualquier aplicación, probamos si funciona funcionalmente según lo esperado. Si eso funciona, marcamos que la funcionalidad de la aplicación funciona bien. Pero en el mundo real, la misma aplicación es utilizada por cientos, o incluso miles de usuarios, lo que puede traer sus propias complicaciones. Es crucial saber que su aplicación puede hacer frente a las demandas de tráfico esperadas, especialmente si es fundamental para generar ingresos.

Obviamente, no todas las aplicaciones están vinculadas a generar ingresos, pero a pesar de todo, la experiencia del usuario sigue siendo un gran factor para conseguir visitantes desde la puerta en línea hasta el mostrador de pago en línea. Si en algún momento durante ese proceso su experiencia es lenta, rezagada o simplemente confusa, perderán interés inmediatamente. No les importa que la razón por la que su experiencia es mala es porque hay miles de otros usuarios en su sitio o aplicación al mismo tiempo. Por lo que saben, piensan que son los únicos que utilizan su aplicación. Es difícil de creer, pero es verdad. Al igual que el mundo real, deben esperar en filas como todos los demás a veces. Sólo asegúrese de que su espera sea perfecta, agradable y no demasiado larga.

Tenemos que validar si nuestra aplicación puede manejar dicho tráfico. Por lo tanto, con cada cambio o nuevo desarrollo de características, podemos ejecutar pruebas de carga o estrés en la aplicación a través de nuestro plugin LoadView que se puede integrar con Jenkins.

Ahora veremos los pasos implicados para ejecutar pruebas de carga a través de la integración de Jenkins con LoadView:

  1. Antes de empezar a usar un escenario de prueba de carga de LoadView para probar la compilación en Jenkins, necesitamos tener un escenario de prueba en LoadView, donde podemos agregar una lista de API que deben probarse con esfuerzo.
  2. Para iniciar la integración con Jenkins, necesitamos un identificador único de LoadView para usarlo como token de seguridad de LoadView.
  3. En LoadView, cree un UID de integración en Integraciones de cuenta > Agregar API web de > pruebas de carga de integración. > Copie este UID de integración.

UID de integración de Docker

 

  1. Para establecer la prueba de esfuerzo, necesitaríamos el identificador de escenario de prueba. El identificador de escenario se puede encontrar en la página de configuración del escenario como se muestra a continuación.

Escenario de prueba de carga de Docker

 

Configuración del complemento LoadView en Jenkins

  1. Inicie sesión en su cuenta de Jenkins.
  2. En Jenkins, vaya a Credentials > Add Credentials > LoadView Security Token (UID). Configure y valide las credenciales:
  • Tipo: Token de seguridad de LoadView (UID).
  • Alcance: Establecer como Global.
  • ID: Deje el valor predeterminado o especifique un ID único.
  • Descripción: Introduzca una descripción única para diferenciarlo de otras pruebas.
  • UID: Escriba el UID desde su cuenta de LoadView. Una vez agregado, seleccione Validar UID para asegurarse de que Jenkins es accesible para la API LoadView.

3. A continuación, seleccione un trabajo y haga clic en Configurar

Docker Jenkins

 

  1. Vaya a Crear > acciones posteriores a la compilación > Agregar escenario de prueba de carga LoadView-Run de acción posterior a la compilación > LoadView-Run load test scenario. Especifique la configuración de LoadView Stress Test para la compilación:
  • Credenciales:seleccione la clave de API con la descripción.
  • Id. de escenario:pegue el identificador de escenario de prueba que desea usar en la compilación. Copie el identificador de la página del escenario en LoadView.
  • Umbral de error:Aquí puede establecer el umbral de error que es aceptable para su escenario específico. Si el porcentaje supera ese umbral, se marcará como un error dentro de Jenkins.
  • Tiempo promedio: Especifique el límite de tiempo de respuesta promedio durante la prueba. Al igual que el umbral de error, si se supera el límite, se registrará como error en Jenkins.
  1. Haga clic en Guardar.

Ver los resultados de las pruebas:

Cuando se ejecuta la prueba, el estado se muestra, en tiempo real, en la salida de la consola de Jenkins.

Salida de la consola de Jenkins

 

Resultados de rendimiento de Jenkins

 

Resumen: Pruebas de carga de aplicaciones de Docker

Aunque Docker tiene muchas ventajas, puede haber limitaciones al ejecutar pruebas de carga con carga pesada, como consumir mucha CPU en el servidor, cuando se usan varios contenedores de Docker en el mismo equipo, lo que puede afectar drásticamente a los resultados de las pruebas. Con una solución como LoadView, que se puede integrar fácilmente con herramientas de CI como Jenkins, podemos crear y administrar pruebas de carga con miles de conexiones simultáneas desde una nube totalmente administrada.

Este artículo fue una breve introducción al uso de Docker y Jenkins para ejecutar pruebas de carga basadas en la nube. Configure una demostración con uno de nuestros ingenieros de rendimiento para obtener más información sobre cómo configurar escenarios de prueba y configurar pruebas de carga con LoadView.

Pruebe la plataforma LoadView hoy mismo y obtenga $20 en créditos de pruebas de carga para empezar.