Este artículo narra cómo logramos acelerar 600x la simulación Monte Carlo de asignación de horarios estudiantiles utilizando Web Workers y optimizaciones en el cliente
Partíamos de una versión prototipo que tardaba aproximadamente 50 segundos por solicitud de simulación y no soportaba bien unos 100 usuarios concurrentes en la nube compartida
El reto era claro: quitar el cuello de botella del servidor y ofrecer respuestas en tiempo real o incluso en menos tiempo que una carga de página
Curso CourseCast es un simulador de horarios inspirado en el sistema Course Match de la Wharton School donde cada estudiante valora cursos con una utilidad entre 0 y 100
El algoritmo original determina precios de equilibrio en función de oferta y demanda y asigna horarios maximizando utilidades y créditos dentro de las limitaciones de presupuesto de cada estudiante
Como los precios reales de equilibrio son desconocidos con antelación, CourseCast predice precios usando datos históricos y asume incertidumbre modelando cada precio como una variable aleatoria normal
Se ejecutan 100 simulaciones Monte Carlo muestreando precios y contando la frecuencia con la que aparecen cursos y combinaciones de horarios para presentar probabilidades al usuario
En la versión inicial la aplicación estaba implementada en Python y ejecuciones secuenciales de 100 instancias de un solver de programación lineal conducían a tiempos de respuesta de un minuto por usuario
La primera optimización fue cuestionar la necesidad del servidor Python y trasladar el cómputo al navegador: el formato Parquet permitió empaquetar y servir de forma eficiente todos los metadatos de cursos y los pesos del modelo para que el cliente cargara todo localmente
También se identificó una alternativa en JavaScript para resolver problemas de programación lineal, lo que eliminó la dependencia obligatoria de bibliotecas Python
La segunda optimización consistió en precomputar las reglas estáticas de conflicto entre cursos como grupos de conflicto que representan clases cuyas franjas horarias se solapan
Estos grupos de conflicto y metadatos con valores aleatorios iniciales se compactaron en un único archivo courses.parquet de tamaño reducido y se sirvieron desde CDN para reducir latencia y aprovechar cacheo en el borde
La tercera optimización atacó la naturaleza secuencial de las 100 simulaciones: cada ensayo es independiente, por lo que se puede paralelizar
Como las simulaciones son operaciones CPU bound, no eran adecuadas para async await en el hilo principal porque bloquearían el event loop; por tanto se usaron Web Workers para ejecutar el trabajo en hilos separados sin afectar la UI
Se diseñó un patrón de un solo envío y respuesta por worker, envolviendo el intercambio de mensajes en una interfaz basada en promesas para integrarlo con librerías de gestión de estado y caché en la UI
Para maximizar rendimiento se implementó un pool de threads usando navigator.hardwareConcurrency para determinar el número óptimo de workers y distribuir los 100 ensayos en batches entre los núcleos disponibles
Al reciclar workers en un pool se evitó la sobrecarga de inicialización por tarea y se ejecutaron múltiples solver en paralelo, reduciendo el tiempo total de ejecución de minutos a tiempos subsegundo en dispositivos con hardware moderno
Con el cómputo en el cliente, los conflictos precomputados y la paralelización por worker pool, CourseCast pasó de ser un prototipo limitado por la infraestructura a una solución prácticamente ilimitada en escala y muy rápida en respuesta
Lecciones clave aprendidas incluyen aprovechar el poder del navegador para offload compute cuando los datos son apropiados, precomputar información estática para evitar trabajo repetido y detectar oportunidades de paralelización en tareas independientes
En Q2BSTUDIO aplicamos estos principios para desarrollar soluciones de software a medida y aplicaciones a medida que combinan inteligencia artificial, agentes IA y arquitecturas eficientes que escalan sin necesidad de infraestructura pesada
Nuestros servicios incluyen software a medida, inteligencia artificial para empresas, servicios de ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y despliegues de paneles con power bi para visualización y análisis
Si tu proyecto requiere simulaciones paralelizables, procesamiento intensivo o agentes IA integrados, en Q2BSTUDIO podemos diseñar soluciones que muevan cómputo al cliente cuando convenga o que aprovechen la nube de forma híbrida para equilibrar seguridad y rendimiento
Contacta con Q2BSTUDIO para explorar cómo podemos transformar tu idea en una aplicación de alto rendimiento, segura y optimizada para negocio usando inteligencia artificial, ciberseguridad y servicios cloud aws y azure
Resumen de beneficios tecnológicos aplicables: menos dependencia de servidores costosos, mejora de experiencia de usuario con UI siempre responsiva, reducción de latencia mediante cacheo CDN y service workers, y escalabilidad natural al aprovechar los recursos del dispositivo
En conjunto estas técnicas permiten construir productos escalables y rápidos que mejoran la adopción por parte de usuarios finales y reducen el coste total de propiedad
Q2BSTUDIO combina experiencia técnica y foco en negocio para entregar software a medida que integra inteligencia artificial, agentes IA, power bi y servicios inteligencia de negocio con las mejores prácticas de ciberseguridad y arquitecturas cloud