-
Notifications
You must be signed in to change notification settings - Fork 1
Experimento1
Anderson Giovanny Castiblanco Prieto edited this page Sep 29, 2023
·
1 revision
| Título del experimento | Validación de tácticas para favorecer la latencia en el proyecto ABC Jobs |
|---|---|
| Propósito del experimento | Validar la hipótesis donde se plantea que al implementar una táctica de múltiples instancias de datos usando un componente de cache, la eficiencia y velocidad de dicho componente permite realizar la evaluación de una pregunta en menos de 0.3 segundos. |
| Resultados esperados | Al finalizar el experimento se espera que mínimo el 90% de las preguntas enviadas sean evaluadas en 0.3 segundos o menos. |
| Recursos requeridos | Portátiles de desarrollo, Visual Studio Code, Python, Docker, Amazon ElastiCache. |
| Elementos de arquitectura involucrados | Los componentes involucrados en el experimento son: PruebasOrquestador, Pruebas, Preguntas, Candidatos, AWS RDS y AWS ElastiCache. Los cuales se pueden observar en las vistas funcional y de despliegue. |
| Esfuerzo estimado | 4 ingenieros, 8.5 horas por ingeniero en promedio para implementación, configuración, despliegue y pruebas, para un total de 34 horas |
| Punto de sensibilidad | El punto de sensibilidad, aquel que recibe mayor atención en el experimento y que consideramos crucial para cumplir el ASR, es el componente de Cache que almacenará de forma temporal la información relacionada a preguntas, respuestas y pruebas que los candidatos estén presentando. El cache manejará comunicación síncrona con el componente PruebasOrquestador |
|---|---|
| Historia de arquitectura asociada | HU-68 Latencia en la evaluación de la respuesta Como administrador de ABC Jobs cuando un candidato se encuentra resolviendo una prueba, dado que el sistema se encuentra en operación normal, quiero que evalúe su respuesta para asignar el puntaje a esa pregunta. Esto debe suceder, en menos 0.3 seg |
| Nivel de incertidumbre | Nivel medio de incertidumbre debido al conocimiento previo que tenemos sobre uso de cache, que nos lleva pensar que la hipótesis se va a validar. Sin embargo, aún nos genera dudas que se alcance el objetivo, razón por la cual se realiza este 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 | 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. |
| 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 (Desarrollo, infraestructura, almacenamiento) | Justificación |
|---|---|
| Lenguajes de programación | Python |
| Plataforma de despliegue | Docker |
| Bases de datos – Usada como Cache | AWS ElastiCache |
| Herramientas de análisis | JMeter |
| Librerías | ElastiCache.Client |
| Frameworks de desarrollo | Flask |
| 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 |
| Integrante | Tareas a realizar | Esfuerzo Estimado |
|---|---|---|
| Marlon Agón | Creación de versión base del componente Pruebas Configuración y creación tablas Amazon RDS Configuración de un cliente de ElastiCache en el microservicio Configuración de la infraestructura para despliegue de microservicios usando EKS | 4h 2h 2h 2h |
| Ana Lucia Forero | Creación de versión base del componente Preguntas Configuración de un cliente de ElastiCache en el microservicio Configuración de ElastiCache en AWS y su configuración para conexión a los microservicios | 4h 2h 2h |
| Cesar Solano | Creación de versión base del componente Candidatos Configuración de un cliente de ElastiCache en el microservicio Ejecución de pruebas usando la herramienta Jmeter y medición de los resultados | 4h 2h 2h |
| Anderson Castiblanco | Creación de versión base del componente PruebasOrquestador Configuración de un cliente de ElastiCache en el microservicio Dockerización de microservicios para despliegue en EKS | 4h 2h 2h |
- Avance-1 - Charts
- Avance-1 - Devops
- Avance-2 - Charts
- Avance-2 - Devops
- Cierre - Charts
- Cierre - Devops
- Cierre - Retrospectiva
- Cierre - Instructivo Usuario
- Cierre - Documentación Técnica
- Objetivos, Restricciones y Requisitos
- Escenarios de calidad
- Visión de Arquitectura
- Estilos Tácticas Patrones
- Experimento1
- Experimento2
- Resultados Experimentación