A mixed-method empirical study of Function-as-a-Service software development in industrial practice

Software Engineering Division, Chalmers | University of Gothenburg, Gothenburg, Sweden
Thomas J. Watson Research Center, IBM Research, New York, United States of America
Service Prototyping Lab, Zurich University of Applied Sciences (ZHAW), Winterthur, Switzerland
DOI
10.7287/peerj.preprints.27005v1
Subject Areas
Distributed and Parallel Computing, World Wide Web and Web Science, Software Engineering
Keywords
cloud computing, serverless, Function-as-a-Service, empirical study
Copyright
© 2018 Leitner et al.
Licence
This is an open access article distributed under the terms of the Creative Commons Attribution License, which permits unrestricted use, distribution, reproduction and adaptation in any medium and for any purpose provided that it is properly attributed. For attribution, the original author(s), title, publication source (PeerJ Preprints) and either DOI or URL of the article must be cited.
Cite this article
Leitner P, Wittern E, Spillner J, Hummer W. 2018. A mixed-method empirical study of Function-as-a-Service software development in industrial practice. PeerJ Preprints 6:e27005v1

Abstract

Function-as-a-Service (FaaS) describes cloud computing services that make infrastructure components transparent to application developers, thus falling in the larger group of “serverless” computing models. When using FaaS offerings, such as AWS Lambda, developers provide atomic and short-running code for their functions, and FaaS providers execute and horizontally scale them on- demand . Currently, there is no systematic research on how developers use serverless, what types of applications lend themselves to this model, or what architectural styles and practices FaaS-based applications are based on. We present results from a mixed-method study, combining interviews with advanced practitioners, a systematic analysis of grey literature, and a Web-based survey. We find that successfully adopting FaaS requires a different mental model, where systems are primarily constructed by composing pre-existing services, with FaaS often acting as the “glue” that brings these services together. Tooling availability and maturity, especially related to testing and deployment, remains a major difficulty. Further, we find that current FaaS systems lack systematic support for function reuse, and abstractions and programming models for building non-trivial FaaS applications are limited . We conclude with a discussion of implications for FaaS providers, software developers, and researchers.

Author Comment

This preprint is currently under review at a peer-reviewed journal.