Skip to content

DeniseMDB/microservicios_java

Repository files navigation

Proyecto de Microservicios para Puntos de Venta y Acreditaciones

Este repositorio contiene una arquitectura de microservicios implementada en Java 17 para la gestión de puntos de venta (PDV), costos y acreditaciones. La aplicación utiliza una base de datos en memoria interna H2 para los puntos de venta y costos, mientras que el servicio de acreditaciones emplea una base de datos MySQL.

Tecnologías Utilizadas

Java 17: Lenguaje principal de desarrollo.

Spring Boot: Framework para la creación de microservicios.

Spring Cloud Gateway: Para la gestión de enrutamiento y balanceo de carga entre microservicios.

Eureka Server: Para el descubrimiento de servicios.

Bases de Datos:

H2 (en memoria) para los servicios de costos y puntos de venta.

MySQL para el servicio de acreditaciones.

JUnit y Mockito: Para la realización de pruebas unitarias.

Postman: Para la validación y pruebas de los endpoints expuestos.

Caffeine: Para la implementación de cache en los servicios de Puntos de Venta y Costos, mejorando la eficiencia en el acceso a datos frecuentemente solicitados.

Arquitectura del Proyecto

La aplicación se estructura en varios microservicios interconectados a través del API Gateway. Cada microservicio es responsable de una funcionalidad específica:

Microservicio de Puntos de Venta (PDV):

  • Gestión de puntos de venta.

  • Cálculo de costos.

  • Base de datos H2 para almacenamiento en memoria.

Microservicio de Acreditaciones:

  • Gestión de acreditaciones.

  • Base de datos MySQL para almacenamiento persistente.

Gateway:

  • Configuración para enrutamiento dinámico entre servicios usando Spring Cloud Gateway.

  • Descubrimiento de servicios habilitado mediante Eureka.

Cache - Caffeine

Se ha implementado Caffeine como sistema de caching en el servicio de Challenge-PDV para mejorar el rendimiento y la eficiencia en el cálculo y almacenamiento de los datos de puntos de venta y costos. El cache se ha configurado para almacenar los resultados de los puntos de venta y los costos durante un período de tiempo específico, lo que reduce la carga en la base de datos y mejora el tiempo de respuesta para solicitudes frecuentes.

Configuración del Gateway

A continuación se presenta el archivo application.properties configurado para el API Gateway:

spring.application.name=api-gateway
server.port=8082
eureka.client.service-url.defaultZone=http://discovery-server:8010/eureka

spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lower-case-service-id=true

Funcionalidades Principales

Gestión de Puntos de Venta y Costos:

  • CRUD de puntos de venta.

  • Cálculo de costos y reportes.

  • Excepciones personalizadas para manejo de errores.

Gestión de Acreditaciones:

  • Registro y consulta de acreditaciones.

  • Integración con MySQL para almacenamiento.

Gateway y Descubrimiento de Servicios:

  • Enrutamiento dinámico.

  • Integración con Eureka para el descubrimiento de servicios.

Pruebas Unitarias

  • Las pruebas unitarias se han implementado utilizando JUnit y Mockito.

Swagger

  • Accede a la documentacion mediante sus respectivos archivos yml

Ejecución del Proyecto

Clona el repositorio:

git clone https://github.com/DeniseMDB/java-challenge

Setea la variable de entorno:

  • Importante! Dentro de la carpeta encontraras un archivo .env.
  • Para editarlo: click izquierdo sobre '.env', seleccionar Editar/Abrir con Bloc de Notas
  • Ingresar tu ip address para que corra correctamente. Si no sabes cual es podes ingresar a: https://www.cualesmiip.com/ y podras copiar su valor.
IP_ADDR: "ingresa tu ip address"

Levanta los servicios:

Mediante el uso de docker podras buildear cada imagen y correr sus contenedores.

docker-compose up -d

Accede al Api Gateway en el puerto 8082, utiliza Postman para probar los endpoints.

  • Por ejemplo para testear el servicio de Challenge-PVD creando una solicitud GET a la ruta:
localhost:8082/challenge-pdv/v1/costos
  • O el servicio de Acreditaciones enviando un POST a la ruta:
localhost:8082/acreditaciones/v1/acreditacion?cost=50.0&id=1

Coverage Report

Servicio Challenge-PVD coverage report

Diagrama

diagramaf

Clases

acreditacion

costos puntosdeventa

Releases

No releases published

Packages

No packages published