ANALISIS DE CAPACIDAD ENTREGA 5 - fredyalarcon/desarrollo-sw-nube-hfma GitHub Wiki

Escenarios y Pruebas de capacidad

Plan de pruebas

Objetivo

Evaluar la capacidad y la estabilidad de la aplicación de conversión de videos en situaciones de alta carga con las modificaciones que se realizan utilizando funcionalidades propias de la nube

Objetivos específicos

  • Determinar la capacidad del servicio Cloud run para desplegar el API y el worker.

  • Determinar el tiempo promedio y total de conversión de archivos con múltiples instancias del worker.

  • Determinar la funcionalidad de suscripciones tipo push de Pub/Sub y el funcionamiento auto escalamiento de la capa batch.

Descripción general

Se va a probar la aplicación creando 100 mensajes, estos mensajes deben ser procesados inicialmente por un único contenedor, debido a que una única instancia es capaz de procesar un solo video en 15 segundos con el uso casi total de CPU, se espera que la estrategia de auto escalamiento genere la creación otros contenedores, para lo cuál se quiere determinar si el rendimiento es mayor o menor según la entrega anterior.

Escenario Capa Batch (Worker)

100 mensajes en el tópico listo para ser procesado, se espera que el servicio Cloud run ejecute todos los mensajes y auto escale a un numero de contenedores que sea necesario para dicha carga.

Escenario Capa WEB

Con el uso de la herramienta de Jmeter se enviaron mensajes empezando por un usuario concurrente por segundo y aumentándolo periódicamente hasta llegar un total de 10 usuarios concurrentes por segundo, estas pruebas no se pueden hacer con valores mas altos por limitaciones en la herramienta de pruebas y al tamaño del archivo.

Tipos de pruebas

Prueba de Capacidad worker: para determinar la capacidad y el tiempo máximo de conversión de 100 archivos con Cloud run. Prueba de Capacidad WEB: para determinar la capacidad y el tiempo de respuesta para crear las tareas.

Herramientas para la prueba

  • Apache JMeter Version 5.6.2:: es una herramienta de código abierto desarrollada por la Apache Software Foundation y se utiliza principalmente para probar el rendimiento de aplicaciones web y servicios.

  • Cloud run metrics:: Esta herramienta de GCP nos permite realizar un monitoreo sobre los recursos en Cloud run.

Métricas de evaluación

Las métricas que se evaluarán durante las pruebas incluyen:

  • Tasa de errores.

  • Tiempo por proceso

  • Tiempo total en atender todas las tareas

  • Tiempo promedio en atender una sola tarea

  • Porcentaje de utilización de los recursos de cómputo.

Riesgos

No se va a medir lo siguiente:

  • Rendimiento de la base de datos.

  • Rendimiento de la cola Pub/Sub

  • Las pruebas se van a realizar con archivos de tamaño de 1,3 MB debido a que la herramienta seleccionada (Jmeter) para realizar las solicitudes afecta las pruebas cuando se envían archivos de gran tamaño(10MB).

La conversión de archivos únicamente se realizará con archivos MP4 a AVI.

Resultados y conclusiones

Prueba realizada:

Capa Worker

Inicialmente se hicieron unas pruebas en el worker con contenedores de un core de CPU y 2 GB de ram, pero no fue posible procesar los archivos debido a problemas de desbordamiento de memoria. image

Para solucionar el problema se modifico el contenedor para contar con los mismos recursos de las pruebas de semanas anteriores dos core de CPU con 8 GB de ram.

image

Al repetir las pruebas se procesaron los 100 mensajes enviados desde el tópico de tareas en Pub/Sub, con un tiempo total de ejecución de 5 minutos y 30 segundos, un tiempo promedio de 3.30 segundos por video. Estos valores se lograron con 5 contenedores, los cuales escalaron como se puede ver a continuación:

image

Capa WEB

Después de realizar las pruebas descritas para la capa WEB todos los mensajes fueron procesados correctamente como se puede ver en la siguiente imagen.

image

Se evidencio que la capa WEB mantiene unos números bajos de utilización de CPU, con la carga establecida para estas pruebas.

image

Conclusiones

  • Del resultado de las pruebas se puede decir que: Debido a la baja capacidad de un único contenedor para procesar videos por las limitaciones de CPU, el auto escalamiento siempre será necesario después que un contenedor empiece a procesar uno o más videos, por tanto se recomienda aumentar las capacidades del contenedor base para poder soportar varios videos a la vez antes de superar las capacidades del contenedor, de esta manera se auto escalaria solo cuando el contenedor activo no este disponible para procesar más videos, también fue posible observar que por defecto pub/sub hace un re intento del envío del mensaje cuando recibe códigos de respuesta 4xx o 5xx y sólo marca como procesado el mensaje si el código es de tipo 2xx.

  • El rendimiento usando Cloud run fue un 50% mejor que las configuraciones en el despliegue de la última entrega, si también tenemos en cuenta la facilidad de uso del servicio y si la falta de control no es un factor determinante podríamos concluir que Cloud run se ajusta mas a las necesidades de nuestro proyecto.

  • También se pudo evidencias un mejor rendimiento en el servicio del API de la capa WEB respecto a las pruebas de la entrega anterior, el tiempo para auto escalar y activar un nuevo contenedor es más rápido que lo evidenciado anteriormente con máquinas virtuales.

  • Se mantienen los mismos tiempos de respuesta respecto a las pruebas anteriores pero se evidencia mejor rendimiento en la máquina y mayor velocidad en el auto escalamiento de la capa WEB.