¡Hola, chicos!

Recientemente participé de un live en el canal dotNET, junto a mi amigo y leyenda en el área de desarrollo .NET, Renato Groffe, con el objetivo de presentar, de manera práctica, el uso de K6 en escenarios de pruebas de carga que involucran bases de datos relacionales. La propuesta fue demostrar cómo la herramienta puede ser utilizada no sólo para APIs o aplicaciones web, sino también como un componente relevante en pruebas de rendimiento, capacidad y generación de datos en entornos de datos.

A lo largo del directo, exploramos conceptos técnicos, decisiones arquitectónicas, limitaciones encontradas y buenas prácticas observadas al utilizar K6 en proyectos reales.

Enlace de registro:
https://www.meetup.com/pt-BR/dotnet-sao-paulo/events/311572390/

 

Enlace de transmisión:

 

Motivación para usar K6

La elección de K6 como herramienta principal para las pruebas presentadas se debe principalmente a su simplicidad de uso combinada con un buen nivel de rendimiento. A diferencia de las herramientas más tradicionales, K6 le permite definir escenarios de prueba utilizando scripts JavaScript, lo que reduce significativamente la curva de aprendizaje.

Además, el K6 está desarrollado en Ir, lenguaje ampliamente conocido por su buen soporte para paralelismo y eficiencia en ejecución concurrente, características importantes en escenarios de pruebas de carga.

Pruebas de carga más allá de API y aplicaciones web

Un punto destacado durante el directo fue la expansión del uso de K6 más allá de las pruebas de API o de interfaz gráfica. En muchos escenarios, especialmente en proyectos de datos, el cuello de botella no está en la aplicación, sino en la base de datos.

Usar K6 para probar directamente bases de datos relacionales permite evaluar aspectos como:

  • Capacidad de ingesta de datos
  • Comportamiento en competencia
  • Tiempo medio de ejecución de la operación
  • Límites de la infraestructura antes de la degradación del servicio

Estas pruebas son especialmente útiles en escenarios de carga inicial, procesamiento por lotes y simulaciones de entornos de producción.

Uso de extensiones y controladores de bases de datos

De forma predeterminada, K6 admite pruebas de API y navegación web. Para trabajar con bases de datos, es necesario generar un ejecutable personalizado utilizando el XK6, incorporando extensiones específicas.

Durante la demostración, presenté el proceso de construcción de un ejecutable K6 que contiene:

  • Extensión genérica para SQL
  • Controladores específicos para SQL Server, PostgreSQL y MySQL
  • Extensión para generar datos ficticios (Faker)

Este proceso permite a K6 ejecutar comandos SQL directamente, acercando las pruebas a la realidad de producción.

Generación de datos ficticios de forma controlada

Otro aspecto importante abordado fue la generación de datos ficticios. En entornos de prueba, la creación manual de grandes cantidades de datos a menudo genera inconsistencias y problemas de calidad.

El uso de Faker integrado con K6 le permite generar datos coherentes, con una estructura consistente y sin riesgo de contenido inapropiado. Cada iteración de K6 representa una ejecución completa de un escenario, como la inserción de un registro, facilitando la simulación de cargas en competencia de forma controlada.

Este tipo de enfoque es útil para:

  • Creación masiva de datos rápida
  • Pruebas de rendimiento y volumen.
  • Montaje de pruebas de concepto y demostraciones técnicas.

Integración con ductos y uso de contenedores.

Durante el directo, todas las demostraciones se llevaron a cabo utilizando pipelines automatizados, ejecutándose en contenedores de bases de datos oficiales. Esta elección tenía como objetivo acercar el escenario de prueba a la realidad de los entornos corporativos.

Algunas decisiones técnicas discutidas incluyeron:

  • Uso de SQL Server 2022 en un contenedor de Linux, debido a la inestabilidad en las versiones más nuevas
  • Elección cuidadosa de la versión del sistema operativo base para garantizar la disponibilidad de herramientas como SQLCMD
  • Parametrización de cadenas de conexión y variables sensibles mediante variables de entorno y grupos de variables.

Estas precauciones reducen las fallas de las tuberías y facilitan la reproducibilidad de las pruebas.

Resultados observados en las pruebas.

Se realizaron pruebas de carga sobre diferentes bases de datos, con variaciones en el número de usuarios simultáneos y el volumen de iteraciones. Los resultados demostraron altas tasas de inserción y tiempos de ejecución promedio muy reducidos, incluso en entornos basados ​​en contenedores.

Más relevante que los números absolutos fue la posibilidad de medir, comparar y comprender el comportamiento de cada banco bajo diferentes niveles de carga, brindando apoyo a las decisiones técnicas y de infraestructura.

Aplicaciones prácticas de K6 en proyectos de datos.

A lo largo del directo, destaqué que el K6 no debe verse sólo como una herramienta para pruebas de carga extrema. Se puede utilizar en diferentes contextos, tales como:

  • Evaluación de capacidad antes de pasar a producción.
  • Generación controlada de datos ficticios
  • Pruebas de regresión de rendimiento
  • Apoyar la toma de decisiones sobre el tamaño de la infraestructura.

En proyectos reales, este tipo de pruebas permite anticipar problemas y justificar ajustes de capacidad en base a datos concretos.

ORM, base de datos y alineación empresarial

En la parte final del directo, discutimos el papel de los ORM y el momento adecuado para una intervención más profunda en la base de datos. La opinión presentada fue que los ORM son eficientes para operaciones CRUD simples, pero presentan limitaciones en consultas analíticas, informes complejos y escenarios de gran volumen.

En estos casos, el uso de SQL explícito, vistas o procedimientos específicos suele ofrecer un mejor rendimiento y un mayor control. La decisión de optimizar, sin embargo, siempre debe considerar el impacto en el negocio. No todos los problemas técnicos justifican una inversión inmediata; la atención debe centrarse en los puntos que afectan directamente a la operación.

Consideraciones finales

El live tuvo como objetivo demostrar, de forma práctica y transparente, cómo se puede utilizar K6 en escenarios reales que involucran bases de datos, pruebas de carga y automatización. Más que presentar una herramienta, la propuesta fue discutir decisiones técnicas, limitaciones y aplicaciones prácticas.

Las pruebas de carga bien ejecutadas proporcionan datos objetivos que ayudan en la toma de decisiones, reducen los riesgos y aumentan la previsibilidad del comportamiento del entorno de producción.