Este proyecto es un sistema de comercio electrónico para la venta de artículos deportivos, implementado con una arquitectura de microservicios.
El sistema está compuesto por los siguientes componentes:
- API Gateway: Punto de entrada único para todas las solicitudes de los clientes.
- Servicio de Descubrimiento (Eureka): Permite que los microservicios se registren y descubran entre sí.
- Microservicio de Usuarios: Gestión de usuarios, autenticación y perfiles.
- Microservicio de Productos: Gestión del catálogo de productos y categorías.
- Microservicio de Pedidos: Gestión del carrito de compras y procesamiento de pedidos.
- Microservicio de Notificaciones: Envío de correos electrónicos y notificaciones.
- Frontend: Interfaz de usuario desarrollada con React.
Para más detalles, consulte el documento ARCHITECTURE_DESIGN.md.
- Java 17
- Maven
- MySQL 8.0
- Node.js 16+
- Docker y Docker Compose
La forma más sencilla de ejecutar todo el sistema es utilizando Docker Compose:
# Clonar el repositorio
git clone https://github.com/arojas/milicon.git
cd milicon
# Iniciar todos los servicios
docker-compose up -dEsto iniciará todos los microservicios, bases de datos y frontend.
-
Clonar el repositorio:
git clone https://github.com/arojas/milicon.git cd milicon -
Configurar las bases de datos MySQL:
# Crear las bases de datos mysql -u root -p CREATE DATABASE ecommerce_users; CREATE DATABASE ecommerce_products; CREATE DATABASE ecommerce_orders;
-
Iniciar los microservicios en el siguiente orden:
# 1. Servicio de Descubrimiento cd backend/discovery-server mvn spring-boot:run # 2. Microservicio de Usuarios cd ../user-service mvn spring-boot:run # 3. Microservicio de Productos cd ../product-service mvn spring-boot:run # 4. Microservicio de Pedidos cd ../order-service mvn spring-boot:run # 5. Microservicio de Notificaciones cd ../notification-service mvn spring-boot:run # 6. API Gateway cd ../api-gateway mvn spring-boot:run
cd frontend
npm install
npm startAcceder a la aplicación en: http://localhost:3000
cd backend
mvn testcd backend
mvn test -Dtest=*E2ETestEste proyecto utiliza GitHub Actions para la integración continua y entrega continua. El pipeline de CI/CD incluye:
- Construcción y pruebas: Compila el código y ejecuta pruebas unitarias, de integración y E2E.
- Análisis de código: Utiliza SonarCloud para analizar la calidad del código.
- Construcción de imágenes Docker: Crea imágenes Docker para cada microservicio.
- Despliegue: Despliega la aplicación en el entorno de producción.
Para configurar el pipeline de CI/CD:
-
Configura los siguientes secretos en tu repositorio de GitHub:
DOCKERHUB_USERNAME: Tu nombre de usuario de Docker HubDOCKERHUB_TOKEN: Tu token de acceso a Docker HubSONAR_TOKEN: Token de acceso a SonarCloud
-
Para desplegar en tu propio servidor, modifica el script
scripts/deploy.shcon tus propios datos.
El proyecto incluye la siguiente documentación:
- Arquitectura del Sistema: Descripción detallada de la arquitectura del sistema.
- Manual de Usuario: Guía para los usuarios finales de la aplicación.
- Guía de Despliegue: Instrucciones para desplegar la aplicación en diferentes entornos.
- Documentación de la API: Documentación interactiva de la API (disponible cuando la aplicación está en ejecución).
- READMEs de los Microservicios: Documentación específica para cada microservicio.
- Fork el repositorio
- Crea una rama para tu funcionalidad (
git checkout -b feature/amazing-feature) - Haz commit de tus cambios (
git commit -m 'Add some amazing feature') - Push a la rama (
git push origin feature/amazing-feature) - Abre un Pull Request
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
El proyecto incluye pruebas de rendimiento utilizando JMeter para evaluar el rendimiento y la escalabilidad de los microservicios.
- Apache JMeter 5.5 o superior
- jq (para procesar JSON en el script de pruebas)
cd performance-tests
./run-performance-tests.shLas pruebas de rendimiento incluyen:
-
Pruebas del microservicio de usuarios:
- Registro de usuarios
- Inicio de sesión
- Obtención de perfiles de usuario
-
Pruebas del microservicio de productos:
- Creación de categorías
- Creación de productos
- Obtención de productos
- Actualización de productos
Los resultados de las pruebas se guardan en el directorio performance-tests/results y se generan informes HTML detallados.