resources/views/pages/frontend/docs/uml-componentes-backend.md
Última modificación: 24 Oct, 2026

2.3 Componentes del Backend

Este diagrama modela la arquitectura de subsistemas y componentes de software de Mañuti, mostrando el acoplamiento y flujo de datos entre la capa HTTP, los proveedores de servicio, los demonios asíncronos y los tres motores de persistencia híbrida.


1. Explicación y Semántica del Diagrama

El sistema se divide en cuatro capas claramente delimitadas:

  1. Capa Cliente: Navegadores y terminales móviles que consumen la aplicación mediante HTTPS y WebSockets seguros (WSS).
  2. Capa de Aplicación (Laravel Backend):
    • Http Kernel: Aloja controladores y la tubería de middlewares (Auth, PreventBackHistory, CheckActiveSession, AuditMiddleware).
    • Service Providers: Hidratan servicios esenciales (AppServiceProvider, HorizonServiceProvider).
    • Gate (RBAC): Motor de evaluación de capacidades en memoria.
  3. Capa de Procesamiento Asíncrono (Background Services):
    • Horizon Supervisor: Orquesta y balancea procesos worker dedicados.
    • Queue Worker: Despacha tareas pesadas hacia la persistencia documental.
  4. Capa de Persistencia Híbrida:
    • MariaDB (SQL): Datos relacionales, transacciones ACID, integridad referencial y seguimiento de lotes.
    • Redis (In-Memory): Sesiones ultraligeras, almacén de caché con tags y broker de colas.
    • MongoDB (NoSQL): Almacén masivo de eventos forenses inmutables.

2. Cómo se Lee este Diagrama

  • Las cajas engloban componentes que residen en el mismo espacio de ejecución o servidor.
  • Las flechas sólidas representan llamadas sincrónicas directas (invocaciones a métodos o consultas de lectura/escritura inmediata).
  • Las flechas discontinuas (-.->) representan transporte de datos asíncrono desacoplado (encolamiento en Redis y extracción por parte de workers).

3. Implementación en el Framework Mañuti

  • El tráfico web ingresa a AuthController y AuditMiddleware.
  • El AuditMiddleware no escribe en MongoDB directamente; despacha un job (ProcessAuditLog) hacia la cola de Redis en milisegundos.
  • El supervisor de Horizon extrae el job de Redis y delega la inserción final del documento BSON al worker conectado a MongoDB, garantizando cero latencia añadida al cliente HTTP.

4. Diagrama Mermaid

flowchart LR
    %% Cliente
    subgraph Cliente ["Cliente"]
        Browser["Navegador Web"]
    end

    %% Servidor de Aplicación
    subgraph AppServer ["Servidor de Aplicación (Laravel 12)"]
        
        subgraph HttpKernel ["Http Kernel"]
            AuthController["Auth Controller"]
            AuditMiddleware["Audit Middleware"]
            SessionMiddleware["Session Middleware"]
        end
        
        subgraph ServiceProviders ["Service Providers"]
            AppServiceProvider["AppServiceProvider"]
            HorizonServiceProvider["HorizonServiceProvider"]
        end
        
        subgraph Workers ["Workers & Queues"]
            HorizonSupervisor["Horizon Supervisor"]
            QueueWorker["Queue Worker"]
        end
        
        Gate(["Gate (RBAC)"])
    end

    %% Capa de Persistencia
    subgraph CapaPersistencia ["Capa de Persistencia Híbrida"]
        
        subgraph DB_SQL ["MariaDB (SQL)"]
            Usuarios[("Usuarios")]
            RolesPermisos[("Roles/Permisos")]
            EstadoBatches[("Estado Batches")]
        end
        
        subgraph DB_Mongo ["MongoDB (NoSQL)"]
            ColeccionAuditoria[("Colección Auditoría")]
        end
        
        subgraph DB_Redis ["Redis (In-Memory)"]
            SessionStore[("Session Store")]
            CacheStore[("Cache Store")]
            QueueList[("Queue List")]
        end
    end

    %% Relaciones
    Browser -->|"HTTPS Request"| SessionMiddleware
    SessionMiddleware -.->|"Read/Write SessionID"| DB_Redis
    
    AuthController --> AppServiceProvider
    AppServiceProvider --> Gate
    Gate -.->|"Query Permissions"| DB_SQL
    
    AuthController -->|"Next()"| AuditMiddleware
    AuditMiddleware -->|"Dispatch Job (Async)"| DB_Redis
    
    HorizonSupervisor -.->|"Pop Job"| DB_Redis
    HorizonSupervisor -->|"Execute"| QueueWorker
    QueueWorker -->|"Write Log JSON"| DB_Mongo

Enlaces Relacionados

Edita este documento en >> uml-componentes-backend.md
← Volver a la Landing Page