Serverless computing increases developer productivity by removing operational concerns such as managing hardware or software runtimes. Developers, however, still need to partition their application into functions, which can be error-prone and adds complexity: Using a small function size where only the smallest logical unit of an application is inside a function maximizes flexibility and reusability. Yet, having small functions leads to invocation overheads, additional cold starts, and may increase cost due to busy waiting. In this paper we present Fusionize, a framework that removes these concerns from developers by automatically fusing the application code into a multi-function orchestration with varying function size. Developers only need to write the application code following a lightweight programming model and do not need to worry how the application is turned into functions. Our framework automatically fuses different parts of the application into functions and manages their interactions. Leveraging monitoring data, the framework optimizes the distribution of application parts to functions to optimize deployment goals such as end-to-end latency and cost. Using two example applications, we show that Fusionize can automatically and iteratively improve the deployment artifacts of the application.
翻译:无服务器计算通过消除硬件或软件运行时间的管理等操作问题来提高开发者的生产率。 然而, 开发者仍然需要将其应用程序分割成功能, 这可能容易出错, 并增加复杂性 : 使用一个小功能大小, 只要应用程序中最小的逻辑单位在功能内, 就会使灵活性和可再使用性最大化 。 然而, 拥有小功能会导致调用间接费用, 额外的冷点启动, 并可能因繁忙等待而增加成本 。 在本文中, 我们介绍“ 聚合”, 这个框架可以将应用程序代码自动地将应用程序代码转换成功能大小不同的多功能管弦化。 开发者只需要按照一个轻度程序编程模型写入应用程序代码, 不必担心应用程序是如何转换为功能。 我们的框架自动将应用程序的不同部分连接到功能中, 并管理它们的互动。 利用监测数据, 框架优化应用程序部件的分布到功能, 优化部署目标, 如端到端的粘度和成本等 。 我们以两个应用程序为例, 显示“ 整合” 可以自动和迭代改进应用程序的安装器 。