Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Swarch P7 1e

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

DOCUMENTO DE DESCRIPCIÓN DE ARQUITECTURA

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

Universidad Nacional de Colombia


Facultad de Ingeniería
Departamento de Ingeniería de Sistemas y Computación
2020
CONTENIDO

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

Ingeniería de Sistemas y Computación


1. Introducción
1.1. Sistema de Software
1.1.1. Nombre
DaysCool
1.1.2. Logo:

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

Ingeniería de Sistemas y Computación


2.1.2. Representación en Cajas

Ingeniería de Sistemas y Computación


2.1.3. Descripción de la Vista
La aplicación DaysCool contará con 6 módulos, 2 submódulos y un total de 30
funcionalidades, a continuación se explicarán brevemente los diferentes módulos con sus
submódulos.

- 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.

Ingeniería de Sistemas y Computación


- Módulo de Notificaciones
El módulo de notificaciones, se encargará de alertar y notificar al usuario de diferentes
acciones que ocurran dentro del sistema, llevando un registro de las notificaciones que se
da a los usuarios para que estas puedan ser consultadas.
Funcionalidades:
- Recibir una notificación.
- Ver notificación.
- Eliminar notificación.
- Módulo de Cursos
El módulo de cursos es el más robusto de la plataforma, compuesto de dos sub módulos y
funcionalidades propias, este módulo se encargará de la gestión de los cursos de la
plataforma. Los cursos de la plataforma constan de una lista de estudiantes y un profesor
asignado, así como de actividades y las calificaciones de las mismas.
Funcionalidades:
- Crear un curso
- Agregar estudiantes a curso
- Programar reuniones
- Subir material del curso
- Editar información del curso
- Ver mis cursos
- Enviar un anuncio a los estudiantes del curso
Submódulos:
Submódulo de Actividades:
El submódulo de actividades llevará un registro de todas las actividades
programadas por el profesor, del mismo modo llevará registro de los entregables de
cada usuario.
Funcionalidades:
- Crear Actividades
- Programar Actividades
- Ver Actividades
- Entregar Actividades
Submódulo de Calificaciones:
El submódulo de calificaciones, permitirá a los profesores calificar las actividades
que programé en el submódulo de actividades, llevará registro de todas las
calificaciones y dará acceso a los reportes de calificaciones individuales de los
estudiantes.
Funcionalidades:
- Generar reporte de Notas
- Ver notas
- Calificar Actividad

Ingeniería de Sistemas y Computación


2.2. Vista de Componentes y Conectores (C&C)
2.2.1. Representación Gráfica

2.2.2. Descripción de la Vista

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

Ingeniería de Sistemas y Computación


datos); la siguiente tabla muestra el lenguaje, tipo de base de datos y encargado de cada uno de los
microservicios definidos:

Microservicio Lenguaje Base de Encargado


Datos

Autenticación Java MySQL


Andrés Garcia
Usuario Kotlin MySQL

ABAC Elixir Postgres Camilo Diaz

Actividades C# MongoDB Daniel Rincon

Curso Rust MySQL Mateo Barragán

Mensaje Python MySQL Diana Guarin

Notificación JS MongoDB Valeria Huepa

Cada componente se encarga de cumplir con las funciones descritas en los módulos de la vista de
descomposición del sistema:

● ms_autenticación: Modela y gestiona la creación de usuarios, como también el


inicio de sesión, garantizando que la sesión se mantenga activa para los usuarios
autenticados.

● ms_usuario: Muestra y modifica la información personal de los usuarios, además


de permitirles, crear editar eliminar y compartir apuntes de clase.

● 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_actividades: Modela y gestiona las actividades asignadas correspondientes a


cada curso, ya sean trabajos, proyectos, quices, o cualquier otro trabajo académico
que requiera una entrega por parte de estudiante.

● ms_curso: Modela y gestiona los cursos, en lo que se refiere a integrantes, recursos


del curso, reuniones del curso y notificar a los miembros de estas.

● 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

Ingeniería de Sistemas y Computación


usuario deberá crear una conversación para poder iniciar la comunicación con otro;
cuando la conversación se elimina, los mensajes lo harán también.

● ms_notificación: Modela y gestiona las notificaciones una vez es creado un


mensaje en el sistema, dando a un usuario la posibilidad de reconocer de forma
rápida si tiene mensajes nuevos, permitiendo ver información de cada una de las
notificaciones o eliminar ya sea toda la lista de notificaciones o una en particular.

● ldap: Se encarga de gestionar una doble autenticación, el cual permite la


verificación de los datos de usuario (usuario + contraseña) en un directorio.

● Interfaz: Se encarga de gestionar la interoperabilidad entre la aplicación Dayscool


y otros dos sistemas, de los cuales el external_system1A consume un servicio web
Soap, el sistema external_system1D expone un servicio web Soap

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.

2.3. Vista de Modelo de Datos


2.3.1. Representación Gráfica

Ingeniería de Sistemas y Computación


2.3.2. Descripción de la Vista
En la aplicación cada microservicio se definen seis modelos de datos, como se lista a
continuación.

ABACMS: Para este microservicio se definieron 4 entidades: Role, Microservice, Request


y Permission. Para cada microservicio existen unas peticiones y los roles pueden tener
permisos otorgados sobre estas peticiones. Role consiste de un identificador único y de un
nombre, los microservices consisten de un identificador único, un nombre y una
descripción, las requests por su parte tienen un identificador único, el tipo de petición (r, w,
u, d) y una descripción. Para finalizar permission junta información de Role y Request,
teniendo un identificador único de permission, el identificador único del Role y el
identificador único de la Request.

UsuarioMS y AutenticaciónMS: Los datos usados por estos microservicios se definen en


3 entidades llamadas usuario, acceso_apuntes y apuntes. La entidad usuario contiene toda

Ingeniería de Sistemas y Computación


la información básica de los usuarios de dayscool, que puede ser consultada modificada y
eliminada, la entidad apuntes contiene el id del apunte, el contenido y quién es el dueño y
creador del apunte, por último la entidad acceso_apuntes registra quienes tienen permiso de
lectura de un apunte en particular compartido por otro usuario. De esta forma se puede
acceder de dos formas a una nota, mediante la llave foránea del id del usuario dueño desde
la entidad usuario, y desde la llave foránea del id del usuario que tiene acceso de lectura a
una nota desde la entidad acceso_notas. Además, como es lógico un usuario puede crear
muchas notas y un usuario puede acceder a muchas notas, y una nota puede ser accedida
por muchos usuarios.

CursosMS: Para este microservicio se definen cuatro entidades; Cursos, Reuniones,


Archivos, Persona, donde un curso puede tener más de un archivo asociado, así como, más
de una reunión y estar definido para más de una persona. El curso tiene un nombre y un id
del usuario que indica quién creó el curso, los archivos tienen el id al cual pertenecen,
muestran nombre y un contenido, en caso de crear reuniones estas también están asociados
por medio de un id a curso y contienen una fecha de realización y la entidad persona
muestra el conjunto de usuarios que pertenecen a un curso estructurando sus datos con el id
del curso y del 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.

2.4. Vista de Capas


2.4.1. Representación Gráfica

Ingeniería de Sistemas y Computación


2.4.2. Descripción de la Vista

● La capa física de Presentation contiene web application y mobile application, el primero


tiene contenido a la capa GUI y esta contiene las capas model, controller y view; el
segundo contiene a la capa layout que tiene permitido usar la capa activity, la cual tiene
permitido hacer uso de la capa repository. La capa física de presentación, tiene permitido
hacer uso de la capa física de Logic.
● En la capa física de Logic están contenidos el componente de proxy el cual contiene la
capa server y el cual tiene permitido usar api y Interfaz. Interfaz contiene la capa lógica y
api contiene las capas shema, resolver y server ,componente que tiene permitido usar los
componentes de microservicios: ms_message, ms_ususario, ms_actividades, ms_abac,
ms_cursos, ms_notification y autenticacion_ms, ldap (cada uno de estos microservicios
define su propio conjunto de capas) . Esta capa a su vez, tiene permitido hacer uso de la
capa física de Data, donde cada componente tiene permitido usar una base de datos.
● La capa física de Data contiene las capas de base de datos de ususario_db, actividades_db,
abac_bd, curso_db, mensaje_db, notificación_db, a su vez, cada uno de estos contiene a
sus respectivos componentes de database.

Ingeniería de Sistemas y Computación


2.5. Vista de Despliegue
2.5.1. Representación Gráfica

Ingeniería de Sistemas y Computación


2.5.2. Descripción de la Vista

La vista de despliegue contiene la definición de los componentes descritos en la vista C&C,


especificando el enviroment en el cual se ha desplegado cada uno, el lenguaje utilizado y el puerto
en el que se realizó el despliegue..

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.

Ambientes de despliegue para cada componente:

● ms_autenticación:

○ Lenguaje y/o framework utilizado: Java

○ Puerto: 10200

● ms_usuario:

○ Lenguaje y/o framework utilizado: Kotlin

○ Puerto: 10100

● user_db:

○ Lenguaje y/o framework utilizado: MySql

○ Puerto: 3306

● ms_abac:

○ Lenguaje y/o framework utilizado: Elixir

○ Puerto: 80

○ Lenguaje y/o framework utilizado: PostgresSql

○ Puerto: 5432

● ms_actividades:

○ Lenguaje y/o framework utilizado: C#

Ingeniería de Sistemas y Computación


○ Puerto: 8080

● actividades_db:

○ Lenguaje y/o framework utilizado: MongoDB

○ Puerto: 27017

● ms_curso:

○ Lenguaje y/o framework utilizado: Rust

○ Puerto: 8000

○ Lenguaje y/o framework utilizado: MySql

○ Puerto: 3306

● ms_mensaje:

○ Lenguaje y/o framework utilizado: Python

○ Puerto:4000

● mensaje_db:

○ Lenguaje y/o framework utilizado: MySql

○ Puerto:3306

● ms_notificación:

○ Lenguaje y/o framework utilizado: Javascript

○ Puerto: 3000

● notificación_db:

○ Lenguaje y/o framework utilizado: MongoDB

○ Puerto: 27017

● ldap:

○ Lenguaje y/o framework utilizado: openldap

○ Puerto: 8085

Ingeniería de Sistemas y Computación


● interfaz:

○ Lenguaje y/o framework utilizado: Ruby

○ Puerto: 3010

● dayscool_wa:

○ Lenguaje y/o framework utilizado: Vuejs

● dayscool_ma:

○ Lenguaje y/o framework utilizado: Java

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.

3.1.2. Tiempos de Respuesta y Throughput

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

Ingeniería de Sistemas y Computación


prueba se realizó 3 veces para cada cantidad de usuarios para poder obtener el tiempo de respuesta
promedio.

Escenario #1 (Tiempo de Respuesta Escenario #2 (Tiempo de Respuesta


(ms)) (ms))
# Usuarios 1° 2° 3° 1° 2° 3°
1 334 345 328 576 376 346
5 347 345 344 330 330 333
50 1818 1905 1616 457 485 565
75 2399 2301 2143 660 694 1572
100 3018 3000 3029 1502 3465 900
500 14721 14575 14405 5188 4267 6231
600 0 0 0 8107 5516 5671
800 0 0 0 9229 11117 12644

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

Ingeniería de Sistemas y Computación

También podría gustarte