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

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.

[1]  Maciej Malawski,et al.  Benchmarking Heterogeneous Cloud Functions , 2017, Euro-Par Workshops.

[2]  Jürgen Cito,et al.  Extraction of Microservices from Monolithic Software Architectures , 2017, 2017 IEEE International Conference on Web Services (ICWS).

[3]  Magne Jørgensen,et al.  Can you Trust a Single Data Source Exploratory Software Engineering Case Study? , 2002, Empirical Software Engineering.

[4]  Perry Cheng,et al.  Building a Chatbot with Serverless Computing , 2016, MOTA@Middleware.

[5]  Harald C. Gall,et al.  We're doing it live: A multi-method empirical study on continuous experimentation , 2018, Inf. Softw. Technol..

[6]  Gojko Adzic,et al.  Serverless computing: economic and architectural impact , 2017, ESEC/SIGSOFT FSE.

[7]  Harald C. Gall,et al.  The making of cloud applications: an empirical study on software development for the cloud , 2014, ESEC/SIGSOFT FSE.

[8]  Shubhashis Sengupta,et al.  MAT: A Migration Assessment Toolkit for PaaS Clouds , 2013, 2013 IEEE Sixth International Conference on Cloud Computing.

[9]  Perry Cheng,et al.  The serverless trilemma: function composition for serverless computing , 2017, Onward!.

[10]  Marc Sánchez Artigas,et al.  Data-driven serverless functions for object storage , 2017, Middleware.

[11]  Emerson R. Murphy-Hill,et al.  I heart hacker news: expanding qualitative research findings by analyzing social news websites , 2015, ESEC/SIGSOFT FSE.

[12]  Josef Spillner Practical Tooling for Serverless Computing , 2017, UCC.

[13]  Tom Mens,et al.  Challenges in Software Ecosystems Research , 2015, ECSA Workshops.

[14]  Zaigham Mahmood,et al.  Cloud Computing: Concepts, Technology & Architecture , 2013 .

[15]  Mazin S. Yousif,et al.  Microservices , 2016, IEEE Cloud Comput..

[16]  Werner Vogels,et al.  Dynamo: amazon's highly available key-value store , 2007, SOSP.

[17]  Stephen J. Fink,et al.  Visualizing serverless cloud application logs for program understanding , 2017, 2017 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[18]  Boualem Benatallah,et al.  Web Service Composition , 2015 .

[19]  Ion Stoica,et al.  Occupy the cloud: distributed computing for the 99% , 2017, SoCC.

[20]  Leif Singer,et al.  Software engineering at the speed of light: how developers stay current using twitter , 2014, ICSE.

[21]  Pooyan Jamshidi,et al.  Microservices Architecture Enables DevOps: Migration to a Cloud-Native Architecture , 2016, IEEE Software.

[22]  Jimmy J. Lin,et al.  An Exploration of Serverless Architectures for Information Retrieval , 2017, ICTIR.

[23]  Andreas Polze,et al.  A Performance Survey of Lightweight Virtualization Techniques , 2017, ESOCC.

[24]  Vahid Garousi,et al.  The need for multivocal literature reviews in software engineering: complementing systematic literature reviews with grey literature , 2016, EASE.

[25]  Claus Pahl,et al.  Microservices: A Systematic Mapping Study , 2016, CLOSER.

[26]  Liming Zhu,et al.  DevOps - A Software Architect's Perspective , 2015, SEI series in software engineering.