Skip to content

Trabajo pagina web Diseño de Aplicaciones Distribuidas URJC 2023

Notifications You must be signed in to change notification settings

SergioAlvSch/Trabajo_DAD_Secondflow-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trabajo_DAD_SECOND-FLOW

Trabajo pagina web Diseño de Aplicaciones Distribuidas URJC 2023

Miembros:

Sergio Alvarez Scharfhausen
Martin Alami Mochi
Eduard Vasile Stancu

Video explicativo

FUNCIONAMIENTO VIDEO

Índice


Fase 1
-    Descripción
-    Entidades
-    Funcionalidades
-    Funcionalidad servicio interno
Fase 2
-    Pantallas principales
-    Digrama de navegacion
-    Diagrama de clases uml
-    Diagrama Entidad/Relacion
Fase 3
-   Instrucciones de despliegue de aplicacion
-   Compilacion
-   Creacion instacia OpenStack
-   Subida del .jar
-   Instalaciones en maquina
-   Ejecucion de la aplicación
Fase 4
-    Diagrama de conexiones
-    Video

Fase 1

Descripción:

Se trata de una web de compra/venta de artículos de segunda mano entre particulares.

Entidades:

- USUARIO:    Representara a las personas registradas en la pagina.
- PRODUCTO:    Representa los artículos subidos a la plataforma por parte de los usuarios.
- MENSAJES:    Representa los mensajes que se envian entre usuarios cuando quieren realizar una compra.
- CONVERSACIONES:    Representa el conjunto de Chats entre usuarios con su correspondiente lista de mensajes.

Funcionalidades:

- PÚBLICAS:    visualizar productos y perfiles de usuarios.
- PRIVADAS:    Subir artículos, realizar comprar/ventas de productos y comunicación entre usuarios.

Funcionalidades del servicio Interno:

Mensajería entre usuarios y envió de correo de confirmación de creación de cuenta y confirmación transacciones.

Fase 2

Pantallas principales

Pantalla de inicio

Sin iniciar Sesion:
android
Iniciando sesion:
android android

Pantalla principal donde se visualizan todos los artículos en venta así como enlaces a: formulario para subir un nuevo producto, acceder al perfil del usuario y poder acceder a sus conversaciones. En todas las páginas habrá una cabecera un un pie de pagina donde, pulsando al logo desde cualquier lugar, volverá a esta pagina principal. Se podrá realizar una búsqueda de productos por nombre.

Registro nuevo usuario

android
Ventana donde se podrá crear un nuevo usuario, unicamente rellenando los campos requeridos, donde todos los campos son de obligatorio relleno.

Nuevo producto

android
Ventana donde se podrá poner en venta un nuevo artículo, unicamente rellenando los campos requeridos, todos los campos son de obligatorio relleno salvo la imagen, que en caso de no ponerla, se mostrará una genérica.

Visualización de un producto

android
En esta página se visualiza un articulo subido previamente con todos los campos, dando la posibilidad a su creador de editarlo o eliminarlo y a su cliente potencial de comprarlo.

Eliminación de un producto

android
Retirar articulo de tu lista de productos y de cualquier lugar de la base de datos

Modificación de un producto

android
Formulario para editar un articulo previamente puesto en venta para su modificación

Compra de un artículo

android
Al seleccionar comprar un articulo desde la vista de su visualización se accede al chat donde se establece el dialogo comprador-vendedor, donde este último puede acceder a vender el articulo.

Perfil de usuario

android
Ventana donde aparece informacion principal de un usuario como su nombre, sus productos en venta y un hipervinculo al historial de compra

Historial de compra

android
Pagina donde figurarán los articulos adquiridos por un usuario concreto

Bandeja de conversaciones

android
Pantalla donde se podrá acceder a las distintas conversaciones que tenga uno abiertas

Diagrama de navegación

android

Modelo de datos

Diagrama de clases UML

android

Diagrama Entidad/Relación

android
android

Fase 3

Instrucciones de despliegue de la aplicación

Compilación

1.- Se añade plugin especifico de jar al pom.xml en el cual se indica cual es la clase principal del proyecto entre otras cosas
2.- Desde Eclipse seleccionando el nombre del proyecto -> Run as -> 4 Maven Build y en Goals poner package spring-boot:repackage, de forma que creamos el jar
3.- Repetir proceso para el Servicio Interno
4.- Subir los archivos .jar generados a myR

Creacion de Instancia OpenStack

1.- Acceder a la pagina de OpenStack e introducir las credenciales proporcionadas
2.- Crear una nueva instancia: autogenerar Ip flotante asociada
3.- Crear una nueva llave y asociarla a la instancia creada, asegurase de que tiene el menor numero de permisos(chmod 400)
4.- Crear security group para el puerto de tu aplicación y asociarlo a la instancia

Subida de jar

1.-Teniendo los jar en el myR los copiamos a la maquina virtual con este comando: scp -i "RUTA DE LA LLAVE" "RUTA DEL .JAR" ubuntu@"IP FLOTANTE AUTOGENERADA":/home/ubuntu
2.-Entramos en la maquina virtual ssh con el siguiente comando: ssh -i "RUTA DE LA LLAVE" ubuntu@"IP FLOTANTE AUTOGENERADA"

Instalaciones en maquina

Una vez entramos en la maquina virtual ssh instalamos algunas cosas que nos haran falta para ejecutar los .jar:
1.-Se actualizan los paquetes con el comando: sudo apt update
2.-Instalamos java mediante el comando: sudo apt install openjdk-17-jdk openjdk-17-jre
3.-Comprobamos si se ha instalado java y verificamos su version con: java --version
4.-Instalamos BD mysql mediante el comando: sudo apt install mysql-server
5.-Comprobamos si se ha instalado mysql y verificamos su version con: mysql --version
6.-Entramos en el inicio de sesion de mysql con: mysql -u root -p
 - 6.1.- En caso de no poder entrar hacemos este comando: sudo mysql -u root
7.- Una vez dentro, si fuese necesario cambiamos la contraseña del root con lo siguiente: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TU CONTRASEÑA DEL PROPIERTIES';
8.- Nos creamos el esquema que vamos a usar en la BD con lo siguiente: CREATE SCHEMA 'NOMBRE DE TU SCHEMA DEL PROPIERTIES';
9.- Salimos del mysql con exit

Ejecutar la aplicación

Estando dentro de la maquina virtual ssh:
1.-Ejecutamos los .jar con el siguiente comando: java -jar "NOMBRE DEL .JAR"
2.-Abrimos una nueva terminal
3.-Repetir paso 1 con el .jar del servicio interno
4.-Acceder a la pagina con : https://"Ip Flotante":"PUERTO ASOCIADO"

Fase 4

Comandos Docker

  • Contruir una imgen: sudo docker build -t USUARIO_CREADO_EN_DOCKER / NOMBRE_IMAGEN DIRECCION_DOCKERFILE

  • Visualizar imagenes: sudo docker images

  • Arrancar un contenedor a partir de una imagen: sudo docker run -d -p 8443:8443 NOMBRE_IMAGEN

  • Visualizar estado contenedores: sudo docker ps -a

  • Acceso a MySQL: sudo docker exec -it NOMBRE_SQL mysql -uroot -p

  • Visualizar estado haproxy: sudo systemctl status haproxy

Diagrama de conexiones

Nuestro programa se ha realizado dentro de contenedores docker, como se ha explicado anteriormente, de manera que su esquema quedaria tal que asi:

android

Como se puede apreciar en la imagen, los usuarios solo se podran conectarse a la aplicacion a partir de la Ip publica del balanceador de carga, de forma que este se encargara de redirigir las peticiones a traves de las Ip's privadas del programa principal correspondiente.
A su vez el programa principal accedera al servicio interno a traves del balanceador a traves de otro frontend especifico para los servicios internos.
Y por ultimo tenemos una instancia para la Base de datos que es comun para las dos aplicaciones, que se conectan a esta mediante su Ip privada.

Video

FUNCIONAMIENTO VIDEO

About

Trabajo pagina web Diseño de Aplicaciones Distribuidas URJC 2023

Resources

Stars

Watchers

Forks

Packages

No packages published