resultados_experimento - CaviedesGitHub/MiProyectoFinal GitHub Wiki
Resultados Experimento
Titulo del experimento: Detectar respuestas erróneas del componente Motor de Emparejamiento.
Propósito del experimento: Determinar si la táctica Votación detecta el 100% de respuestas erróneas del componente Motor de Emparejamiento.
Disposición de la arquitectura implementada en el experimento
Configuración del ambiente de pruebas
Escenarios de pruebas
- Escenario 1: Todas las instancias de motor de emparejamiento retornan la misma respuesta.
- Escenario 2: Una de las instancias del Motor de emparejamiento retorna una respuesta diferentes a los otras dos instancias.
- Escenario 3: Todos las instancias del Motor de emparejamiento retornan respuestas difrentes
Microservicios
Se construyeron los 3 microservicios usando Flask/Python y se desplegaron en contenedores para facilitar las pruebas.
| Microservico | puerto | Descripción |
|---|---|---|
| motor-emparejamiento-1 | 5001 | Realiza un procesamiento de una lista de canditos y retorna una lista filtrada que cumplen mejor con el perfil solicitadode acuerdo a una puntuación por cada hábilidad |
| motor-emparejamiento-2 | 5002 | Realiza un procesamiento de una lista de canditos y retorna una lista filtrada que cumplen mejor con el perfil solicitado de acuerdo a una puntuación por cada hábilidad |
| motor-emparejamiento-3 | 5003 | Realiza un procesamiento de una lista de canditos y retorna una lista filtrada que cumplen mejor con el perfil solicitado de acuerdo a una puntuación por cada hábilidad |
| perfiles | 5004 | Retorna una lista de candidatos que cumple con los criterios de busqueda |
| validador | 5005 | Compara el resultado de las tres instancias del motor de emparejamiento y evalua si hay diferencias para determinar si alguno se encuentra en falla. El cirtierio de decisión debe ser igual o mayor al 66%, es decir que 2 o más respuestas son identicas. En caso contrario responde con el mensaje: "En este momento no es posible realizar la búsqueda candidatos solicitada, vuelva a intentarlo." |
A continuación se muestra la evidencia de los 3 microservicos funcionando individualmente.
Configuración JMeter
Para los 3 escenarios se configuró JMeter para enviar una petición por segundo
Carga útil de la petición: es un objeto que contiene 3 listas con id's de las habidades requeridas.
Resultados Obtenidos
Respuesta con las lista de candidatos. Esto sucede si 2 o más instancias del microservicios tiene una respuesta identica.
En caso de que las respuesta de las instancias de los microservicios motor-emparajamiento sea distinta, se responde con el mensaje que aparece en la imagen
Igualmente, el microservicio Validador guarda en un log los registros de las valoraciones de acuerdo con las respuestas de las instancias de los microservicios motor-emparajemiento. La evidencia consiste en capturar la fehca y hora, la instancia o instancias que fallaron.
Ánalisis de Resultados
- En este experimento se logró demostrar que la táctica propuesta para la detención de fallas donde el componente validador evalúa las tres respuestas del componente Motor de Emparejamiento y detecta si alguno entregó una respuesta diferente, logrando detectar el 100% de respuestas erroneas, cumpliendo así la métrica de nuestra historia de arquitectura.
- Detectamos que los resultados del componente Validador, sean de fallo o de éxito, es conveniente tenerlos monitorizados con herramientas como Prometheus y Grafana, para una alerta temprana si llegase a ocurrir un fallo o simplemente prevenirlo.
- Se evidenció que el Motor de Emparejamiento al realizar una petición al microservicio Perfiles, que consulta la información a la base de datos, el tiempo de respuesta es lento y puede derivar en errores hacia el Validador. Si hay un alto tráfico de usuarios candidatos del sistema la respuesta que se obtiene en validador, de los tres componentes Motor de Emparejamiento será distinto, y por tanto, habrá una inconsistencia eventual.
- Teniendo en cuenta el punto anterior, una forma de solucionar el problema es incluir un componente de Cache entre el Motor de Emparejamiento y Perfiles, así la probabilidad de falla se reduciría al tener un conjunto de datos consistentes en un tiempo determinado.
Esfuerzo total invertido: Distribución de actividades por integrante
| Integrante | Tareas a realizar | Esfuerzo |
|---|---|---|
| Nelson Alonso Barreto Pastrana | - Creación del componente Validador - Creación de las pruebas con Postman. - Preparacion pruebas JMeter. - Documentación de los resultados | 20h |
| David Castro González. | - Preparación del repositorio y estructura del proyecto. - Refactor del componente Motor de Emparejamiento. - Apoyo al equipo. - Documentación de los resultados. | 8h |
| Luis Padilla | - Creación del componente Motor de Emparejamiento. | 4h |
| Edinson Morales | - Creación microservicio Perfiles - Preparación de los datos de entrada - Alistamiento de evidencias. - Análisis de resultados - Documentación de los resultados | 20h |
Total: 52 horas
Hipótesis de diseño
Punto de sensibilidad: Se busca que el componente Validador detecte las respuestas erróneas producidas por la lógica del motor el 100% de las veces. Este segundo componente se comunica con el componente “Perfiles”, encargado de la consulta de los candidatos en la base de datos con las coincidencias. A medida que crece la base de clientes el Motor de Emparejamiento puede fallar y el Validador debe garantizar que esto no ocurra.
Historia de arquitectura asociada: HA005 (Motor de emparejamiento produce respuesta erronea)
- Como sistema, cuando se produce una respuesta errónea quiero detectar esta falla y notificar al administrador de ABC para que se apliquen las respectivas soluciones. Esto debe suceder el 100% de las veces
Nivel de incertidumbre: Medio-Bajo
- Conocimiento en tácticas de arquitectura para detección de fallas. calificación 9
- Conocimiento de la tecnología, python,celery, flask. calificación 8
- Conocimiento de las herramientas de despliegue, Docker, Kubernetes. calificación 10
- Conocimiento de las herramientas de monitoreo, Jmeter. calificación 10
- Experiencia en experimentación de arquitectura. calificación 9
Incertidumbre esta evaluada en 0,8/10, donde el 9,2 es la confiabilidad de desarrollar el experimento.