  FaaS (Function-as-a-Service) revolutionized cloud computing by replacing
persistent virtual machines with dynamically allocated resources. This shift
trades locality and statefulness for a pay-as-you-go model more suited to
variable and infrequent workloads. However, the main challenge is to adapt
services to the serverless paradigm while meeting functional, performance, and
consistency requirements. In this work, we push the boundaries of FaaS
computing by designing a serverless variant of ZooKeeper, a centralized
coordination service with a safe and wait-free consensus mechanism. We define
synchronization primitives to extend the capabilities of scalable cloud storage
and outline a set of requirements for efficient computing with serverless. In
FaaSKeeper, the first coordination service built on serverless functions and
cloud-native services, we explore the limitations of serverless offerings and
propose improvements essential for complex and latency-sensitive applications.
We share serverless design lessons based on our experiences of implementing a
ZooKeeper model deployable to clouds today. FaaSKeeper maintains the same
consistency guarantees and interface as ZooKeeper, with a serverless price
model that lowers costs up to 110-719x on infrequent workloads.
