HanmaCorporation es una plataforma de comercio electrónico diseñada bajo una arquitectura de microservicios robusta, escalable y altamente disponible. El proyecto resuelve la necesidad de segmentar las lógicas de negocio complejas (como gestión de inventario, logística, pagos y usuarios) en módulos independientes. Esto permite un despliegue ágil, un mantenimiento aislado por dominio y una orquestación centralizada utilizando el ecosistema de Spring Cloud y despliegue en contenedores con Docker.
Equipo de desarrollo:
- Ignacio Battistoni Mestre.
- Alexander Mejias.
El sistema está compuesto por los siguientes microservicios de infraestructura y de negocio:
- config-server: Servidor centralizado de configuración (Spring Cloud Config).
- eureka-service: Servidor de descubrimiento y registro de servicios (Netflix Eureka).
- api-gateway: Puerta de enlace unificada y enrutamiento dinámico (Spring Cloud Gateway).
- mysql-db: Base de datos relacional central, dividida lógicamente por esquemas (vía Docker).
- identidad-service: Gestión de usuarios, roles y autenticación.
- marketplace-service: Administración de tiendas, vendedores, productos y categorías.
- inventario-service: Control de bodegas, inventarios y movimientos de stock.
- carrito-service: Gestión de carritos de compra y sus ítems.
- ordenes-service: Procesamiento de órdenes de compra, detalles, estados e historial.
- pagos-service: Pasarela interna para pagos, transacciones, estados y reembolsos.
- logistica-service: Administración de regiones, comunas, direcciones de entrega y envíos.
- resenas-service: Sistema de retroalimentación, reseñas y reacciones.
El API Gateway centraliza todas las peticiones a través del puerto 8090. Las rutas principales expuestas son:
/usuarios/**,/roles/**➔ identidad-service/vendedores/**,/productos/**,/tiendas/**,/categorias/**➔ marketplace-service/bodegas/**,/inventarios/**,/movimientos/**➔ inventario-service/carrito/**,/items/**➔ carrito-service/ordenes/**,/historial/**,/estados/**,/detalle/**➔ ordenes-service/pagos/**,/transacciones/**,/estadoPago/**,/reembolsos/**➔ pagos-service/comunas/**,/direcciones/**,/envios/**,/regiones/**➔ logistica-service/reacciones/**,/resenas/**➔ resenas-service
Una vez que el entorno esté levantado, puedes acceder a los siguientes paneles de control y documentación:
- Documentación Swagger UI (Unificada): http://localhost:8090/swagger-ui.html
- Panel de Eureka (Discovery Server): http://localhost:8761
- Verificación de Config Server: http://localhost:8888/api-gateway/default
La plataforma está diseñada para ejecutarse tanto en un entorno completamente contenerizado como en un esquema híbrido o local, ideal para el desarrollo.
Esta opción levanta toda la infraestructura, la base de datos y todos los microservicios en contenedores. Ideal para pruebas de integración o despliegue rápido.
- Abre una terminal en el directorio raíz del proyecto.
- Ejecuta el comando de construcción y despliegue:
docker-compose up -d --build
- Espera aproximadamente 60 segundos. Los servicios tienen tiempos de espera programados para garantizar que la base de datos y el servidor de configuración arranquen correctamente antes que los servicios de negocio.
- Verifica el estado de los contenedores:
docker ps
- Para detener todo el ecosistema:
docker-compose down
Gracias a la configuración dinámica de variables, el proyecto permite trabajar en un esquema híbrido o de forma completamente local sin depender de contenedores. Los archivos .yml tienen como valor por defecto localhost, adaptándose automáticamente a tu entorno de ejecución.
A. Modelo Completamente Local: Ideal si no deseas usar Docker durante el desarrollo.
- Asegúrate de tener tu propio gestor MySQL (ej. XAMPP o instalación nativa) corriendo localmente en el puerto
3306con las bases de datos requeridas creadas. - Desde tu IDE (IntelliJ, Eclipse, VSCode), ejecuta primero los servicios de infraestructura estrictamente en este orden:
config-server, luegoeureka-servicey por últimoapi-gateway. - Dale Play a los microservicios de negocio que necesites. Todo el ecosistema se comunicará nativamente a través de tu red local.
B. Modelo Híbrido (Recomendado para programar ágilmente): Delega la infraestructura pesada a Docker y mantén tu código de negocio en el IDE para debugear fácilmente.
- Abre una terminal y levanta solo la infraestructura base en Docker:
docker-compose up -d mysql-db config-server eureka-service api-gateway
- Ve a tu IDE y ejecuta únicamente el microservicio que vas a desarrollar o modificar (ej.
IdentidadServiceApplication.java). - Tu código local se conectará de forma transparente a la base de datos y al Eureka alojados en Docker.
- Prueba tus cambios a través del Gateway local (
http://localhost:8090).