< Todos los temas
Imprimir

Arquitectura y Requisitos del Sistema

El sistema está diseñado sobre una arquitectura moderna de desarrollo web que utiliza las últimas versiones estables de PHP versión 8.2 (PHP Group, 2022) y PostgreSQL versión 16.2 (PostgreSQL Global Development Group, 2023) como base de su infraestructura. Construido sobre el framework Laravel, incorpora un conjunto de tecnologías y paquetes especializados que permiten funcionalidades avanzadas como autenticación robusta, comunicación en tiempo real y gestión granular de permisos. La implementación requiere un entorno Linux con especificaciones de hardware moderadas, y ofrece la flexibilidad de despliegue tanto en configuraciones tradicionales como en contenedores Docker, asegurando así un entorno de desarrollo y producción consistente y escalable.

Requisitos del Sistema y Especificaciones Técnicas

● Software requerido

   ○ PHP versión 8.2 con paquetes XML, CURL, PGSQL (PHP Group, 2022).

   ○ PostgreSQL versión 16.2 (PostgreSQL Global Development Group, 2023).

   ○ Opcional: Docker versión 26.0.0 con Docker Compose versión 1.29.2 (Docker Inc., 2023).

● Tecnologías utilizadas

   ○ Framework PHP Laravel versión 11.0 (Taylor Otwell, 2023).

   ○ Paquete Laravel Sanctum versión 4.0 (Taylor Otwell, 2023).

   ○ Paquete Redis Server versión 7.0.12 (Redis Ltd., 2022).

   ○ Paquete Soketi Server versión 1.6.1 (Soketi Contributors, 2022).

   ○ Paquete Pusher PHP Server versión 8.4.0 (Pusher Ltd., 2022).

   ○ Paquete Spatie Laravel Permission versión 6.4 (Spatie, 2023).

● Requisitos de hardware recomendados

   ○ Memoria RAM: 2GB

   ○ Espacio en Disco Duro: 40GB

● Sistema operativo:

   ○ Es obligatorio utilizar un Sistema Operativo Linux con una de las siguientes versiones:

      ■ Debian >= 11 estable (Debian Project, 2021).

      ■ Ubuntu >= 22.04 LTS Server (Canonical Ltd., 2022).

Arquitectura del Sistema

La arquitectura Laravel MVC (Modelo-Vista-Controlador) integrada con Soketi (Figura 15) representa una implementación robusta para aplicaciones web en tiempo real. Esta estructura combina el patrón de diseño MVC tradicional de Laravel, que separa la lógica de negocio, la

presentación y el manejo de datos, con la capacidad de comunicación bidireccional en tiempo real proporcionada por Soketi, un servidor WebSocket compatible con Pusher. Esta integración permite desarrollar aplicaciones web dinámicas y escalables que pueden manejar tanto solicitudes HTTP tradicionales como comunicaciones en tiempo real y un flujo de datos organizado.

A continuación, se detalla el análisis de cada fase del sistema, describiendo las interacciones y responsabilidades de los componentes involucrados:


● Inicio de la Interacción Cliente-Servidor:

   ○ El Navegador Web realiza una petición HTTP inicial, solicitando una ruta específica de la     aplicación.

   ○ Paralelamente, se establece una conexión WebSocket persistente entre el Navegador         Web y el servidor Soketi para habilitar la comunicación en tiempo real.

   ○ JavaScript en el cliente se prepara para escuchar eventos específicos a través de esta         conexión WebSocket.

● Procesamiento en la Capa de Enrutamiento:

   ○ En los archivos de la carpeta routes, se definen las rutas a partir de una URL solicitada y     se indica qué controlador y método debe manejar la petición (enrutamiento).

   ○ En el archivo /routes/channels.php gestiona un sistema de autorización robusto para los       canales WebSocket:

      ■ Verifica los permisos del usuario para acceder a canales específicos.

      ■ Autoriza o deniega las suscripciones a canales privados/presencia.

      ■ Mantiene la seguridad en la comunicación en tiempo real.

● Ejecución en la Capa de Control:

   ○ El controlador actúa como orquestador realizando operaciones fundamentales:

      ■ Procesa la lógica de negocio y coordina las interacciones entre componentes.

      ■ Ejecuta consultas y operaciones CRUD a través de los modelos para gestionar los                datos.

      ■ Renderiza las vistas utilizando Blade Templates para generar las vistas en HTML.

      ■ Dispara eventos cuando ocurren acciones significativas que requieren notificación en            tiempo real.

● Gestión en la Capa de Modelo y Persistencia:

   ○ Los modelos encapsulan la lógica de acceso a datos.

   ○ Realizan operaciones de persistencia en la base de datos PostgreSQL:

      ■ Ejecutan consultas complejas.

       Gestionan relaciones entre entidades.

      ■ Mantienen la integridad de los datos.

      ■ Implementan validaciones.

● Procesamiento en el Sistema de Eventos y Broadcasting:

   ○ Los eventos son disparados por el controlador cuando ocurren cambios significativos.

   ○ El Broadcast Service procesa estos eventos y los prepara para su transmisión:

      ■ Serializa los datos del evento.

      ■ Determina los canales de transmisión.

      ■ Gestiona la autenticación y autorización.

   ○ El servidor Soketi recibe los eventos del Broadcast Service y los distribuye:

      ■ Mantiene un registro de las conexiones activas.

      ■ Gestiona la distribución eficiente de mensajes.

      ■ Asegura la entrega confiable de eventos.

● Actualización en la Capa de Cliente:

   ○ JavaScript actúa como receptor de eventos:

      ■ Escucha continuamente los eventos emitidos por Soketi.

      ■ Procesa los datos recibidos.

      ■ Actualiza la interfaz de usuario dinámicamente.

   ○ El Navegador Web mantiene una conexión WebSocket activa que:

      ■ Permite una comunicación bidireccional fluida.

      ■ Reduce la latencia en la transmisión de datos.

      ■ Optimiza el uso de recursos del servidor.

   ○ La interfaz de usuario se actualiza en tiempo real:

      ■ Refleja cambios instantáneos sin recargar la página.

      ■ Proporciona una experiencia de usuario fluida y reactiva.

      ■ Mantiene la consistencia de datos entre todos los clientes conectados.

Tabla de contenidos