Reactive Systems: Arquitectura y desempeño de middleware reactivo para el procesamiento de grandes volúmenes de datos (BigData) (2019)
Las aplicaciones reactivas exigen la detección de los cambios que se producen en un dominio de interés y, para que las reacciones sean oportunas, los ejemplos van desde simples aplicaciones interactivas hasta complejas tareas de monitoreo que implican sistemas distribuidos y heterogéneos. En los últimos años, se han propuesto diferentes paradigmas y soluciones de programación para apoyar estas aplicaciones. La Programación Reactiva ha sido el paradigma que provee soluciones a largo plazo para las organizaciones en la Era del Internet donde se producen datos en casi cualquier máquina, conexión, aplicación, etc. Teniendo en cuenta que actualmente las aplicaciones web requieren mucho más dinamismo, es vital que éstas se actualicen sin utilizar dependencias externas o internas. Se espera entonces que un sistema interactúe con su entorno, intercalando temporalmente entradas y salidas, lo que significa que dentro de un tiempo adecuado (dependiendo de la aplicación) el sistema devuelva una respuesta en función de las entradas recibidas y continúa con el ciclo de ejecución, esto es, ser un cliente asíncrono. Los sistemas de programación basados en eventos (específicamente el Procesamiento de Eventos Complejos) permiten la definición de situaciones de alto nivel de interés, desde eventos primitivos de bajo nivel detectados en el entorno hasta la producción y consumo de grandes cantidades de datos. En este trabajo, nos centramos en mostrar un lenguaje reactivo enfocado a la distribución adoptando principios reactivos como: arquitectura basada en mensajes, capacidad de respuesta, elasticidad y resiliencia. También presentamos el estado del arte de la programación reactiva y la forma en que el lenguaje reactivo soporta los valores que cambian con el tiempo y su composición como abstracciones de lenguaje dedicado con reconocimiento de ciertos patrones que se comportan de acuerdo a un contexto dado. El estado del arte expone las investigaciones de diferentes comunidades, pertenecientes a las áreas de bases de datos, sistemas distribuidos y lenguajes de programación. Creemos que una comprensión más profunda de estos campos de investigación, incluyendo sus beneficios y limitaciones, sus similitudes y diferencias, podría impulsar nuevos desarrollos en el apoyo a las aplicaciones reactivas. A pesar de algunas diferencias entre las implementaciones, creemos que tal comparación puede desencadenar una discusión interesante entre las comunidades, favorecer el intercambio de conocimientos y dejar que surjan nuevas ideas.