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

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 mod- els. 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 nosystematic 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 practitioners who develop applications and systems that use FaaS, 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 to- gether. 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 ab- stractions 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.


Empirical research


Cloud Computing


Philipp Leitner

Chalmers, Computer Science and Engineering (Chalmers), Software Engineering (Chalmers), Software Engineering for People, Architecture, Requirements and Traceability

J. Erik Wittern

IBM Research

Josef Spillner

Zurich University of Applied Sciences

Waldemar Hummer

IBM Research

Journal of Systems and Software

0164-1212 (ISSN)

Vol. 149 340-359

Areas of Advance

Information and Communication Technology

Subject Categories

Software Engineering

Computer Science



More information

Latest update