UniMarket-2

Active Pure Nim score 65/100 · last commit 2026-05-25 · 1 stars · tests present · no docs generated

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 - - - - - - -

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)

  1. Resiliencia (Resilience4j): Implementación de Circuit Breaker, Retry y Fallback entre Ventas y Usuarios.
  2. Seguridad (DevSecOps): Autenticación JWT (HS256) combinada con análisis estático y dinámico (Semgrep, Trivy, ZAP) integrado en GitLab CI.
  3. Calidad de Software: Estrategia integral de pruebas con ~77 validaciones automatizadas (JUnit, Mockito, WireMock, Newman, k6, Cypress) y cobertura de JaCoCo >80%.
  4. Infraestructura Cloud-Native: Orquestación en Kubernetes, reemplazando Docker Compose, con NetworkPolicies para aislamiento de red y zero-downtime deployments.
  5. 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:

UniMarket Frontend — Dashboard principal con módulos de Seguridad JWT, Ventas SOA con Strategy Pattern, Catálogo vía Abstract Factory, y panel de estado del Circuit Breaker (Resilience4j) en tiempo real.

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.