Swarch P7 1e
Swarch P7 1e
Swarch P7 1e
SWARCH_P7_1E
Presentado por:
Camilo Andres Diaz Silva - caadiazsi@unal.edu.co
Carlos Daniel Rincon Mora - cdrinconm@unal.edu.co
Alvaro Andres Garcia Perdomo - alagarciape@unal.edu.co
Mateo Sebastian Barragan Ibañez - mbarragani@unal.edu.co
Valeria Huepa Ducuara - vhuepad@unal.edu.co
Diana Carolina Guarin Angulo - dcguarina@unal.edu.co
Profesor:
Jeisson Andrés Vergara Vargas
javergarav@unal.edu.co
Domingo 12 de Diciembre
1. Introducción
1.1. Sistema de Software
1.1.1. Nombre
1.1.2. Logo
1.1.3. Descripción
1.2. Equipo
1.2.1. Nombre
1.2.2. Integrantes
2. Vistas Arquitectónicas
2.1. Vista de Descomposición
2.1.1. Representación en Grafo
2.1.2. Representación en Cajas
2.1.3. Descripción de la Vista
2.2. Vista de Componentes y Conectores (C&C)
2.2.1. Representación en Gráfica
2.2.2. Descripción de la Vista
2.3. Vista de Modelo de Datos
2.3.1. Representación en Gráfica
2.3.2. Descripción de la Vista
2.4. Vista de Capas
2.4.1. Representación Gráfica
2.4.2. Descripción de la Vista
2.5. Vista de Despliegue
2.5.1. Representación Gráfica
2.5.2. Descripción de la Vista
3. Anexos
3.1. Rendimiento
3.1.1. Gráfica de Rendimiento
3.1.2. Tiempos de Respuesta y Throughput
1.1.3. Descripción
DaysCool es un sistema de software que pretende integrar y organizar de
manera sencilla toda la información que profesores y estudiantes ameritan
en el proceso educativo, como horarios, trabajos, calificaciones, pendientes,
referencias, links, entre otros, de tal manera que se encuentre todo lo que
necesita en un solo lugar.
1.2. Equipo
1.2.1. Nombre
SwArch_1E
1.2.2. Integrantes
● Camilo Andres Diaz Silva - caadiazsi@unal.edu.co
● Carlos Daniel Rincon Mora - cdrinconm@unal.edu.co
● Alvaro Andres Garcia Perdomo - alagarciape@unal.edu.co
● Mateo Sebastian Barragan Ibañez - mbarragani@unal.edu.co
● Valeria Huepa Ducuara - vhuepad@unal.edu.co
● Diana Carolina Guarin Angulo - dcguarina@unal.edu.co
2. Vistas Arquitectonicas
2.1. Vista de Descomposición
2.1.1. Representación en Grafo
- Módulo de Autenticación
En este módulo se maneja la lógica de negocios para la autenticación de usuarios, haciendo
uso de tokens únicos para validación de sesión, permitiendo al usuario mantener una sesión
activa en todo momento.
Funcionalidades:
- Crear cuenta
- Iniciar sesión
- Módulo de Mensajes
En este módulo se maneja la lógica de negocios para la mensajería entre usuarios, esto
permitirá a los usuarios comunicarse en tiempo real, compartiendo mensajes de texto en
chats privados o grupales.
Funcionalidades:
- Como usuario quiero poder enviar un mensaje a un usuario
- Listar mensajes
- Módulo de Información del Usuario
Este módulo se compone de funcionalidades propias y de un submódulo.
Funcionalidades:
- Ver información de usuario
- Como usuario quiero modificar mi información de usuario
Submódulos:
Submódulo de Apuntes:
El submódulo de apuntes manejará los archivos de apuntes de los usuarios
permitiendo a estos desarrollar diferentes acciones sobre estos.
Funcionalidades:
- Crear un apunte de clase
- Editar un apunte de clase
- Compartir un apunte de clase
- Eliminar un apunte de clase
- ABAC
El ABAC o “Attribute-based access control” será un módulo encargado de administrar los
permisos que tienen los diferentes tipos de usuario(Estudiante y Profesor) que tenga la
aplicación, para de esta forma garantizar que solo los usuarios que están autorizados
accedan a determinadas funcionalidades.
Funcionalidades:
- Dar permisos a un tipo de usuario sobre una funcionalidad.
- Consultar los permisos de un usuario.
- Consultar si un usuario puede acceder a un recurso.
La aplicación contará con tres componentes principales; FrontEnd, BackEnd , Bases de datos
(seis).
A nivel de FronEnd el sistema tiene dos componentes uno de tipo web_application y el otro de
tipo mobile_application, en el caso de web application este consume un api externo que provee el
servicio Firebase de google donde se hace uso del servicio cloud messaging . El componente de
BackEnd contará con un total de ocho sub-componentes (microservicios) conectados a un
API-Gateway de tipo GraphQL el cual se encarga de comunicar las funcionalidades de los
microservicios de manera que los datos sigan el flujo de lógica necesario para el despliegue de las
funcionalidades del sistema en general. Así mismo se controlará el flujo de entrada al api_gateway
mediante un proxy inverso que pasará las peticiones al api, dando anonimato al sistema del Back
End, además se cuenta con el componente Interfaz el cual se encarga de conectar el sistema
Dayscool a dos sistemas externos . Cada microservicio es desarrollado en un lenguaje distinto y
cada uno tendrá una base de datos independiente, que puede ser relacional o no relacional según
sea el caso (excepto por los microservicios de autenticación y usuario que comparten base de
Cada componente se encarga de cumplir con las funciones descritas en los módulos de la vista de
descomposición del sistema:
● ms_abac (Attribute based access control): Modela y gestiona los permisos para
los diferentes roles dentro de la aplicación, garantizando que solo los usuarios con
permisos realicen ciertas acciones sobre el sistema.
● ms_mensaje: Modela y gestiona los mensajes que los usuarios pueden tener entre
sí, no se podrán tener conversaciones grupales, y mediante el microservicio
notificaciones se alertará al usuario de actualizaciones en sus conversaciones. El
El componente de FrontEnd consiste dos componentes, uno tipo web y otro móvil, el cual conecta
mediante el protocolo HTTP (móvil) y HTTPS (web) al proxy inverso. Debido al escalamiento
realizado, se incorporan balanceadores de carga para los siguientes componentes: dayscool_wa
(componenete web), api_gateway, ms_autenticacion y ms_usuario.
ActividadesMS: Los datos para ser usados por este microservicio se definen en dos
entidades llamadas Actividades y Entregas, donde una actividad puede tener o no más de
una entrega. La actividad está asociada a un curso, teniendo un nombre, una fecha en que
se crea la actividad, una fecha de entrega para la actividad, una descripción y un posible
archivo. En caso de realizar una entrega ésta está asociada a un usuario, contiene un
nombre, una fecha descripción y un posible archivo.
MensajesMS: este cuenta con dos entidades: Mensaje y Conversación, la entidad mensaje
se encarga de estructurar el contenido que tendra un mensaje en el sistema, contando con la
información del remitente, contenido y la fecha de envío, esta entidad se relaciona con la
entidad conversación donde se guardará los id de los usuarios que comparten un conjunto
de mensajes. Conversación será la separación lógica de mensajes entre usuarios dentro del
sistema.
NotificaciónMS: este cuenta con una entidad llamada notificación la cual estructura el
contenido de una notificación cuando se crea un mensaje dirigido a un usuario del sistema,
teniendo como campos de la notificación, un usuario, una fecha de creación y el mensaje.
Dentro de un cluster se encuentran 5 nodos, los contenedores se despliegan en estos con cierto
grado de escalamiento que va desde 1 a 5 instancias por contenedor. Cada contenedor en el
diagrama muestra el grado de escalamiento respectivo.
● ms_autenticación:
○ Puerto: 10200
● ms_usuario:
○ Puerto: 10100
● user_db:
○ Puerto: 3306
● ms_abac:
○ Puerto: 80
○ Puerto: 5432
● ms_actividades:
● actividades_db:
○ Puerto: 27017
● ms_curso:
○ Puerto: 8000
○ Puerto: 3306
● ms_mensaje:
○ Puerto:4000
● mensaje_db:
○ Puerto:3306
● ms_notificación:
○ Puerto: 3000
● notificación_db:
○ Puerto: 27017
● ldap:
○ Puerto: 8085
○ Puerto: 3010
● dayscool_wa:
● dayscool_ma:
3.Anexo
3.1. Rendimiento
3.1.1. Gráfica de rendimiento
En la grafica anterior se evidencia para el escenario 1 que la rodilla se encuentra entre los 100 y
500 usuarios, mientras que para el escenario 2 la rodilla se encuentra entre los 600 y 800 usuarios.
A continuación se muestran los tiempos de respuesta para las pruebas realizadas en los dos
escenarios propuestos: Escenario 1 (sin escalamiento) y Escenario 2 (con escalamiento), cada
La siguiente tabla muestra el tiempo de respuesta promedio y el valor del Throughput para cada
escenario según la cantidad de usuarios. Se resalta como el tiempo de respuesta promedio aumenta
de manera significativa al pasar la capacidad del sistema, así como también las transacciones por
minuto disminuyen al llegar al mismo punto.
Escenario #1 Escenario #2
Tiempo de Tiempo de
# Usuarios Throughput Throughput
Respuesta Respuesta
(trans/min) (trans/min)
(ms) (ms)
1 335,6666667 44,9 432,6666667 41,9
5 345,3333333 223,0 331 225,4
50 1779,666667 1079,3 502,3333333 1996,9
75 2281 1371,5 975,3333333 2278,1
100 3015,666667 1494,1 1955,666667 2030,0
500 14567 1927,2 5228,666667 4816,4
600 0 36000,0 6431,333333 4844,4
800 0 42000,0 10996,66667 3501,0