D&D Microservices Project
Información del Proyecto
- Categoría: Backend & Full-Stack / Arquitectura de Microservicios
- Cliente: Proyecto Personal
- Fecha del Proyecto: Julio, 2025
- Stack Tecnológico:
- Backend: Java 17, Spring Boot, Microservices, EDA, Kafka, DynamoDB, Docker.
- Frontend: Vue.js 3, TypeScript, Vite, Pinia, PrimeVue, Axios.
- DevOps (Local): Docker Compose, Git Submodules, Kafdrop.
- URL del Proyecto: (Próximamente en AWS)
- Repo Frontend: dndms-frontend
- Repo MS1: dndms-ms1-adventure-forge
- Repo MS2: dndms-ms2-character-roster
- Repo MS3: dndms-ms3-combat-arena
- Repo MS4: dndms-ms4-hall-of-fame
- Repo DTOs: dndms-event-dtos
Sistema de Microservicios Orientado a Eventos para una Simulación de D&D
El objetivo de este proyecto es diseñar y construir un sistema distribuido robusto desde cero, demostrando prácticas modernas de desarrollo backend. La aplicación simula un ecosistema de Dungeons & Dragons donde las aventuras se generan y resuelven automáticamente, y los personajes progresan de forma persistente. El sistema completo está orquestado localmente con Docker Compose.
Backend
El backend consiste en cuatro microservicios independientes, cada uno escrito en Java 17 y Spring Boot. Se comunican de forma asíncrona a través de un bus de eventos Apache Kafka, siguiendo una arquitectura orientada a eventos. MS1 genera misiones, MS2 gestiona el elenco de personajes, MS3 simula los combates, y MS4 compila los rankings. Los datos persistentes, como el estado de los personajes y los rankings, se almacenan en DynamoDB.
Frontend
La interfaz de usuario es una Single Page Application (SPA) construida con Vue.js 3 y TypeScript, utilizando Vite como herramienta de construcción. Los componentes de la UI se crearon con la librería PrimeVue y el layout con PrimeFlex. La gestión de estado centralizada y la comunicación entre componentes se manejan con Pinia. Las llamadas a las APIs del backend se realizan con Axios, implementando una configuración de CORS en el backend para permitir la comunicación segura entre orígenes distintos.
Infraestructura y Orquestación Local
Todo el entorno de desarrollo local, incluyendo los 4 microservicios y 5 servicios de infraestructura (Kafka, Zookeeper, DynamoDB Local, Redis, Kafdrop), está completamente contenedorizado y es orquestado por un único archivo Docker Compose. La gestión de los Data Transfer Objects (DTOs) compartidos entre los microservicios se realiza de forma limpia y versionada utilizando Git Submodules.
Próximos Pasos y Mejoras Futuras
Con el MVP del "Modo Espectador" completamente funcional, el proyecto tiene una base sólida para evolucionar. Los siguientes grandes bloques de trabajo se centran en añadir profundidad a la simulación, profesionalizar el despliegue y enriquecer la interactividad.
- Mejorar la Simulación de Combate: La lógica actual de combate en MS3 será expandida para manejar múltiples encuentros por aventura y una simulación por turnos más detallada, utilizando las estadísticas completas de los PJs y ENs para un resultado más estratégico.
- Integración de API Externa y Caché con Redis: Se planea que MS2 (Character Roster) deje de usar datos fijos y consuma una API pública de D&D (como `dnd5eapi.co`) para obtener información de monstruos y equipo. Las respuestas de esta API externa se cachearán en Redis para optimizar el rendimiento y reducir la latencia.
- Despliegue en AWS con IaC y CI/CD: El objetivo final es desplegar todo el ecosistema en AWS. Se usarán los servicios más costo-eficientes como AWS Lambda/Fargate para el cómputo, SQS/SNS como bus de eventos, y API Gateway. Toda la infraestructura será definida como código usando Terraform. Se configurará un pipeline de CI/CD con GitHub Actions para automatizar las builds, la creación de imágenes Docker y el despliegue.
- Frontend Avanzado y Modo Jugador: La interfaz de usuario evolucionará para mostrar más detalles de la simulación. En una fase futura, se implementará un "Modo Jugador" que podría utilizar WebSockets para permitir al usuario tomar decisiones en tiempo real durante los combates.