Skip to content

ProdeMaster/PredictionService

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎯 Prediction Service

Este proyecto implementa un servicio de predicciones futbolísticas, permitiendo a los usuarios registrar y actualizar sus predicciones de resultados para partidos. Es parte de un sistema de microservicios basado en Spring Cloud Netflix Eureka


🚀 ¿Qué hace este servicio?

El Prediction Service proporciona una API REST para:

  • Registro de predicciones de resultados
  • Actualización de predicciones existentes
  • Enlace entre predicciones, usuarios y partidos

Este servicio se registra automáticamente en el servidor de Eureka para que otros servicios (como el ApiGateway) puedan enrutar solicitudes hacia él.


📆 Endpoints destacados

Método Ruta Descripción
POST /predictions/ Registra una predicción
PUT /predictions/{userId}/{matchId} Actualiza una predicción
GET /predictions/{id} devuelve la predicción

🛠️ Tecnologías

  • Java 17
  • Spring Boot 3.4.x
  • Spring Security (con JWT)
  • Spring Data JPA
  • PostgreSQL
  • Spring Cloud Netflix Eureka Client
  • Docker & Docker Compose

📁 Estructura del proyecto

user-service/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/ProdeMaster/PredictionService/
│   │   │       ├── Controller/
│   │   │       │   └── PredictionController.java
│   │   │       ├── Model/
│   │   │       │   └── PredictionModel.java       
│   │   │       ├── Repository/
│   │   │       │   └── PredictionRepository.java
│   │   │       ├── Service/
│   │   │       │   └── PredictionService.java
│   │   │       └── predictionServiceApplication.java
│   │   └── resources/
│   │       ├── static/
│   │       ├── templates/
│   │       └── application.properties
│   └── test/java/com/ProdeMaster/PredictionService/
│       └── UserModelServicesApplicationTests.java
├── Dockerfile
├── pom.xml
└── readme.md

⚙️ Configuración

El archivo application.properties contiene la configuración principal del servicio de predicciones, incluyendo puertos, nombre del servicio y detalles de conexión a Eureka.

application.properties

spring.application.name=prediction-service
server.port=8082

#Configuracion general
spring.config.import=optional:configserver:

#Conectividad con zipkin para manejo de trazabilidad
spring.zipkin.base-url=http://zipkin:9411
management.zipkin.tracing.endpoint=http://zipkin:9411/api/v2/spans
management.tracing.sampling.probability=1.0

#Configuracion de Eureka
eureka.client.serviceUrl.defaultZone=http://eureka:8761/eureka/
eureka.instance.prefer-ip-address=true

#Configuracion de la base de datos PostgreSQL
spring.datasource.url=jdbc:postgresql://postgres:5433/prodeMaster_predication_db
spring.datasource.username=postgres
spring.datasource.password=admin
spring.datasource.driver-class-name=org.postgresql.Driver

⚠️ IMPORTANTE: Las credenciales de Postgres son valores de ejemplo proporcionados para facilitar el despliegue y pruebas en local. Bajo ningún concepto se recomienda conservar estos valores si desea llevar el servicio a producción


🧪 Cómo probarlo en local

✅ Requisitos

  • JDK 17
  • Maven
  • Docker

Opción 1: sin Docker

mvn clean install
mvn spring-boot:run

💡 NOTA: Es necesario disponer de un servicio de Postgres, con las credenciales anteriormente mencionadas, para que el servicio se conecte.

Es necesario modificar la propiedad spring.datasource.url configurándolo de la siguiente manera jdbc:postgresql://localhost:5433/prode_db

Opción 2: con Docker

mvn clean package
docker image build -t prediction-service .
docker run -p 5433:5432 --name my-postgres -e POSTGRES_PASSWORD=admin -e POSTGRES_USER=postgres -e POSTGRES_DB=prodeMaster_predication_db postgres:17
docker run prediction-service

📦 Docker

Dockerfile

El servicio cuenta con un Dockerfile optimizado para producción basado en una imagen Java 17.

Build manual de la imagen

mvn clean package
docker image build -t prediction-service .

Es necesario empaquetar la aplicación con mvn clean package antes de crear la imagen de docker


🧩 Integración con otros servicios

📂 Integración con otros servicios

Este servicio se registra en Eureka bajo el nombre prediction-service. Puede ser accedido a través del ApiGateway usando:

http://localhost:8080/prediction-service/

Asegúrate de que spring.application.name=prediction-service coincida con la ruta configurada en ApiGateway.


📚 Documentación adicional

🧑‍💻 Autor

Nombre: Gastón Herrlein

GitHub: @Gaston-Herrlein

📄 Licencia

Sin licencia

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages