Pruebas de rendimiento en la nube – ALM Sessions 2012

En este post voy a hablar de la segunda charla que ha dado Luis Fraile durante el ALM Sessions 2012 titulada Pruebas de rendimiento en la nube.

Esta no es la primera vez que damos una charla sobre pruebas de rendimiento, yo mismo he dado varías ponencias explicando las diferencias entre las pruebas de rendimiento, carga, estrés, disponibilidad… pero esta vez queríamos dar una vuelta de tuerca y ver los beneficios que tiene Windows Azure y Visual Studio 2010 Load Testing para generar carga en nuestras aplicaciones desplegadas en la nube.

Arquitectura Pruebas Rendimiento AzurePara estar seguros de que todos sabemos de que estamos hablando, Luis ha empezado comentando las diferencias entre las pruebas de rendimiento (término aplicable al conjunto de pruebas destinadas a validar y mejorar el rendimiento de un sistema), las pruebas de carga (validación del rendimiento del sistema con el número de usuarios esperados en producción) y las pruebas de estrés (pruebas destinadas a prever el comportamiento del sistema bajo volúmenes de carga superiores a los esperados). Es importante destacar (igual que lo ha hecho Luis en su charla) que las pruebas de rendimiento siempre deben perseguir un objetivo, ya sea validar un comportamiento, optimizar el sistema o reproducir un error que se da bajo volúmenes de carga específicos (entre otros). No tiene ningún sentido crear comportamientos en el sistema poco realistas simplemente para tirar el entorno y después decir “ves, ya te dije yo que era capaz de tirar la máquina”.

Una de las ventajas de la nube es la capacidad elevada de proceso, siempre y cuando nuestro bolsillo nos lo permita. Esto último es importante, una aplicación mal optimizada nos va a costar a la larga mucho mas que una aplicación que funcione correctamente, ya que en Azure (al igual que otros sistemas cloud) pagamos por proceso (entre otras cosas). Muchos de nuestros clientes descartan inicialmente las pruebas de rendimiento, y nos limitan a la realización de pruebas funcionales, de integración, automatización… pero mas adelante se dan cuenta que este ahorro inicial en pruebas de rendimiento supone un gasto mayor en el largo plazo ya que su código sin optimizar ejecuta miles de ciclos de proceso innecesarios, y sus proveedores cloud por supuesto facturan acorde.

Las pruebas de rendimiento contra aplicaciones alojadas en Azure no son diferentes de las que realizábamos en entornos tradicionales on-premise, simplemente hay que tener en cuenta una serie de elementos, como por ejemplo la ubicación de los Test Agent de Visual Studio. Si bien el Test Controller puede permanecer en nuestra máquina o servidor local (como hacíamos antes) los generadores de carga deben estar alojados en Azure. De esta forma la carga que generamos en la aplicación bajo pruebas no tiene en cuenta el periodo de transito y los problemas que este genera (lo mas probable es que nuestra conexión de salida a internet no tenga un ancho de banda lo suficientemente grande como para cumplir los objetivos del test, y nuestra latencia de red contamine los resultados).

Pruebas de rendimiento en la nubeEn el caso específico que nos contaba Luis, nuestros compañeros de Globe ALM han desarrollado un paquete que les permite desplegar y configurar Test Agents en Azure de forma automática, aumentando de esta forma nuestra capacidad de generar carga contra Azure muy facilmente.

En resumen, realizar pruebas de rendimiento contra aplicaciones alojadas en Windows Azure es igual de fácil o difícil que realizar pruebas contra un entorno tradicional, simplemente debemos tener en cuenta que en la nube la capacidad de proceso y ancho de banda son “infinitas”, y como tal nuestra capacidad de generar carga también debe serlo. Poned vuestros generadores de carga en la nube y evitad así muchos problemas.

¿Conoces Globe Testing?

¡Descubre como mejorar tu software!