Arquitectura del sistema - santig005/Distributed-Systems-gRPC GitHub Wiki
Arquitectura del Sistema
A continuación se describen los principales aspectos de la arquitectura utilizando el modelo C4 (solo nivel 2), diagrama de despliegue y diagrama de procesos.
C4 Nivel 2 - Diagrama de Contenedores
Este diagrama muestra cómo el sistema distribuido está compuesto por varios contenedores: el cliente REST, el API Gateway, los microservicios y el Middleware de Mensajes (MOM).
- Cliente REST: Cliente realiza peticiones HTTP al sistema.
- API Gateway: Punto de entrada para todas las solicitudes, expone una API REST.
- Microservicios: Tres servicios distribuidos que se comunican por gRPC.
- Usuarios
- Productos
- Pedidos
- MOM (Middleware Orientado a Mensajes): Garantiza la entrega y recuperación de mensajes en caso de fallos en los microservicios.
Diagrama de Despliegue
El siguiente diagrama muestra cómo los contenedores del sistema se despliegan en diferentes nodos o entornos. Puede incluir instancias de Docker, máquinas virtuales, servicios en la nube, etc.
- Cliente: Se ejecuta localmente o desde un navegador/postman.
- API Gateway: Único punto de entrada al sistema. Desplegado en una instancia EC2.
- Microservicios: (Usuarios, Productos, Pedidos) se ejecuta en su propia instancia EC2.
- MOM (RabbitMQ): También está desplegado en una instancia EC2 independiente.
Diagrama de Secuencia – Crear Pedido
Este diagrama representa el flujo completo que ocurre cuando un cliente realiza una solicitud para crear un pedido. Muestra cómo los distintos componentes del sistema interactúan entre sí, incluyendo el uso del Middleware Orientado a Mensajes (MOM) en caso de fallos.
- El Cliente REST envía una solicitud HTTP
POST /pedido
al API Gateway. - El API Gateway reenvía la solicitud al Microservicio de Pedidos.
- El microservicio consulta información del usuario al Microservicio de Usuarios usando gRPC.
- Luego, solicita información del producto al Microservicio de Productos, también vía gRPC.
- Si ocurre un fallo en alguno de estos pasos, se envía el mensaje al MOM para su posterior reprocesamiento.
- Finalmente, si todo va bien, se envía una confirmación al cliente.