Twotter 🐦
Proyecto para bases de datos NoSQL
Pre-requisitos 📋
_Que cosas necesitas para instalar el software y como instalarlas_
- Java 1.8 o superior
- Elipse 2019-09 (Java EE)
- Docker (Windows Pro)
- RavenDB
- Wildfly 11
- Redis https://github.com/dmajkic/redis/downloads)
- Postman
Instalación 🔧
_Requisitos para un ambiente de desarrollo_
- Alternativa 1
- Bajar repositorio de Git y abrirlo con Eclipse
- Instalar Docker
- Crear una imagen de Docker e instalar WildFly
- Crear una imagen de Docker e instalar Redis (Configurar los puertos correspondientes (6379))
- Crear una imagen de Docker e instalar RavenDB
- Generar un EAR con Eclipse y agregando las IP's correspondientes para las conexiones de las Bases de Datos
- Agregarle el Ear al WildDly
- Hacer RUN a los contenedores creados con las imagenes anteriores
- Los dockers deben encontrarse en la misma network
- Alternativa 2
- Bajar repositorio de Git y abrirlo con Eclipse
- Instalar RavenDB local
- Instalar Redis local
- Configurar IP's locales para el acceso a la Base de Datos
- En la configuracion del DocumentStoreHolder.java para RavenDB debe especificarse el nombre de la base de datos.
Ejecutando las pruebas ⚙️
Para probar ahora solo necesitamos tener instalado POSTMAN
y ejecutar alguna consulta POST para probar la carga de Comentarios de esta forma
http://<IP_del_docker_con_wildfly>/rest/
- Ejemplos utilizados en localhost /127.0.0.1
Nombre | Metodo | URL | Parametros |
---|---|---|---|
Crear Usuario | POST | http://localhost:8080/Twotter-web/rest/usuarios | { "nombre": "" ,"email": ""} |
Crear comentario | POST | http://localhost:8080/Twotter-web/rest/publicar | { "texto": "" ,"emailUsuario": ""} |
Leer Comentarios de usuario | GET | http://localhost:8080/Twotter-web/rest/usuarios/publicaciones | { "email": ""} |
Leer Comentario | GET | http://localhost:8080/Twotter-web/rest/comentario/{idComentario} | String |
Comentar Comentario | POST | http://localhost:8080/Twotter-web/rest/comentar | { "id": "" , texto": "" ,"emailUsuario": ""} |
Con estas pruebas debemos de obtener los resultados exitosos de una comunicacion entre los dockers, entre el backEnd java y la base de Raven
Ejemplo de pruebas ⌨️
Alta de usuario
{
"nombre":"Emiliano",
"mail": "emimartins@vera.com.uy"
}
Publicar Comentario
{
"texto" :"Primera Publicacion",
"emailUsuario" : "emimartins@vera.com.uy"
}
Obtener Publicaciones de usuario
GET http://localhost:8080/Twotter-web/rest/usuarios/publicaciones
{
"emailUsuario" : "emimartins@vera.com.uy"
}
Decisiones 🎲️
Elegimos usar Redis para el cache de existencia de usuarios.
¿Por que?
De esta forma accedemos de una forma más rapida a la validación de
existencia de usuarios en el caso de que se realicen simultaneas solicitudes que involucren al mismo.
¿Como?
Cuando se crea un usuario se persiste en RavenDB
y en Redis (Este último con un tiempo de expiración)
Cuando se realiza cualquier acción que involucre la existencia de un Usuario
la logica del negocio realiza la siguiente busqueda del usuario:
- Buscar existencia en Redis
- Si existe retorno True
- Si no existe:
- Busco existencia en RavenDB
- Si no existe retorno False
- Si existe:
- Persisto en Redis el usuario con tiempo de expiración
- Retorno True
- Busco existencia en RavenDB
y continúa la acción deseada como Comentar o leer comentarios.
UML 🛠️
Autores ✒️
- Emiliano Martins - **
- Laura Scappa - **
- Maximo Lanza - ** )
Licencia 📄
Este proyecto está bajo la Licencia (Tu Licencia) - mira el archivo LICENSE.md para detalles