QUÈ ÉS AZURE LOAD TESTING? | EINES PER A PROVES DE RENDIMENT

Qué-es-Azure-Load-Testing-Itequia

QUÈ ÉS AZURE LOAD TESTING? | EINES PER A PROVES DE RENDIMENT

Els requisits funcionals d’una aplicació basada en web o portal web solen ser clars i fàcilment comprovables, exceptuant en els processos més complexos. Tot i això, les propietats no funcionals sempre resulten més difícils de testejar i validar.

Quants usuaris concurrents poden usar-la sense afectar el rendiment?, què passa quan els usuaris augmenten massa?, què passa quan una peça redundant de la solució cau?

Per donar resposta a aquestes preguntes, calen eines molt específiques, de vegades cares, amb una configuració que sol ser complexa. Per intentar facilitar aquest procés en esforç i cost, Microsoft ha llançat al mercat Azure Load Testing.

Què és Azure Load Testing?

Azure-Load-Testing-que-es-Itequia

Azure Load Testing és un servei de prova de càrrega, totalment administrat que permet generar una càrrega d’usuaris concurrents cap a una aplicació a gran escala.

El servei simula el trànsit de les aplicacions, independentment del lloc on s’allotgin, i es pot fer servir per optimitzar el rendiment, l’escalabilitat o la capacitat de les aplicacions.

Simplement amb l’URL de l’aplicació, Azure Load Testing abstreu la complexitat i la infraestructura per executar una prova de càrrega a gran escala. A més, aquest servei ens permet automatitzar proves de regressió mitjançant l’execució de proves de càrrega com a part del flux de treball de continuous integration/continuous deployment (CI/CD), i tirar enrere versions que no aconsegueixin passar aquestes proves i els tests de regressió daquestes mateixes.

En aplicacions basades en Azure, Azure Load Testing s’implementa amb facilitat i recopila mètriques més detallades de recursos per identificar colls d’ampolla de rendiment als components de l’aplicació d’Azure.

En altres entorns Cloud, Punts de connexió privats, o Aplicacions On Premise, Azure Load Testing també ens permetrà fer tests de càrrega, amb una configuració addicional prèvia per donar accés al servei.

A més, Azure Load Testing ens permet crear una prova de càrrega mitjançant la reutilització d’un script de prova existent d’Apache JMeter (una altra de les eines de càrrega i rendiment de codi obert), per a casos de més complexitat en els que les accions dels usuaris virtuals han de ser més dinàmiques i variades. Per exemple, el pla de prova pot constar de sol·licituds a diverses aplicacions o fer servir paràmetres i dades de login diferents.

Un cop s’ha executat una prova de càrrega, els resultats es poden consultar en un Dashboard amb la informació del test, amb dades dels resultats i gràfics, a més de dades addicionals en components a Azure. D’aquesta manera es poden identificar colls d’ampolla i problemes de rendiment a les aplicacions estudiades. El servei a més manté un historial de resultats, permet comparar resultats de manera visual, i permet també descarregar resultats i fer servir eines de tercers per analitzar-los.

El servei d’Azure Load Test té un preu inicial i després un preu en funció dels usuaris virtuals/hora usats durant els testejos.

Com funciona? 

Els motors de prova (Test Engines) d’Azure Load Testing abstreuen la infraestructura necessària per executar una prova de càrrega a gran escala. Els motors de prova executen un script d’Apache JMeter proporcionat per simular que molts usuaris virtuals accedeixen concurrentment als punts de connexió de l’aplicació.

Como-funciona-Azure-Load-Testing-Itequia

En cas de crear una prova de càrrega basada simplement en una adreça URL, Azure Load Testing genera automàticament l’script de prova d’Apache JMeter. A més, per escalar horitzontalment la prova de càrrega, el servei us permet configurar el nombre de motors de prova.

Azure Load Testing utilitza Apache JMeter, versió 5.5, per executar proves de càrrega. I l’aplicació es pot allotjar a qualsevol lloc:

  • Azure 
  • Entorn local 
  • Altres núvols

 D’altra banda, per fer proves de càrrega en casos en què no hi hagi cap punt de connexió públic, s’ha d’implementar Azure Load Testing a una xarxa virtual.

Durant la prova de càrrega, el servei recopila les següents mètriques de recursos i les mostra al Dashboard:

  • Les mètriques del client proporcionen els detalls notificats pel motor de prova. Aquests detalls inclouen el nombre dusuaris virtuals, el temps de resposta de la sol·licitud o el nombre de sol·licituds per segon.
  • Les mètriques del servidor proporcionen informació sobre els components de l’aplicació d’Azure. Azure Load Testing s’integra amb Azure Monitor, incloent-hi Application Insights i Container Insights, per capturar detalls dels serveis d’Azure. En funció del tipus de servei, hi ha diferents mètriques disponibles. Per exemple, podem extreure el nombre de lectures a base de dades, el tipus de respostes HTTP o el consum de recursos de contenidor (CPU, RAM).

Azure Load Testing incorpora automàticament procediments recomanats per a les xarxes d’Azure, perquè les proves s’executin de manera segura i fiable. Les proves de càrrega s’aturen automàticament si els punts de connexió de l’aplicació o els components d’Azure inicien sol·licituds de limitació.

A més, les dades emmagatzemades a qualsevol recurs d’Azure Load Testing es xifren de manera automàtica amb claus administrades per Microsoft, que són claus administrades pel servei. Aquestes dades inclouen, per exemple, l’script d’Apache JMeter

azure-load-testing-workflow-Itequia

Exemple de prova de càrrega

Vegem ara un exemple de com realitzar una prova de càrrega a la nostra aplicació basada en web o un portal web.

Important, per realitzar una prova de càrrega, calen els prerequisits següents:

  • Un compte d’Azure amb una subscripció activa. Si no en teniu, podeu crear un compte gratuït.
  • Rol RBAC d’Azure amb permís per crear i administrar recursos a la subscripció, com Col·laborador o Propietari

Un cop es tenen totes dues condicions, el primer pas és la creació d’un recurs d’Azure Load Testing, que proporciona un lloc centralitzat per veure i administrar plans de proves, resultats de proves i artefactes relacionats:

Com crear un recurs a Azure Load Testing?

1. Iniciar sessió i seleccionar el botó de menú de la cantonada superior esquerra del portal i, a continuació, selecciona “+ Crear un recurs”

Crear-recurso-Azure-Load-Testing-Itequia

2. Usar la barra de cerca per cercar Azure Load Testing, i seleccionar Azure Load Testing.

3. Al panell d’Azure Load Testing, seleccioneu Crea.

Crear-recurso-2-Azure-Load-Testing-Itequia

4. Proporcionar la informació següent per configurar el nou recurs:

  • Subscripció 
  • Resource Group 
  • Nom
  • Ubicació geogràfica 

Seleccionar Revisar i crear. 

Hem de revisar totes les opcions de configuració i seleccionar “Crear” per iniciar la implementació.

Un cop finalitzat el procés, apareixerà un missatge d’implementació correcta.

5. Per veure el nou recurs, seleccioneu “Anar al recurs”.

Ir-al-recurso-Azure-Load-Testing-Itequia

Com crear una prova de càrrega a Azure Load Testing?

Amb el recurs Azure Load Testing creat, podem crear ràpidament una prova de càrrega des de l’Azure Portal. Només cal especificar l’adreça URL de l’aplicació web i els paràmetres bàsics de la prova.

Azure Load Testing crea l’script de prova de càrrega i proveeix la infraestructura necessària de manera transparent.

Per començar la prova de càrrega hem de:

1. Anar a la pàgina d’informació general del recurs d’Azure Load Testing i al tab d’Introducció, seleccionar “Prova ràpida”

Prueba-rapida-Azure-Load-Testing-Itequia

2. A la pàgina Prova d’inici ràpid, escriviu l’adreça URL de prova

3. Actualitzar el nombre d’usuaris virtuals que es vulgui

Si el nombre d’usuaris virtuals supera el màxim de 250 per instància del motor de prova, Azure Load Testing proveeix diversos motors de prova i distribueix la càrrega uniformement. 

Per exemple, 300 usuaris virtuals donaran com a resultat 2 motors de prova amb 150 usuaris virtuals cadascun. El màxim d’usuaris permesos és de 11250. El nombre d’usuaris usats per hora influeix en el preu del servei.  

4. Actualitzar la durada de la prova i el temps d’activitat de la prova al que es vulgui

5. Seleccionar “Executar prova” per crear i iniciar la prova de càrrega

Ejecutar-prueba-rapida-Azure-Load-Testing-Itequia

El script d’Apache JMeter generat automàticament per a la prova de càrrega es pot descarregar des del Dashboard d’execució.

Si volguéssim executar l’script localment, caldria proporcionar variables d’entorn per configurar l’adreça URL i els paràmetres de prova.

Dashboard d’execució, quines mètriques ens proporciona?

Un cop iniciada la prova de càrrega, la pàgina es redirigeix al Dashboard d’execució. Mentre s’executa la prova de càrrega, l’Azure Load Testing captura les mètriques del costat client i les mètriques del costat servidor, però el Dashboard d’execució s’usa per supervisar les mètriques del costat client. Per defecte, les dades s’actualitzen cada 5 segons.

Test-1-Dashboard-de-ejecucion-Azure-Load-Testing-Itequia

Aquest Dashboard d’execució, ens permet canviar els filtres per veure un interval de temps, un percentil de resultat o un tipus d’error específics.

Test-2-Dashboard-de-ejecucion-Azure-Load-Testing-Itequia

Una altra característica que té el servei és que, en qualsevol moment, podem modificar la configuració de la prova de càrrega, definir criteris d’error de prova o navegar al portal per supervisar les mètriques del costat servidor per als components en Azure.

Un cop la prova ha finalitzat, podrem fer servir el recurs d’Azure Load Testing per a les nostres proves següents. Tot i això, per evitar incórrer en despeses innecessàries, recomanem revisar els recursos aprovisionats per la prova, que s’hauran creat al mateix Resource Group, i eliminar els que no siguin necessaris fins a la següent prova que es vulgui realitzar.

Daniel Morales Fitó – Cloud Engineer at Itequia