Multi-Event Triggers for Serverless Computing
Natalie Carl, Trever Schirmer, Niklas Kowallik, Joshua Adamek, Tobias Pfandzelter, Sergio Lucia, David Bermbach
TL;DR
The paper tackles the limitation of current FaaS platforms that trigger functions on single events by introducing multi-event triggers and the MET engine, enabling fan-in and join-style invocation conditions. It defines a formal rule system with AND/OR compositions and builds a prototype MET engine consisting of dispatchers and invokers that process events and trigger functions without embedding complex logic in the functions themselves. The evaluation shows substantial latency improvements (about 62.5% median reduction) and high throughput (exceeding 300k rps in a four-node setup), demonstrating that MET can scale to large FaaS platforms while preserving serverless benefits. This approach reduces unnecessary invocations and related costs, improves responsiveness for complex event processing, and lays groundwork for future geo-distributed deployments and richer trigger rule types.
Abstract
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.
