UniMarket-2
Summary
| Latest Version | Unknown |
|---|---|
| License | Unknown |
| CI Status | Failing |
| Stars | 1 |
| Forks | 0 |
| Open Issues | 0 |
| Last Commit | 2026-05-25 |
| Downloads | 0 |
| Last Indexed | 2026-08-12 05:09 |
Installation
nimble install UniMarket-2
choosenim install UniMarket-2
git clone https://gitlab.com/unimarket-equipo/UniMarket-2
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| UniMarket-2 | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Source
| Repository | https://gitlab.com/unimarket-equipo/UniMarket-2 |
|---|---|
| Homepage | https://gitlab.com/unimarket-equipo/UniMarket-2 |
| Registry Source | gitlab |
README
🏪 UniMarket-2 — Plataforma de Microservicios SOA
Curso: Diseño y Arquitectura de Software
Profesor: César Augusto Vega Fernández
Equipo: unimarket-equipo
UniMarket es una plataforma de comercio electrónico universitario construida bajo una Arquitectura Orientada a Servicios (SOA), diseñada para ser altamente resiliente, segura y escalable. Para la Entrega 3, el proyecto evolucionó hacia un ecosistema Cloud-Native, integrando pruebas automatizadas, DevSecOps y orquestación con Kubernetes.
🏗️ Arquitectura del Sistema
El sistema se compone de 3 microservicios desplegados sobre Kubernetes, comunicados vía REST:
| Componente | Tecnología | Rol |
|---|---|---|
| Frontend | Vite + Vanilla JS + Nginx | SPA (Single Page Application) que consume las APIs. |
| unimarket-ventas | Spring Boot 4 + Java 21 | Consumidor SOA — Gestiona lógica de negocio (Comisiones), aplica Strategy y Abstract Factory, se protege con Resilience4j. |
| unimarket-usuarios | Spring Boot 4 + Java 21 | Proveedor SOA — Valida la existencia y perfiles de los usuarios. |
Hitos Arquitectónicos (Entrega 3)
- Resiliencia (Resilience4j): Implementación de Circuit Breaker, Retry y Fallback entre Ventas y Usuarios.
- Seguridad (DevSecOps): Autenticación JWT (HS256) combinada con análisis estático y dinámico (Semgrep, Trivy, ZAP) integrado en GitLab CI.
- Calidad de Software: Estrategia integral de pruebas con ~77 validaciones automatizadas (JUnit, Mockito, WireMock, Newman, k6, Cypress) y cobertura de JaCoCo >80%.
- Infraestructura Cloud-Native: Orquestación en Kubernetes, reemplazando Docker Compose, con NetworkPolicies para aislamiento de red y zero-downtime deployments.
- Observabilidad: Telemetría completa con Prometheus (Métricas), Grafana (Dashboards), Jaeger (Trazas OTLP) y ELK Stack (Logs distribuidos).
🖥️ Interfaz del Frontend
El frontend es una SPA tipo dashboard que permite interactuar con todos los componentes de la arquitectura desde una interfaz unificada:

El dashboard se divide en 4 módulos principales:
- 🔒 Seguridad JWT: Obtener token de autenticación para acceder a endpoints protegidos.
- 🛒 Ventas (SOA): Simular ventas que disparan la comunicación inter-servicio, el Strategy Pattern y el Circuit Breaker.
- 📦 Catálogo SOA: Cargar productos generados por el Abstract Factory.
- 💚 Resiliencia: Visualizar el estado del Circuit Breaker (CLOSED, OPEN, HALF_OPEN) y sus métricas en tiempo real.
📖 Wiki — Documentación Técnica
La documentación exhaustiva del proyecto, incluyendo manuales, diagramas UML/C4 y evidencias de la Entrega 3, se encuentra en la 📚 Wiki del repositorio:
| Sección Destacada | Descripción |
|---|---|
| Arquitectura del Sistema | Vistas 4+1, Patrones GoF, Diagrama General. |
| Pruebas Automatizadas | Pirámide de pruebas, métricas de k6, reportes. |
| Pipeline CI/CD y DevSecOps | Grafo del pipeline de 8 stages paralelos. |
| Infraestructura (K8s) | Despliegue en Kubernetes, Docker multi-stage. |
| Resiliencia y Observabilidad | Configuraciones de Circuit Breaker y Grafana. |
🚀 Guía de Despliegue (Local)
Existen dos formas de ejecutar el proyecto: la vía heredada con Docker Compose y el despliegue moderno con Kubernetes.
Requisitos Previos
- Docker Desktop (con Kubernetes habilitado para la opción K8s).
- Java 21 y Node.js (solo si deseas compilar manualmente).
Opción 1: Despliegue en Kubernetes (Recomendado)
Desde la raíz del proyecto, aplica los manifiestos:
# 1. Configuración y Seguridad
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/secret.yaml
kubectl apply -f k8s/serviceaccount.yaml
kubectl apply -f k8s/role.yaml
kubectl apply -f k8s/rolebinding.yaml
# 2. Despliegue de Microservicios
kubectl apply -f k8s/deployment-usuarios.yaml
kubectl apply -f k8s/service-usuarios.yaml
kubectl apply -f k8s/deployment-ventas.yaml
kubectl apply -f k8s/service-ventas.yaml
kubectl apply -f k8s/deployment-frontend.yaml
kubectl apply -f k8s/service-frontend.yaml
# 3. Reglas de Red e Ingress
kubectl apply -f k8s/networkpolicy.yaml
kubectl apply -f k8s/ingress.yaml
Opción 2: Desarrollo Local (Docker Compose)
Para levantar el ecosistema de observabilidad e infraestructura base:
# Levantar stack de observabilidad
docker-compose up -d
# Levantar microservicios manualmente
cd unimarket-usuarios && ./mvnw spring-boot:run
cd ../unimarket-ventas && ./mvnw spring-boot:run
cd ../unimarket-frontend && npm run dev
🔍 Servicios y Puertos Excluidos
| Servicio | URL Local | Descripción |
|---|---|---|
| Frontend SPA | http://localhost:5173 | Interfaz de usuario interactiva |
| Grafana | http://localhost:3000 | Dashboards de monitoreo (admin/admin) |
| Jaeger UI | http://localhost:16686 | Trazabilidad de peticiones distribuidas |
| API Ventas | http://localhost:8081 | Microservicio principal (protegido con JWT) |
| API Usuarios | http://localhost:8080 | Backend de gestión de perfiles |
UniMarket-2 — Entregado como parte final del ciclo académico de Diseño y Arquitectura de Software.