5.1 Despliegue: Arquitectura Física
Este diagrama modela la topología de despliegue e infraestructura física de Mañuti, detallando la interconexión de redes, demonios de sistema operativo y puertos de transporte en un clúster de alta disponibilidad.
1. Explicación y Semántica del Diagrama
El esquema refleja la segregación en capas de servicio:
- Capa Web (Ingress & Reverse Proxy):
Nginx: Termina el cifrado HTTPS en el puerto 443. Deriva peticiones convencionales al socket UNIX de PHP-FPM y solicitudes WebSocket al puerto interno 8080.
- Capa de Aplicación y Demonios:
PHP-FPM (Laravel 12): Ejecuta la lógica web de forma síncrona.Supervisor: Gestiona permanentemente los procesos de fondo (horizonyreverb:start).
- Capa de Datos y Almacenamiento:
MariaDB (Puerto 3306): Persistencia relacional primaria (Datos transaccionales, RBAC, Catálogos).Redis (Puerto 6379): Almacenamiento en memoria para sesiones, caché y broker de colas.MongoDB (Puerto 27017): Base de datos NoSQL para auditoría forense inmutable.
2. Cómo se Lee este Diagrama
- Los bloques
subgraphrepresentan servidores o contenedores independientes. - Las flechas indican el protocolo y puerto de comunicación utilizado (e.g.,
TCP:3306,FastCGI,HTTPS).
3. Implementación en el Framework Mañuti
- Configuración Nginx:
/etc/nginx/sites-available/framedev. - Supervisores:
/etc/supervisor/conf.d/horizon.confyreverb.conf. - Conexiones de Base de Datos: Mapeadas a variables de entorno en
.env.
4. Diagrama Mermaid
flowchart LR
%% Nodos de Cliente
subgraph Cliente ["Cliente"]
NavegadorWeb["Navegador Web"]
end
%% Servidor de Aplicaciones
subgraph AppServer ["Servidor de Aplicaciones"]
Nginx["Nginx Web Server"]
PHP["PHP-FPM (Laravel 12)"]
Supervisor["Supervisor Daemon"]
Horizon["Horizon Workers"]
end
%% Capas de Datos y Caché
subgraph DBServer ["Servidor de Base de Datos"]
MariaDB[("MariaDB (SQL)")]
end
subgraph NoSQLServer ["Servidor NoSQL"]
Mongo[("MongoDB (Audit)")]
end
subgraph CacheServer ["Servidor de Caché"]
Redis[("Redis (In-Memory)")]
end
%% Conexiones
NavegadorWeb -->|"HTTPS (443)"| Nginx
Nginx -->|"FastCGI (Unix Socket)"| PHP
PHP -->|"TCP:3306 (Data)"| MariaDB
PHP -->|"TCP:6379 (Session/Cache)"| Redis
PHP -->|"Gestiona"| Supervisor
Supervisor -->|"Spawns Processes"| Horizon
Horizon -->|"Pop Jobs"| Redis
Horizon -->|"Write Logs (TCP:27017)"| Mongo
Horizon -->|"Read State"| MariaDB