Diagrama de Despliegue - Bri0714/Rabbit-project GitHub Wiki

Diagrama de Despliegue

Este diagrama de despliegue muestra cómo se distribuyen los componentes de la aplicación de gestión de pedidos en distintos nodos (máquinas o procesos) y cómo interactúan a través de RabbitMQ.

image

¿Por qué un Diagrama de Despliegue?

  • Visualizar la infraestructura
    Muestra en qué nodos (servidores, contenedores o procesos) corre cada componente.
  • Entender la comunicación
    Deja claro qué mensajes viajan entre qué nodos y por qué canales (exchanges/colas).
  • Planificar despliegues reales
    Al conocer la topología, podemos decidir cuántas instancias de cada servicio levantar, balanceo, alta disponibilidad, etc.

Descripción de cada nodo y flujo

Flet UI (Productor)

ProductorPedidos

  • Interfaz de escritorio que captura los datos del pedido.
  • Publica al Direct Exchange direct_pedidos con routing_key=pedidos_nuevos.

RabbitMQ Broker (vhost: co.ucentral.tienda)

Exchange direct_pedidos (type = direct)

  • Recibe nuevos pedidos y los enruta a pedidos_nuevos y, tras confirmación, a procesados_logistica.

Exchange notificaciones_fanout (type = fanout)

  • Recibe eventos de “pedido listo” y los replica a todas las colas de notificación.

Colas

  • pedidos_nuevos: recibe cada nuevo pedido.
  • procesados_logistica: recibe pedidos confirmados para despacho.
  • cola_email: notificaciones de e-mail.
  • cola_sms: notificaciones de SMS.
  • cola_auditoria: registro de auditoría.

Consumer App – Procesamiento

ConsumidorProcesaPedidos

  • Consume de la cola pedidos_nuevos.
  • En su UI muestra un botón “Confirmar envío a logística”.
  • Al confirmar publica:
    1. En direct_pedidosrouting_key=procesados_logistica.
    2. En notificaciones_fanout → (fanout sin routing key).
  • Hace ack manual del mensaje original.

Consumer App – Logística

ConsumidorLogistica

  • Consume de la cola procesados_logistica.
  • Muestra “📦 Pedido listo para envío” y hace ack al procesar.

Consumer App – Email

ConsumidorEmail

  • Consume de la cola cola_email.
  • Envía el correo de confirmación si el destinatario pertenece a @ucentral.edu.co.

Consumer App – SMS

ConsumidorSMS

  • Consume de la cola cola_sms.
  • Envía SMS de confirmación vía Twilio (o Textbelt), prefijando +57 si hace falta.

Consumer App – Auditoría (opcional)

ConsumidorAuditoria

  • Consume de la cola cola_auditoria.
  • Podría registrar cada confirmación en una base de datos o log central.
⚠️ **GitHub.com Fallback** ⚠️