  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.
