Durable functions: semantics for stateful serverless

Durable functions: semantics for stateful serverless
复制标题

持久函数:有状态无服务器的语义

DOI:
--
复制
发表时间:
2021
期刊:
Proc. ACM Program. Lang.
影响因子:
--
通讯作者:
Christopher S. Meiklejohn
Christopher S. Meiklejohn
中科院分区:
--
文献类型:
--
作者:
S. Burckhardt;Christoph L. Gillum;David Justo;Konstantinos Kallas;Connor McMahon;Christopher S. Meiklejohn

文献摘要

被引文献

相似文献

无服务器或功能服务(AS-A-Service(FAAS))是应用程序开发的越来越流行的范式,因为它提供了隐式弹性缩放和基于负载的计费。但是,在开发需要持续状态,可靠进度或同步的应用程序时,FAAS的执行保证和内在的计算存储分离会带来严重的挑战。这激发了新一代的无服务器框架,这些框架提供了状态的抽象。例如,Azure的耐用功能(DF)编程模型通过参与者,工作流和关键部分增强了FAA。作为编程模型,DF很有趣,因为它结合了任务和Actor ParalleleSism,这使其适用于广泛的无服务器应用程序。我们使用示例非正式地描述了DF,并使用基于未型Lambda演算的理想化的高级模型正式描述DF。接下来,我们揭开DF运行时如何(1)在分布式的不可靠的无服务器环境中执行,但仍符合无故障的高级模型,以及(2)坚持执行进度,而无需通过检查检查点支持检查点语言运行时。为此,我们定义了两个逐渐复杂的执行模型,它们包含Compute-Storage Eparation和Record-Replay,并证明它们等于高级模型。
Serverless, or Functions-as-a-Service (FaaS), is an increasingly popular paradigm for application development, as it provides implicit elastic scaling and load based billing. However, the weak execution guarantees and intrinsic compute-storage separation of FaaS create serious challenges when developing applications that require persistent state, reliable progress, or synchronization. This has motivated a new generation of serverless frameworks that provide stateful abstractions. For instance, Azure's Durable Functions (DF) programming model enhances FaaS with actors, workflows, and critical sections. As a programming model, DF is interesting because it combines task and actor parallelism, which makes it suitable for a wide range of serverless applications. We describe DF both informally, using examples, and formally, using an idealized high-level model based on the untyped lambda calculus. Next, we demystify how the DF runtime can (1) execute in a distributed unreliable serverless environment with compute-storage separation, yet still conform to the fault-free high-level model, and (2) persist execution progress without requiring checkpointing support by the language runtime. To this end we define two progressively more complex execution models, which contain the compute-storage separation and the record-replay, and prove that they are equivalent to the high-level model.