Configuración e Instalación - santig005/Distributed-Systems-gRPC GitHub Wiki

Configuración e Instalación Detallada

Esta guía proporciona instrucciones paso a paso para configurar y ejecutar todos los componentes del proyecto manualmente en un entorno local. Solo RabbitMQ se ejecutará mediante Docker.

Requisitos Previos

Asegúrate de tener instaladas las siguientes herramientas en tu sistema:

  • Java JDK 17+
  • Maven 3.8+
  • Go (última versión estable)
  • Node.js (versión LTS recomendada)
  • Docker y Docker Compose (Solo para RabbitMQ)
  • Compilador protoc y plugins gRPC para Java, Go, Node.js (necesario si modificas archivos .proto)
  • Git

Configuración Inicial

  1. Clonar el Repositorio:

    git clone https://github.com/santig005/Distributed-Systems-gRPC
    cd Distributed-Systems-gRPC
    
  2. Verificar/Ajustar Configuración de Red: Antes de iniciar los servicios, es crucial que las URLs configuradas para la comunicación entre ellos apunten correctamente a localhost y los puertos esperados.

    • API Gateway: Revisa api-gateway/src/main/resources/application.yml. Verifica que services.*.host sea localhost y los puertos (50051, 50053, 50054) sean correctos. Asegúrate que spring.rabbitmq.host sea localhost.
    • Order Service: Revisa microservices/order_service/.env. Asegúrate que PRODUCT_SERVICE_URL=http://localhost:50053, USER_SERVICE_URL=http://localhost:50051, y RABBITMQ_URL=amqp://guest:guest@localhost:5672.
    • Otros Servicios: Verifica los puertos definidos en *.env o main.go.

Ejecución de los Servicios

Abre una terminal separada para cada uno de los siguientes pasos.

Paso 1: Iniciar RabbitMQ (Docker)

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

*   Verifica que el contenedor esté corriendo con `docker ps`.
*   Accede a la UI: `http://localhost:15672` (user/pass: guest/guest).

Paso 2: Iniciar User Service (Go)

  • Navega a la carpeta:
    cd microservices/user_service
    
  • Ejecuta:
    go run main.go
    
  • Observa la salida: Debería indicar que está escuchando en un puerto (ej: 50051).

Paso 3: Iniciar Product Service (Node.js)

  • Navega a la carpeta:
    cd microservices/product_service
    
  • Instala dependencias (si es necesario):
    npm install
    
  • Ejecuta:
    npm start
    
  • Observa la salida: Debería indicar que está escuchando en un puerto (ej: 50053).

Paso 4: Iniciar Order Service (Node.js)

  • Navega a la carpeta:
    cd microservices/order_service
    
  • Instala dependencias (si es necesario):
    npm install
    
  • Ejecuta:
    npm start
    
  • Observa la salida: Debería indicar que está escuchando en un puerto (ej: 50054) y que se conectó a RabbitMQ.

Paso 5: Iniciar API Gateway (Java)

  • Navega a la carpeta:
    cd api-gateway
    
  • (Opcional) Construye el proyecto:
    mvn clean install -DskipTests
    
  • Ejecuta:
    mvn spring-boot:run
    
  • Observa la salida: Busca el banner de Spring Boot y el mensaje indicando el puerto (ej: 8080).

¡El sistema completo debería estar ahora en ejecución!

Verificación y Uso

  • Utiliza herramientas como curl o Postman para interactuar con los endpoints REST expuestos por el API Gateway en http://localhost:8080 (o el puerto configurado). Consulta la Documentación de la API (si existe en la Wiki).
  • Revisa los logs en cada terminal para monitorizar la actividad y detectar errores.
  • Utiliza la UI de RabbitMQ (http://localhost:15672) para observar las colas y los mensajes durante las pruebas de failover.

Detención de los Servicios

  1. Ve a la terminal de cada servicio (API Gateway, Order, Product, User) y presiona Ctrl + C.
  2. Detén y elimina el contenedor de RabbitMQ:
    docker stop rabbitmq
    docker rm rabbitmq