With the advent of serverless computing in diverse domains such as big data, machine learning, web applications, and edge computing there is a growing need for dynamic adaption to handle such diverse and heterogeneous functions. However, serverless computing is currently limited to homogeneous Function-as-a-Service (FaaS) deployments or simply FaaS Deployment (FaaSD) consisting of deployments of serverless functions using a FaaS platform in a region with certain memory configurations. Extending serverless computing to support Heterogeneous FaaS Deployments (HeteroFaaSDs) consisting of multiple FaaSDs with variable configurations (FaaS platform, region, and memory) and dynamically load balancing the invocations of the functions
across these FaaSDs within a HeteroFaaSD can provide an optimal way for handling such serverless functions. In this paper, we present a software system called Courier that is responsible for optimally distributing the invocations of the functions (called delivering of serverless functions) within the HeteroFaaSDs based on the execution time of the functions on the FaaSDs comprising the
HeteroFaaSDs. To this end, we developed two approaches: Auto Weighted Round-Robin (AWRR) and Per-Function Auto Weighted Round-Robin (PFAWRR) that use functions execution times for delivering serverless functions within a HeteroFaaSD to reduce the overall execution time. We demonstrate and evaluate the functioning of our developed tool and proposed approaches on three HeteroFaaSDs using three FaaS platforms: 1) on-premise OpenWhisk, 2) AWS Lambda, and 3) Google Cloud Functions (GCF). We show that Courier can improve the overall performance of
the invocations of the functions within a HeteroFaaSD as compared to traditional load balancing algorithms.
Paper titled "Courier: Delivering Serverless Functions Within Heterogeneous FaaS Deployments" by Jindal et al. accepted at IEEE/ACM UCC 2021