Apiary: A DBMS-Integrated Transactional Function-as-a-Service Framework

Peter Kraft Stanford

Qian Li Stanford

Kostis Kaffes Stanford

Athinagoras Skiadopoulos Stanford

Deeptaanshu Kumar

Danny Cho

Jason Li

Robert Redmond

Nathan Weckwerth

Brian Xia

Peter Bailis

Michael Cafarella

Goetz Graefe

Jeremy Kepner

Christos Kozyrakis Stanford

Michael Stonebraker MIT

Lalith Suresh

Xiangyao Yu

Matei Zaharia UC Berkeley

Preprint, 2022


Abstract

Developers increasingly use function-as-a-service (FaaS) platforms for data-centric applications that perform low-latency and transactional operations on data, such as for microservices or web serving. Unfortunately, existing FaaS platforms support these applications poorly because they physically and logically separate application logic, executed in cloud functions, from data management, done in interactive transactions accessing remote storage. Physical separation harms performance while logical separation complicates efficiently providing transactional guarantees and fault tolerance. This paper introduces Apiary, a novel DBMS-integrated FaaS platform for deploying and composing fault-tolerant transactional functions. Apiary physically co-locates and logically integrates function execution and data management by wrapping a distributed DBMS engine and using it as a unified runtime for function execution, data management, and operational logging, thus providing similar or stronger transactional guarantees as comparable systems while greatly improving performance and observability. To allow developers to write complex stateful programs, we leverage this integration to enable efficient and fault-tolerant function composition, building a frontend for orchestrating workflows of functions with the guarantees that each workflow runs to completion and each function in a workflow executes exactly once. We evaluate Apiary against research and production FaaS platforms and show it outperforms them by 2–68x on microservice workloads by reducing communication overhead.