Experimentos de arquitectura resultados - TheCodeTeamUni/documentacion-proyecto GitHub Wiki

a) Evidencias de la experimentación

Repositorio del experimento: Repositorio experimento

Primero vamos a recapitular el experimento que tenemos planteado:
image

Este experimento tiene como foco validar la siguiente parte de la arquitectura propuesta:
image ABCJobs-ColaMensajes

Este punto en especificó, se encarga de recibir las solicitudes de creación de los candidatos en la plataforma de ABC Jobs, ponerlos en una cola y posteriormente crearlos, añadiendo su registro en la base de datos.

En el siguiente documentos adjunto, se encuentra la evidencia de la ejecución del experimento: Evidencias de la ejecución del experimento

En el siguiente video, se explica el avance de la ejecución del experimento: Video explicación de experimento

b) Análisis de los resultados

Basándonos en las evidencias presentadas en el punto anterior, referentes a la ejecución y los resultados obtenidos en nuestros experimentos, hemos llegado a las siguientes conclusiones significativas:

1. Uso de Colas de Tareas: A pesar de haber demostrado la eficiencia que pueden aportar las colas de mensajería en otros contextos, hemos identificado que su aplicación en esta fase específica de la arquitectura propuesta no es la más adecuada ni eficiente. Esto se debe a que en el punto en cuestión, requerimos respuestas inmediatas en cuanto al estado de las solicitudes de los usuarios al registrarse en la plataforma. Al utilizar colas de mensajería, retrasamos el proceso de obtención de una respuesta inmediata que es esencial para la satisfacción del usuario. Por tanto, hemos tomado la decisión de retirar el uso de colas de mensajería en los procesos de registro en nuestra plataforma.

2. Uso de AWS Lambda: La adopción de AWS Lambda, un servicio del que no estábamos completamente seguros de su funcionamiento, nos sorprendió gratamente por su facilidad de implementación en la plataforma. Sin embargo, surgió una complejidad al intentar integrarlo con las colas de mensajería, principalmente debido a que estábamos tratando con procesos que implicaban lectura y escritura en bases de datos. Esta interacción añadió un nivel de complejidad inesperado a la ejecución de las funciones Lambda. Por esta razón, hemos tomado la decisión de restringir el uso de funciones Lambda a procesos que sean de una sola ejecución y no involucren relaciones directas con bases de datos.

3. Degradación del Sistema: En ambos escenarios, tanto cuando estábamos utilizando colas de mensajería como cuando interactuábamos directamente entre componentes, hemos observado que la degradación del sistema es mínima. Esto se debe a que la utilización de recursos computacionales durante el experimento fue notablemente baja. Estos resultados nos transmiten la confianza de que el sistema tiene la capacidad de responder de manera eficiente incluso ante un alto volumen de solicitudes, sin experimentar degradación o pérdida de registros.

4. Conclusiones sobre la Hipótesis de Diseño: A través de nuestro experimento, hemos identificado ciertas deficiencias en la hipótesis de diseño original que requieren corrección. Uno de los cambios significativos es la necesidad de una revisión exhaustiva sobre dónde deben ubicarse colas de mensajes dentro de nuestra arquitectura y dónde no resultan apropiadas. Además, hemos reconocido la importancia de incorporar funciones sin servidor (Funciones Lambda) en nuestra estructura arquitectónica para proporcionar una mejor escalabilidad a procesos específicos.

5. Consideraciones sobre la Interacción con Bases de Datos: Nuestro experimento también ha resaltado la importancia de la interacción con bases de datos dentro de nuestra arquitectura. Hemos notado que procesos que involucran operaciones de lectura y escritura en bases de datos pueden impactar significativamente en la ejecución de funciones sin servidor, como las Funciones Lambda. Para abordar esta cuestión, hemos decidido explorar estrategias de optimización de bases de datos, como la indexación eficiente y la gestión de conexiones, para garantizar un rendimiento óptimo en estas áreas críticas de nuestra arquitectura.