Function-as-a-Service (FaaS) is an event-driven serverless cloud computing model in which small, stateless functions are invoked in response to events, such as HTTP requests, new database entries, or messages. Current FaaS platform assume that each function invocation corresponds to a single event. However, from an application perspective, it is desirable to invoke functions in response to a collection of events of different types or only with every n\textsuperscript{th} event. To implement this today, a function would need additional state management, e.g., in a database, and custom logic to determine whether its trigger condition is fulfilled and the actual application code should run. In such an implementation, most function invocations would be rendered essentially useless, leading to unnecessarily high resource usage, latency, and cost for applications. In this paper, we introduce multi-event triggers, through which complex conditions for function invocations can be specified. Specifically, we introduce abstractions for invoking functions based on a set of $n$ events and joins of multiple events of different types. This enables application developers to define intricate conditions for function invocations, workflow steps, and complex event processing. Our evaluation with a proof-of-concept prototype shows that this reduces event--invocation latency by 62.5\% in an incident detection use-case and that our system can handle more than 300,000 requests per second on limited hardware, which is sufficient load for implementation in large FaaS platforms.
academic
Disparadores Multi-Evento para Computación sin Servidor
Function-as-a-Service (FaaS) es un modelo de computación en la nube sin servidor impulsado por eventos, donde pequeñas funciones sin estado se invocan en respuesta a eventos (como solicitudes HTTP, nuevas entradas de base de datos o mensajes). Las plataformas FaaS actuales asumen que cada invocación de función corresponde a un único evento. Sin embargo, desde la perspectiva de la aplicación, es deseable que las funciones respondan a conjuntos de diferentes tipos de eventos o solo se invoquen cada n-ésimo evento. Para lograr esto, las funciones requieren gestión de estado adicional (como bases de datos) y lógica personalizada para determinar si se cumplen las condiciones de disparo. Este artículo propone disparadores multi-evento (multi-event triggers), que permiten especificar condiciones complejas de invocación de funciones. Los resultados de evaluación muestran que en casos de uso de detección de eventos, este enfoque reduce la latencia evento-invocación en un 62,5%, y el sistema puede manejar más de 300.000 solicitudes/segundo en hardware limitado.
Las plataformas FaaS actuales tienen una limitación fundamental: cada invocación de función solo puede responder a un único evento. Sin embargo, las aplicaciones reales frecuentemente requieren implementar patrones de disparo más complejos:
Patrón de Abanico de Entrada/Unión (Fan-in/Join): Necesita recopilar múltiples eventos de diferentes tipos antes de disparar la función
Disparo por Conteo: Dispara la función solo después de recibir n eventos
Disparo por Condiciones Complejas: Basado en combinaciones AND/OR de tipos y cantidades de eventos
Para mantener las ventajas del modelo de programación FaaS (bajo acoplamiento, escalado automático, desarrollo fácil), es necesario integrar la lógica de disparadores multi-evento en el mecanismo de disparo de la plataforma FaaS, en lugar de que los desarrolladores de aplicaciones la manejen manualmente.
Propuesta del Concepto de Disparadores Multi-Evento: Extensión del mecanismo de disparo de funciones FaaS para soportar condiciones de disparo complejas basadas en conjuntos de eventos
Diseño de la Arquitectura del Motor MET: Propuesta de diseño de motor de disparadores multi-evento que puede integrarse en plataformas FaaS existentes
Desarrollo de Sistema Prototipo: Implementación de prototipo de prueba de concepto que demuestra la viabilidad del diseño
Evaluación de Rendimiento: Validación del potencial y rendimiento de los disparadores multi-evento en casos de uso de detección de eventos
Los disparadores multi-evento permiten a los desarrolladores definir reglas de disparo complejas que especifican cuándo se invoca una función cuando se cumplen condiciones específicas de combinación de eventos. Las reglas de disparo se componen de tipos de eventos y cantidades correspondientes, soportando combinaciones de condiciones AND y OR.
Aumenta la cantidad de disparadores procesables mediante despliegue de invocadores adicionales
Soporta particionamiento de disparadores para mejorar aún más la capacidad de procesamiento
Objetivo de capacidad de procesamiento: 10^5 alto a 10^5 bajo solicitudes/segundo (referencia de carga de AWS Lambda en una única zona de disponibilidad)
Mejora Significativa de Latencia: El motor MET reduce significativamente la latencia de procesamiento de eventos comparado con métodos de gestión manual de estado
Buena Escalabilidad: El sistema demuestra buena capacidad de escalado horizontal
Alto Rendimiento: Logra capacidad de procesamiento requerida por plataformas FaaS grandes en hardware limitado
Limitaciones de Concurrencia: La cantidad de disparadores concurrentes en un único invocador tiene limitaciones de CPU, pero puede mitigarse mediante particionamiento
La singularidad de este enfoque radica en invocar funciones solo cuando se cumplen completamente las condiciones de disparo, reduciendo ejecuciones innecesarias y evitando necesidad de mecanismos de bloqueo para condiciones de carrera.
Limitación de Distribución Geográfica: El diseño actual se enfoca en configuraciones de múltiples nodos en un único centro de datos, no es apropiado para disparadores multi-evento distribuidos geográficamente
Sin Soporte de Condición NOT: Debido a la imposibilidad de garantizar que cierto tipo de evento no se ha recibido en entorno distribuido, no soporta condiciones NOT
Problema de Sincronización de Eventos: Necesita resolver problemas de pérdida de eventos y sincronización causados por fallos de sensores
Identificación Precisa del Problema: Identifica con precisión la limitación fundamental de plataformas FaaS en procesamiento de eventos complejos
Diseño de Solución Razonable: El diseño de arquitectura del motor MET considera escalabilidad y practicidad
Evaluación Suficiente: Evaluación integral desde múltiples dimensiones de latencia, rendimiento y concurrencia
Alto Valor Práctico: Resuelve problemas de dolor en aplicaciones reales, con fuerte valor práctico
Rendimiento Excelente: La reducción de latencia del 62,5% y capacidad de procesamiento de 30.000+ solicitudes/segundo demuestran la efectividad de la solución
Procesamiento de Datos IoT: Aplicaciones de IoT que necesitan agregar datos de múltiples sensores
Procesamiento de Eventos Complejos: Monitoreo de transacciones financieras, detección de seguridad de red y otros escenarios que requieren análisis correlacionado
Orquestación de Flujos de Trabajo: Flujos de trabajo sin servidor que necesitan esperar a que se completen múltiples tareas previas
Optimización de Procesamiento por Lotes: Agregar múltiples eventos pequeños para procesamiento por lotes posterior mejorando eficiencia
El artículo cita 34 referencias relacionadas, cubriendo principalmente:
Investigación de plataformas FaaS y mecanismos de disparo
Orquestación de flujos de trabajo sin servidor
Gestión de estado y procesamiento de eventos complejos
Evaluación de rendimiento y pruebas de referencia
Las referencias clave incluyen análisis de arquitectura de AWS Lambda, revisiones de computación sin servidor, y sistemas de orquestación de flujos de trabajo relacionados.
Este artículo propone una solución innovadora a una limitación importante de plataformas FaaS, con fuerte valor teórico y práctico. El diseño del motor MET equilibra rendimiento y escalabilidad, con evaluación experimental suficiente que valida la efectividad de la solución. Aunque hay espacio para mejora en distribución geográfica y tolerancia a fallos, en general es un trabajo de investigación de alta calidad.