Multi-level FaaS Application Deployment Optimization
Functions as a Service (FaaS) has become a trend in software engineering due to its simplicity, elasticity, and cost-effectiveness. FaaS has drawn both the industry’s and researchers’/practitioners’ attention. We notice that more applications are shifted to cloud platforms; however few studies are conducted on how to deploy a FaaS application in a cost-efficiency way. From the perspective of deploying a FaaS application, resource allocation optimization and application-level latency reduction are the two factors that affect the overall performance and total running cost of a FaaS application. Currently, many developers manually analyze the execution logs and run multiple trials to predict a proper deployment strategy or just deploy functions with the finest granularity by default. Such tasks require a considerable amount of human effort, and it has to be done repeatedly whenever the FaaS platform carries out performance-related upgrading. To mitigate this problem, we explore several potential solutions and implement a highly automated framework, which can optimize the deployment of an application from both the perspectives of memory allocation and application-level latency reduction. This study has been conducted by following the guideline of design science research methodology. Afterwards, a controlled experiment is performed to evaluate the framework. The preliminary evaluation reveals that the framework successfully delivers the optimal strategies for cheapest, fastest, and trade-off balanced (on the specific test case, the framework identifies a 10.5% speed gap and 13.3% cost difference between the most optimal case and the worst case). Furthermore, the framework is open-sourced on GitHub for further studies.