Restructuring Serverless Computing with Data-Centric Function Orchestration
Serverless applications are usually composed of multiple short-lived, single-purpose functions exchanging data in reaction to events or changes of states. Existing function orchestration services coordinate functions and trigger their activation following some predefined rules (e.g., function dependency and state machine), while being oblivious to the underlying data exchange between functions. Such design has limited expressiveness and incurs high orchestration overhead: developers often need to manage complex function interactions by themselves, and the performance can still be unsatisfactory. In this paper, we advocate data-centric orchestration where function invocations are triggered by the flow of data. In our design, the platform provides data trigger APIs through which developers can control when and how the output of one or many functions is passed to other functions as input and triggers their executions. With explicit support of data triggers, complex function interactions can be easily implemented, and data locality can also be satisfied. As a manifestation of this design, we present Pheromone, a scalable, low-latency serverless platform. Pheromone schedules functions close to the input with a two-level, shared-nothing scheduling hierarchy. Compared to existing commercial and open-source platforms, Pheromone cuts the latencies of function interactions and data exchanges by orders of magnitude and scales well to complex workflows with long function chains and high parallelism. Case studies further demonstrate that Pheromone enables easy implementations of many applications, including real-time query, stream processing, and MapReduce sort.
READ FULL TEXT