Sprint 2. Resultados Implementación - df-garcia/Chiper_202010_Grupo_Canem GitHub Wiki

Sprint 2. Documentanción de Resultados y Análisis

1. Diseño de escenarios de prueba

Aspectos generales de las pruebas:

  • ASR 1: Se utilizará JMeter y un volumen de datos de alrededor de 4'000.000 de datos para realizar la consulta.
  • ASR 2: Se utilizará JMeter y un volumen de datos de alrededor de 4'000.000 de datos para realizar la consulta.

Para realizar el análisis de resultados de las pruebas:

  • ASR 1: Summary report de JMeter
  • ASR 2: Summary report de JMeter
ID ASR Atributo de calidad Métrica Valor Esperado Valor Obtenido Funcionalidad a Probar No. Threads Inicial No. Threads Final Ramp Up
1 Desempeño Latencia 3 Segundos 1,093 Segundos Listado de productos a sugerir 500 2000 30 seg
2 Desempeño Escalabilidad/ Rendimiento 50 - 500 pets/seg 70,2 pets/seg Historial de pedidos realizados 120 1200 10 seg

2. Selección de tecnologías y frameworks utilizados

Para el desarrollo del Sprint 2, se usaron varias tecnologías dentro de las que se comprende: JMeter, esta herramienta posibilitaba generar pruebas de carga para verificar que la arquitectura propuesta estuviera dando resultado con los atributos de calidad propuestos en los ASRs; se utilizó una base de datos Postgres que permitía un mejor y mayor manejo de datos basados en los modelos que se construyeron con Django/Python; _Python_que fue el lenguaje principal de desarrollo de nuestro proyecto, permitió junto al framework _Django _un manejo más fácil de las consultas en la base de datos y una nueva comprensión del desarrollo basado en MVT (model, view, template).

Adicional a esto, se utilizaron Softwares especializados en la generación de datos para "poblar" las tablas de la base de datos, entre ellos se encuentra Mockaroo. Finalmente, no sobra nombrar los editores que se utilizaron para escribir el código del proyecto, estos fueron: Visual Studio Code y PyCharm.

Estas fueron las principales tecnologías y frameworks ocupados durante el desarrollo del Sprint 2.

3. Análisis de resultados

ASR1: Sugerencias de pedidos de mayor rotación en la zona.

Para observar con claridad el comportamiento del sistema a partir de los valores indicados en la tabla ubicada en la parte superior, se realizaron varias pruebas para verificar en qué momento se dejaba de cumplir con la métrica del ASR. Las pruebas que se realizaron fueron las siguientes:

#Threads Ramp up (s) Latencia promedio (ms) Rendimiento promedio (pets/s) %Error
350 1 817 60,2 0.4%
400 1 1093 51,1 0.25%
500 1 9465 22,7 42.8%
1000 1 15282 45,4 71.4%
400 10 187 15,8 0.3%
500 10 157 49,5 0.4%
1000 10 139 98,8 0.1%

A realizar las pruebas se obtuvieron diferentes resultados, dando por lo general una buena media y un bajo porcentaje de error. Al realizar la prueba con más threads y menos tiempo de ramp up, se observó una gran diferencia en el desempeño del sistema en general, llegando a valores con media de 15000 y porcentaje de error del 71,4%. No obstante, como se puede ver, el escenario en el que mejor se comporta el sistema es cuando hay 400 solicitudes cada 1 segundo. Por lo tanto, este se puede considerar como el ambiente normal para el sistema, ya que se tiene una media de 1093ms, teniendo en cuenta que el valor esperado planteado inicialmente era de 3000ms.

Evidencias:

A continuación se pueden observar varias capturas de pantalla con los resultados de las pruebas, en donde se evidencia que los valores en los que el sistema empieza a tener dificultades son 350 threads y 1(S) de ramp up:

WhatsApp Image 2020-03-27 at 03 30 59 WhatsApp Image 2020-03-27 at 03 23 28 WhatsApp Image 2020-03-27 at 03 22 17 WhatsApp Image 2020-03-27 at 03 21 18 WhatsApp Image 2020-03-27 at 03 20 27 WhatsApp Image 2020-03-27 at 03 17 44 WhatsApp Image 2020-03-27 at 03 16 29 WhatsApp Image 2020-03-27 at 03 14 20 WhatsApp Image 2020-03-27 at 03 14 11

ASR2: Historial de pedidos realizados a Chiper.

Para observar con claridad el comportamiento del sistema a partir de los valores indicados en la tabla ubicada en la parte superior del documento, se realizaron varias pruebas para verificar en qué momento se dejaba de cumplir con la métrica del ASR. Las pruebas que se realizaron fueron las siguientes:

#Threads Ramp up (s) Latencia promedio (ms) Rendimiento promedio (pets/s) %Error
150 1 1627 44,3 0.0%
200 1 2269 46,4 0.0%
250 1 2220 54,3 0.0%
260 1 5974 10,4 23.46%
275 1 12651 11,7 56.00%
500 10 500 48,9 0.0%
800 10 665 70,1 0.12%
1000 10 3816 52,8 0.1%
1200 10 2865 70,2 0.17%
1300 10 187 15,8 0.3%

Como muestra la tabla, la escalabilidad planteada inicialmente para el cumplimiento del ASR (pasar de 50 a 500 peticiones por segundo) no se pudo cumplir con las condiciones actuales del sistema. El rendimiento máximo obtenido fue de 70,2 peticiones atendidas por segundo. Este comportamiento sugiere que es necesario entender un poco más sobre la realidad del negocio para definir si este rendimiento es suficiente para satisfacer el requerimiento, o si por el contrario conviene tomar decisiones de arquitectura adicionales para ajustar la escalabilidad al valor deseado.

Además de ello, para los escenarios considerados se encontraron valores aceptables de latencia y porcentaje de error los cuales dan cuenta de la factibilidad del requerimiento del ASR.

Evidencias:

Las evidencias de los resultados mostrados se ven a continuación:

WhatsApp Image 2020-03-27 at 3 37 17 AM WhatsApp Image 2020-03-27 at 3 38 18 AM WhatsApp Image 2020-03-27 at 3 39 31 AM WhatsApp Image 2020-03-27 at 3 46 00 AM WhatsApp Image 2020-03-27 at 3 43 59 AM

WhatsApp Image 2020-03-27 at 3 52 15 AM WhatsApp Image 2020-03-27 at 3 53 11 AM WhatsApp Image 2020-03-27 at 3 54 34 AM WhatsApp Image 2020-03-27 at 3 56 01 AM WhatsApp Image 2020-03-27 at 4 02 43 AM