Skip to content

Alvar0P/PcPiezas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

154 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PcPiezasLogo

PcPiezas

Web para la compra de ordenadores a piezas y perifericos.

Características

  • Configurador que permite al usuario elegir las piezas y comprueba que estas sean compatibles entre si.
  • Venta de ordenadores montados con piezas preconfiguradas.
  • Venta de periferícos y otros accesorios
  • No hace falta estar registrado para ver los productos

Entidades

  • Productos: tienen un precio, características y piezas compatibles.
  • Configuración: Ordenadores ya montados que el usuario podrá editar.
  • Venta: Guarda los datos de la venta (Dirección de envío,total a pagar, fecha de la compra, productos comprados).
  • Usuario: usuarios con distintos roles (Comprador, comprador VIP, vendedor, administrador).
    • Comprador: puede adquirir productos.
    • Comprador VIP: puede adquirir productos con descuentos especiales y sin gastos de envio.
    • Vendedor: puede poner añadir, retirar y editar sus productos.
    • Administrador: acceso completo a la web puede añadir, retirar y editar productos.
  • Item: para el carrito.
  • Carrito: para los productos que se desean comprar.

Servicios

  • Genera factura en pdf y la envía por mail al comprador.
  • Si el producto no es de PcPiezas se le evnía un mail al vendedor de los productos que tiene que enviar.
  • Envía un correo con estado del producto (Enviado, en reparto...).

Funciones Privadas

  • Gestión de usuarios.
  • Gestión de productos.
  • Ver el historial de ventas.
  • Seguimiento de producto comprado.

Funciones Públicas.

  • Comprar
  • Vender
  • Usar el configurador

Fase 2

Diagrama UML

Diagrama UML

Diagrama Entidad Relación

Diagrama EER

Capturas de pantalla.

Caractersticas implementadas

  • Añadir eliminar y ver productos
  • Consultar y gestionar el inventario para todos los productos o un producto en concreto
  • Añadir elementos al carrito para realizar una compra
  • Gestión de usuarios

Gestión de inventario

11ListaStock

Página de Inicio

1inicio

Menu desplegable

2MenuDesplegable

Página de Componentes

3componentes

Página de Móviles

4moviles

Página de Ordenadores

5ordenadores

Página de Periféricos

6perifericos

Carrito

7carrito

Añadir Producto

8RegistrarProductos

Ver Todos los Productos

9ListaProductos

Añadir Stock a los Productos

10AnadirStock

Fase 3

  • Comunicacion con RabbitMq entre la aplicacion y el servicio de envio de correo electronica

Instrucciones para desplegar openstack

Maquina Local

Clonar el repositorio

git clone https://github.com/Alvar0P/PcPiezas --tag FASE-3

Ir a la ruta de la aplicaion principal

cd PcPiezas/PcPiezasIJ/

Compilar con maven

mvn clean package

Ir a la ruta del servicio de correo

cd PcPiezas/PcPiezasMailService/

Compilar con maven

mvn clean package

#Transferir los ejecutables al servidor

scp PcPiezas-0.0.1-SNAPSHOT.jar (usuario)@(direccion-ip):/PcPiezasEjecutables
scp PcPiezasMailService-0.0.1-SNAPSHOT.jar (usuario)@(direccion-ip):/PcPiezasEjecutables

Maquina Remota

Instalacion mysql Añadimos el repositorio

wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
sudo dpkg -i mysql-apt-config*

Instalamos mysql-server siguiendo los pasos del instalador

sudo apt update
sudo apt install mysql-server

Abrimos la consola mysql

mysql -u root -p

Configuramos la base de datos

create database pcpiezas;
CREATE USER 'PcPiezasAdmin'@'localhost' IDENTIFIED BY 'bgnkwekwgrkqjvfq';
GRANT ALL PRIVILEGES ON * . * TO 'PcPiezasAdmin'@'localhost';
FLUSH PRIVILEGES;
quit

Iniciar Rabbitmq en un contenedor Docker

docker run --rm -it -p 15672:15672 -p 5672:5672 rabbitmq:3-management&

Ejecutar ambas aplicaciones en segundo plano

java -jar PcPiezas-0.0.1-SNAPSHOT.jar
java -jar PcPiezasMailService-0.0.1-SNAPSHOT.jar

Fase 4

Arquitectura de la aplicación

PcPiezasLogo

La aplicacion se encuentra en 5 maquinas virtuales de openstack, cada una de estas maquínas virtuales tiene uno o mas contenedores docker, las funciones de cada máquina virtual son las siguientes
  • haproxy-rabbitmq: ejecuta 2 contenedores uno con el balanceador de carga haproxy y otra con rabbitmq, esta es la unica máquina con su ip publica expuesta para recibir conexiones por parte de los clientes
  • PcPiezasApp1/2: estas máquinas son identicas y cada una ejecuta 4 instancias de la aplicación web principal
  • PcPiezasMailService: esta máquina ejecuta dos instancias del servicio interno
  • mysql: esta máquina ejecuta una instancia de la base de datos sql

Instrucciones despligue

Primero debemos crear las 5 máquinas virtuales en openstack y instalar docker en estas Para hacer este proceso mas facil podemos docker en una máquina y despues crear un snapshot de esta para crear el resto Para instalar docker ejecutaremos los siguientes comandos:

curl https://get.docker.com > dockerInstall.sh
chmod +x ./dockerInstall.sh
sudo ./dockerInstall.sh

Maquina local

Ahora compialremos las imagenes de docker del servicio interno y la aplicacion principal y las subiremos a dockerhub

Empezaremos por clonar el repositorio

git clone https://github.com/Alvar0P/PcPiezas

Despues nos dirijiremos al directorio ./PcPiezasIJ, construimos y subimos la imagen con los siguientes comandos

sudo docker build . -t <usuario>/pcpiezas-app:latest -f ./docker/buildImage-dockerfile 
sudo docker push <usuario>/pcpiezas-app:latest -f 

en nuestro caso

sudo docker build . -t alvaromz/pcpiezas-app:latest -f ./docker/buildImage-dockerfile 
sudo docker push alvaromz/pcpiezas-app:latest -f 

Despues nos dirijiremos al directorio ./PcPiezasMailService, construimos y subimos la imagen con los siguientes comandos

sudo docker build . -t <usuario>/pcpiezas-mail:latest -f ./docker/buildImage-dockerfile 
sudo docker push <usuario>/pcpiezas-mail:latest -f 

en nuestro caso

sudo docker build . -t alvaromz/pcpiezas-app:latest -f ./docker/buildImage-dockerfile 
sudo docker push alvaromz/pcpiezas-app:latest -f 

Ahora debemos transferir los archivos docker compose a los servidores correspondientes

  • ./docker/mysql/docker-compose.yml -> mysql
  • ./docker/haproxy-rabbitmq/ -> haproxy rabbitmq
  • -/PcPiezasIJ/docker/docker-compose.yml -> PcPiezasApp
  • -/PcPiezasIJ/docker/docker-compose.yml -> PcPiezasMail

Antes de transferir los archivos se recomienda editarlos para poner las IPs correspondientes de cada maquina, ademas de el login del correo en el caso de PcPiezasMailService y el archivo haproxy.cfg para indicar las IPs de los nodos

Para esto usaremos scp ejecutando los siguientes comandos en nuestra maquina local

scp -i sshFile -r ./docker/mysql/docker-compose.yml debian@<ip-addres>:/home/debian/
scp -i sshFile -r ./docker/haproxy-rabbitmq/ debian@<ip-addres>:/home/debian/
scp -i sshFile -r ./docker/PcPiezasIJ/docker/docker-compose.yml debian@<ip-addres>:/home/debian/
scp -i sshFile -r ./docker/PcPiezasMailService/docker/docker-compose.yml debian@<ip-addres>:/home/debian/

Por ultimo debemos ejecutar

sudo docker compose up

En todas las maquinas virtuales y ya tendriamos la aplicacion desplegada

Para iniciar varias instancias en el caso de la maquína PcPiezasApp

sudo docker compose up --scale pcpiezasapp=4

Video demo

https://youtu.be/DBiVsDWWCUM

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •