  The increased use of micro-services to build web applications has spurred the
rapid growth of Function-as-a-Service (FaaS) or serverless computing platforms.
While FaaS simplifies provisioning and scaling for application developers, it
introduces new challenges in resource management that need to be handled by the
cloud provider. Our analysis of popular serverless workloads indicates that
schedulers need to handle functions that are very short-lived, have
unpredictable arrival patterns, and require expensive setup of sandboxes. The
challenge of running a large number of such functions in a multi-tenant cluster
makes existing scheduling frameworks unsuitable.
  We present Archipelago, a platform that enables low latency request execution
in a multi-tenant serverless setting. Archipelago views each application as a
DAG of functions, and every DAG in associated with a latency deadline.
Archipelago achieves its per-DAG request latency goals by: (1) partitioning a
given cluster into a number of smaller worker pools, and associating each pool
with a semi-global scheduler (SGS), (2) using a latency-aware scheduler within
each SGS along with proactive sandbox allocation to reduce overheads, and (3)
using a load balancing layer to route requests for different DAGs to the
appropriate SGS, and automatically scale the number of SGSs per DAG. Our
testbed results show that Archipelago meets the latency deadline for more than
99% of realistic application request workloads, and reduces tail latencies by
up to 36X compared to state-of-the-art serverless platforms.
