Skip to content

Experimento2

Anderson Giovanny Castiblanco Prieto edited this page Sep 29, 2023 · 2 revisions

Experimento 2 - Validación de tácticas para favorecer la escalabilidad en el proyecto ABC Jobs

Título del  experimento Validación de tácticas para favorecer la escalabilidad en el proyecto ABC Jobs
Propósito del  experimento Validar la hipótesis donde se plantea que al implementar un conjunto de tácticas enfocadas a favorecer la escalabilidad y teniendo un mínimo de 3 instancias de un pod encendido, se logra atender un aumento en la carga de trabajo del microservicio de PruebasOrquestador, pasando de 30 a 100 candidatos y cumpliendo el objetivo de latencia en las respuestas de 0.3 segundos.
Resultados  esperados Al finalizar el experimento se espera comprobar que teniendo un mínimo de 3 pods encendidos (o en su defecto encontrar la cantidad correcta) es suficiente para mantener el nivel de respuesta en 0.3 segundos incluso cuando la carga de candidatos presentando pruebas aumenta de 30 a 100.
Recursos  requeridos Portátiles de desarrollo, Visual Studio Code, Python, Docker, Jmeter, AWS ElastiCache, AWS DynamoDB,  AWS EKS.
Elementos de  arquitectura  involucrados Los componentes involucrados en el experimento son: PruebasOrquestador, Pruebas, Preguntas, Candidatos y AWS ElastiCache, los cuales se pueden observar en las vistas funcional y de despliegue.
Esfuerzo estimado 4 ingenieros, 2,5 horas cada uno en configuración y ejecución de pruebas, para un total de 10 horas

Hipótesis de diseño

Hipótesis de diseño .
Punto de  sensibilidad El punto de sensibilidad a probar es el pod del microservicio PruebasOrquestador que se mantiene encendido en conjunto con la cache, para responder al aumento de carga inicial manteniendo la latencia, lo que permite que el sistema tenga tiempo suficiente para escalar los pods necesarios para soportar la carga máxima de 100 cantidatos concurrentes.
Historia de  arquitectura  asociada HU-74 Escalabilidad al atender candidatos presentando pruebas Como administrador de ABC Jobs cuando ingreso al sistema de pruebas, dado que el sistema se encuentra en operación normal, quiero poder ejecutar pruebas con concurrencia de 30 hasta 100 usuarios a la vez para continuar con los procesos de selección. Esto debe suceder, el 100% de las veces
Nivel de  incertidumbre El nivel de incertidumbre es medio. Tenemos experiencia y conocimiento configurando arquitecturas que auto escalan, sin embargo, tenemos dudas sobre el número mínimo de pods que debemos mantener para escalar como se requiere, sin comprometer la latencia.

Estilos de Arquitectura   asociados al experimento

Estilos de Arquitectura   asociados al experimento Análisis (Atributos de calidad que favorece y desfavorece)
Microservicios Favorece - Disponibilidad: Favorece el desacoplamiento, lo que permite retirar más fácilmente de la operación un servicio que esté fallando y reintegrarlo sin afectar la operación del sistema. - Escalabilidad: El estilo de Microservicios permite generar múltiples instancias de los componentes que se requieran y balancear la carga entre éstas cuando se presenten picos de requerimientos. Desfavorece - Seguridad: Inicialmente se vuelve más compleja de gestionar dado que la superficie de ataque se amplía por cada microservicio, sin embargo, con patrones como API Gateway se reduce la superficie de ataque y se facilita la gestión para mitigar los riegos de una solución distribuida, aunque todavía deja puntos por cubrir. - Facilidad de Pruebas: Teniendo en cuenta que la solución está basada en componentes distribuidos, la ejecución de las pruebas se vuelve más compleja. - Facilidad de despliegue: Cada servicio al tener nodos propios de despliegue y ejecución hace más complejo el despliegue general del sistema.

Tácticas de Arquitectura   asociadas al experimento

Tácticas de Arquitectura   asociadas al experimento Descripción
Manejo de recursos compartidos - múltiples copias de datos Utilizando el servicio de cache AWS ElastiCache queremos generar copias de datos temporales de la información relacionada a las preguntas, respuestas y pruebas que los candidatos están presentando. Esperamos de esta táctica que nos permita alcanzar los objetivos del ASR y la HU relacionadas a este experimento
Manejo de recursos compartidos - múltiples copias de computación Los microservicios que vamos a generar van a ser desplegados en instancias contenerizadas y auto-gestionadas por AWS, lo cual incluye el escalado de instancias cuando se cumplen los criterios parametrizados en los servicios.

Listado de componentes (Microservicios) involucrados en el experimento

Microservicio​ Propósito y comportamiento esperado​ Tecnología ​ Asociada​
OrquestadorPruebas​ Componente encargado de recibir las peticiones del API Gateway y dirigirlo al componente encargado, ya sea Pruebas, Preguntas o Candidatos para obtener una respuesta u obtenerlo del cache si existe y/o almacenar respuestas previamente obtenidas. Se espera que orqueste los pasos relacionados a la funcionalidad de presentación de pruebas.​ Python / Flask​
Pruebas​ Microservicio donde se configurarán las diferentes pruebas a las que puede tener acceso un candidato.​ Python / Flask​
Preguntas​ Microservicio donde se implementará el banco de preguntas para presentar y configurar en las diferentes pruebas.​ Python / Flask​
Candidatos​ Microservicio donde se implementarán las funciones de CRUD relacionadas a los candidatos y que almacenará los resultados de las pruebas presentadas.​ Python / Flask​
Cache (si bien no es un microservicio, si es un componente)​ Componente cuyo propósito es almacenar de forma temporal la información relacionada a las pruebas que los candidatos están presentando. Esto es, preguntas, respuestas, resultados. Se espera que la eficiencia de este tipo de componentes contribuya de forma significativa a evaluar las preguntas en máximo 0.3 segundos.​ AWS ElastiCache​

Tecnología asociada con el experimento

Tecnología asociada con el experimento (Desarrollo, infraestructura, almacenamiento) Justificación
Lenguajes  de programación Python
Plataforma de despliegue Docker
Bases de datos SQLite
Herramientas de análisis SQLite-Excel
Librerías SQLAlchemy
Frameworks de desarrollo Flask

Listado de conectores  involucrados en el experimento

Conector​ Comportamiento deseado ​ en el experimento​ Tecnología Asociada​
API REST a través de HTTPS​ Comunicación síncrona entre el componente OrquestadorPruebas, los demás microservicios y la Cache. Se espera que permita la comunicación con baja latencia entre el cliente y los diferentes microservicios.​ Python/Flask​

Distribución de actividades por integrante

Integrante​ Tareas a realizar​ Esfuerzo Estimado​
​ Marlon Agón​ ​ Configuración de la infraestructura para despliegue de microservicios usando ​EKS 2h​
​ Ana Lucia Forero​ Ejecución de pruebas usando la herramienta Jmeter y medición de los resultados 3h​
​ Cesar Solano​ ​ Ejecución de pruebas usando la herramienta Jmeter y medición de los resultados​ 3h​
​ Anderson Castiblanco​ Documentación de resultados de ejecución pruebas ​ 2h​

Clone this wiki locally