Sistema Integral de Análisis Financiero Distribuido
Capa web institucional para gestionar usuarios y consultar series financieras sobre una infraestructura existente de MySQL, HDFS y Apache Spark.
Contexto de Negocio
La gestión de acceso al clúster y a la información financiera dependía de solicitudes por correo, hojas de cálculo y asignaciones manuales de permisos. Se necesitaba una capa web centralizada para administrar usuarios, aplicar roles, registrar actividad y facilitar la consulta de series financieras almacenadas en la infraestructura institucional.
Diseño Técnico
Aplicación MVC desarrollada con Laravel 12. Utiliza una base MySQL de lectura y escritura para usuarios, roles, auditoría y catálogos, además de una conexión MySQL de solo lectura para las series financieras. Integra recursos existentes de HDFS y Apache Spark, visualización interactiva con Chart.js, exportación a CSV y PDF y capacidades PWA.
Contribución Directa
Desarrollo de la interfaz web y de la capa de integración con la infraestructura existente; implementación de autenticación, roles, gestión de usuarios, registros de acceso y actividad, conexión dual a bases de datos, consulta y visualización de series, exportaciones, PWA y pruebas funcionales, de seguridad y rendimiento.
Sistema Integral de Análisis Financiero Distribuido
El problema
El Instituto requería centralizar el acceso a sus volúmenes de series financieras procesadas. Históricamente, este acceso dependía de procedimientos lentos como peticiones formales por correo electrónico, compartición manual de hojas de cálculo descentralizadas y asignaciones manuales de permisos directamente en la base de datos, lo que dificultaba la trazabilidad y la eficiencia operativa.
Arquitectura y decisiones técnicas
Se implementó una capa web MVC utilizando Laravel 12. Técnicamente, la aplicación opera bajo un esquema de conexión dual: una base de datos relacional (MySQL) dedicada a la lectura/escritura para gestionar la autenticación, roles, auditoría y catálogos, y una segunda conexión de solo lectura para acceder a las series financieras. Esto permite aislar y proteger la infraestructura subyacente basada en Apache Spark y HDFS, al tiempo que proporciona capacidades modernas de visualización (Chart.js) y características de Aplicación Web Progresiva (PWA).
Mi contribución
Desarrollé la interfaz web y su capa de integración con la infraestructura existente. Implementé la autenticación, los roles, la gestión de usuarios y los registros de acceso y actividad, además de la conexión dual a bases de datos. Construí los módulos de consulta y visualización de series, las exportaciones a CSV y PDF y las capacidades PWA, y ejecuté pruebas funcionales, de seguridad y de rendimiento.
Validación y resultados
Las dos pruebas automatizadas de control de acceso con PHPUnit se completaron sin fallos. En la prueba de carga con Apache Benchmark (100 solicitudes, 10 concurrentes) se completaron las 100 solicitudes, con un rendimiento medido de 16.16 solicitudes por segundo, 618.97 ms de respuesta promedio y un percentil 95 de 886 ms. La auditoría de dependencias con Composer Audit, posterior a la remediación, no reportó vulnerabilidades pendientes.
Limitaciones y decisiones pendientes
Actualmente, las consultas financieras extremadamente pesadas se procesan de forma síncrona. Aunque la infraestructura de HDFS/Spark es robusta, la aplicación web queda supeditada a los tiempos de respuesta de la base de datos de lectura, lo que en series de datos atípicamente masivas puede provocar tiempos de espera perceptibles para el usuario final en la interfaz.
Qué mejoraría en una segunda versión
Integraría el sistema de colas en segundo plano nativo de Laravel (Redis/Workers) para procesar las exportaciones de series pesadas asíncronamente, notificando al usuario en la PWA mediante WebSockets una vez que su reporte esté listo para su descarga, evitando así bloquear el hilo HTTP de la solicitud inicial.
Resultados Operativos
- 100 de 100 solicitudes completadas durante la prueba de carga con 10 solicitudes concurrentes.
- Rendimiento medido de 16.16 solicitudes por segundo, 618.97 milisegundos de respuesta promedio y percentil 95 de 886 milisegundos.
- Dos pruebas automatizadas de control de acceso completadas sin fallos.
- Auditoría posterior a la remediación con cero vulnerabilidades pendientes en las dependencias de Composer.