  Serverless computing has rapidly grown following the launch of Amazon's
Lambda platform. Function-as-a-Service (FaaS) a key enabler of serverless
computing allows an application to be decomposed into simple, standalone
functions that are executed on a FaaS platform. The FaaS platform is
responsible for deploying and facilitating resources to the functions. Several
of today's cloud applications spread over heterogeneous connected computing
resources and are highly dynamic in their structure and resource requirements.
However, FaaS platforms are limited to homogeneous clusters and homogeneous
functions and do not account for the data access behavior of functions before
scheduling.
  We introduce an extension of FaaS to heterogeneous clusters and to support
heterogeneous functions through a network of distributed heterogeneous target
platforms called Function Delivery Network (FDN). A target platform is a
combination of a cluster of homogeneous nodes and a FaaS platform on top of it.
FDN provides Function-Delivery-as-a-Service (FDaaS), delivering the function to
the right target platform. We showcase the opportunities such as varied target
platform's characteristics, possibility of collaborative execution between
multiple target platforms, and localization of data that the FDN offers in
fulfilling two objectives: Service Level Objective (SLO) requirements and
energy efficiency when scheduling functions by evaluating over five distributed
target platforms using the FDNInspector, a tool developed by us for
benchmarking distributed target platforms. Scheduling functions on an edge
target platform in our evaluation reduced the overall energy consumption by 17x
without violating the SLO requirements in comparison to scheduling on a
high-end target platform.
