Context
Function as a service (FaaS) is the most recent Cloud model that provides extreme agility to developers. Concretely, with FaaS, users ship their code in a specific format and store it on the Cloud store. Then, they configure events that will trigger the execution of their code e.g., a new tweet on Twitter for an account. At the code termination, the bill considers the total execution time and the memory used by code. FaaS is gaining much traction since it allows users to focus principally on the logic part of their business and leave servers provisioning to the Cloud actors. A recent report shows that the FaaS market will reach 53.08 billion $ by 2028.
A key objective of a FaaS platform is to rapidly trigger the execution of users' code upon the trigger and ensure execution isolation among different users. To achieve that, mainstream FaaS platform use virtualization, concretely: containers, microVMs, or unikernels. Unfortunately, the default boot time of the latter units is not fast enough for FaaS demands. Consequently, several research works propose techniques to improve boot time mainly through snapshotting.
Motivation.
Despite, the existing techniques, there is room for improvement as demonstrated by Cloudflare which proposes an architecture relying on the V8 javascript engine for isolation. With their architecture, they announce boot times of 1ms which outclasses existing designs. However, their architecture comes at the cost of specific constraints for the users' code. Firstly, the size of the code is limited to 1MB. Secondly, their architecture works better for native javascript since for other languages, they use WebAssembly to transform your code to javascript compliant.
Objectives.
In this work, we want to break the limitations of Cloudflare architecture. Concretely, we want to propose a generic design that can be applied per programming language specifications (e.g., Java or Go) so that the benefits are not undermined by WebAssembly. Additionally, we advocate that current isolation techniques can be improved with hardware instructions provided by vendors. The goal of the work is to assess the Cloudflare architecture, detect the special components related to the V8 to see how to apply them for any existing language, and enhance isolation plus performance through carefully crafted hardware instructions.
[1] Alexandru Agache et al. “Firecracker : Lightweight virtualization for serverless applications”.
In : 17th USENIX symposium on networked systems design and implementation (NSDI 20). 2020,
p. 419-434.
[2] Reports et data. Function-as-a-Service (FaaS) Market. https://www.reportsanddata.com/
report-detail/function-as-a-service-faas-market. 2020.
[3] Mohammad Shahrad et al. “Serverless in the wild : Characterizing and optimizing the serverless
workload at a large cloud provider”. In : 2020 USENIX Annual Technical Conference (USENIX
ATC 20). 2020, p. 205-218.
[4] Cloudflare. How workers work. https://developers.cloudflare.com/workers/learning/
how-workers-works/. 2021.
[5] Simon Kuenzer et al. “Unikraft : fast, specialized unikernels the easy way”. In : Proceedings of
the Sixteenth European Conference on Computer Systems. 2021, p. 376-394.
[6] Dmitrii Ustiugov et al. “Benchmarking, analysis, and optimization of serverless function snap-
shots”. In : Proceedings of the 26th ACM International Conference on Architectural Support for
Programming Languages and Operating Systems. 2021, p. 559-572.
[7] Ao Wang et al. “{FaaSNet} : Scalable and Fast Provisioning of Custom Serverless Container
Runtimes at Alibaba Cloud Function Compute”. In : 2021 USENIX Annual Technical Conference
(USENIX ATC 21). 2021, p. 443-457.
[8] Lixiang Ao, George Porter et Geoffrey M Voelker. “FaaSnap : FaaS made fast using snapshot-
based VMs”. In : Proceedings of the Seventeenth European Conference on Computer Systems.
2022, p. 730-746