Skip to content

Latest commit

 

History

History
238 lines (205 loc) · 9.96 KB

README.md

File metadata and controls

238 lines (205 loc) · 9.96 KB

looking4sitter

Descripción

Looking4Sitter es una aplicación web en la cual los padres podrán buscar el niñero o niñera adecuado a sus necesidades. Cuenta con una lista de niñeros que muestran sus cualidades, páginas individuales para cada niñero con comentarios y puntuación de otros padres al niñero y un tablón de anuncios donde los padres podrán informar de qué tipo de niñero buscan.

Entidades

Nombre Descripción (Las entidades cuentan con un Id único y autoincremental que se comporta como la Primary Key de su tabla específica)
Usuario Los usuarios cuentan con los siguientes atributos: login (string único de identificación), nombre, email, password, provincia, tarifa (para Sitters y Star Sitters) perfil (objeto Perfil) y descripción, además de una serie de listas que las relaciona con otras entidades OneToMany. Los usuarios vienen definidos por su relación con el tipo de Perfil con el que cuentan.
Anuncio Escrito por los padres y agregado al tablón de anuncios. Los niñeros pueden pinchar en el y acceder a los datos de contacto del padre
Comentario Comentario de los padres al niñero en el que se indica tambien la puntuación.

Diagrama UML

Diagrama UML

Diagrama de entidades y su relación

Diagrama entidades

Generación del jar

Tras clonar el proyecto en un directorio, se emplea maven para la generación del jar:

$ cd ~/looking4sitter
$ mvn package

El jar se encontrará en la carpeta target del proyecto. Para contar con el servicio interno, debe hacerse lo mismo con el proyecto serviciorest

Configuración de la máquina virtual

Usamos ubuntu/trusty32 con vagrant para la ejecución de la aplicación. En nuestro caso empleamos dos máquinas virtuales con las direcciones IP 192.168.33.XX y 192.168.33.YY, reservando la dirección IP 192.168.33.ZZ para HAProxy

Instalación del JDK y de MYSQL Server

$ sudo apt-get update
# En el caso de que la instalación del JDK no funcionase por
# no encontrar el paquete, se debe ejecutar lo siguiente
$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update
# Instalación JDK
$ sudo apt-get install -y openjdk-8-jre
# Instalación de MySQL Server
$ sudo apt-get install mysql-server
$ mysql -u root -p

Configuración de la base de datos

Creación del schema vacío

create database mybbdd;

Creación del usuario de la aplicación que accederá a la base de datos

create user 'sitteradmin'@'localhost' identified by 'sitterpass';
grant all privileges on *.* to 'sitteradmin'@'localhost' with grant option;

Ejecución del jar en la máquina virtual

Arrancamos la máquina virtual

$ vagrant up
$ vagrant ssh

Accedemos a la carpeta en la que se contiene los jar (tanto el jar de la aplicación como el jar del servicio rest)

$ cd /vagrant

Arrancamos los jars de la siguiente manera en diferentes terminales:

$ java -jar xxxxxxxxxxxxxxxx-x.x.x-SNAPSHOT.jar

Balanceo de carga

Configuración de HAProxy

Creamos una máquina virtual separada en la que instalamos HAProxy.

$ sudo apt-get install haproxy

Nos aseguramos que tengamos la versión HAProxy 1.6:

$ haproxy -version
HA-Proxy version 1.6.14-1ppa1~trusty-66af4a1 2018/01/06
Copyright 2000-2018 Willy Tarreau <[email protected]>

Se debe configurar el archivo haproxy.cfg:

$ cd /etc/haproxy
$ sudo vim haproxy.cfg

Se añade después de las secciones global y default con lo siguiente para tener dos nodos:

frontend localhost
        bind *:80
        bind *:443
        option tcplog
        mode tcp
        default_backend nodes

backend nodes
        mode tcp
        balance roundrobin
        option ssl-hello-chk
        server node1 192.168.33.10:8443 check
        server node2 192.168.33.20:8443 check

En esta configuración se tiene dos nodos, node1 y node2 que corresponden a las IP 192.168.33.10 y 192.168.33.20 respectivamente. Para poder configurar un nodo nuevo, se debe completar el siguiente código y añadirlo al final de backend nodes:

server nodeX XXX.XXX.XXX.XXX:YYYY check

Siendo XXX.XXX.XXX.XXX la IP de la máquina en la que se está ejecutando la aplicación e YYYY el puerto. La configuración frontend cuenta con el modo TCP y la opción TCPLog, significando que las conexiones a los nodos quedarán reflejadas en el log que se encuentra en /var/log/haproxy.log al que se deberá acceder de la siguiente forma:

$ sudo vim /var/log/haproxy.log

En el podemos leer los logs, debido a problemas con la versión de HAProxy 1.6 y su incompatibilidad con 1.4, no se puede acceder a la página de stats para comprobar las conexiones a los nodos.

Para arrancar el servicio del balanceo de carga se usa el siguiente comando:

$ sudo service haproxy start

Y para volver a arrancarlo:

$ sudo service haproxy restart

Para pararlo:

$ sudo service haproxy stop

Capturas

Inicio

Página de inicio

Inicio sesión

Inicio sesión

Perfiles

Perfil de un padre

Perfil padre

Perfil de un sitter

Perfil Sitter

Registro

Registro

Registro de un padre

Registro Padre

Registro de un sitter

Registro Sitter

Registro exitoso

Registro Exitoso

Búsqueda de sitters

Búsqueda sitters

Búsqueda de anuncios

Tablero de anuncios completo

Búsqueda anuncio

Tablero de anuncios con búsqueda específica por fecha

Búsqueda anuncio por fecha

Creación de un anuncio

Creación anuncio

Edición de un anuncio

Edición anuncio

Anuncios publicados

Tablero de anuncios del padre

Listado de anuncios

Tablero de anuncios vacío

Sin anuncios

Comentarios

Comentarios escritos por el padre

Escribir comentario

Escritura de un comentario

Escribir comentario

Comentarios recibidos del sitter

Comentarios recibidos

Funcionalidades del servicio interno

  • Tablón de anuncios: muestra a los Sitters todos los anuncios que han escrito los padres.
  • Búsqueda avanzada de anuncios: los Sitters pueden buscar anuncios por fecha de publicación.
  • Busqueda avanzada de Sitters: puede buscarse Sitters según la provincia en la que viven y la tarifa máxima que desean pagar. También puede mostrarse todos los Sitters que hay en la página.

Vídeo demostrativo

Este es el enlace del vídeo demostrativo de la aplicación ejecutada en dos máquinas iguales, usando una tercera máquina para el balanceo de carga.

Integrantes

Nombre Apellidos Correo Cuenta de GitHub
Sara Patricia Núñez Aguirre sp.nuneza sarapcoding
Alejandro Checha Sánchez-Isasi a.checas xialda