6 CONCLUSION
As the number of companies developing and deploy-
ing serverless applications continues to rise, a natu-
ral question that everyone joining this direction asks
is what are the best practices or the design patterns
to follow to make the best of this novel technology.
So far, most companies have been exploring the new
territory by applying known methods and patterns
coming from well-established technologies (e.g., mi-
croservices, web services). However, as serverless
technology is becoming mainstream, two classes of
patterns start to emerge. The first class represents
existing patterns that have been adapted from exist-
ing technologies to fit the serverless paradigm, others
instead have been developed specifically to address
serverless implementation needs.
Practitioners proposed several patterns, and the
community is already aware of several of them. We
can observe here a community in an early adoption
stage. However, existing reports highlight the value
of these patterns, although complexities introduced
by serverless are only slowly emerging. In any way,
the pattern catalog that we extracted from the litera-
ture and has been confirmed by the survey provides a
valuable basis for practitioners and researchers alike.
In this fast-evolving technology context, more
tools will be developed, that might require either new
patterns or turn those that are work-around for lim-
itations obsolete. Here, a continuous update of any
pattern catalog is necessary.
Future work includes the validation of the actual
usefulness of these patterns in more concrete appli-
cation contexts as well as the identification of anti-
patterns.
ACKNOWLEDGEMENTS
This research was partially supported by the grant
”SHAPIT” awarded by the Ulla Tuominen Founda-
tion (Finland)
REFERENCES
Al-Ameen, M. and Spillner, J. (2018). Systematic and open
exploration of faas and serverless computing research.
In European Symposium on Serverless Computing and
Applications.
Alqaryouti, O., Siyam, N., et al. (2018). Serverless com-
puting and scheduling tasks on cloud: A review.
American Scientific Research Journal for Engineer-
ing, Technology, and Sciences (ASRJETS), 40(1):235–
247.
Erl, T. (2008). SOA Design Patterns (paperback). Pearson
Education.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. M.
(1994). Design Patterns: Elements of Reusable
Object-Oriented Software. Addison-Wesley Profes-
sional, 1 edition.
Garousi, V., Felderer, M., and M
¨
antyl
¨
a, M. V. (2019).
Guidelines for including grey literature and conduct-
ing multivocal literature reviews in software engineer-
ing. Inf. and Software Technology, 106:101 – 121.
Kuhlenkamp, J. and Werner, S. (2018). Benchmarking faas
platforms: Call for community participation. In Int.
Conf. on Utility and Cloud Computing.
Leitner, P., Wittern, E., Spillner, J., and Hummer, W. (2019).
A mixed-method empirical study of function-as-a-
service software development in industrial practice.
Journal of Systems and Software, 149:340 – 359.
Lloyd, W., Ramesh, S., Chinthalapati, S., Ly, L., and Pal-
lickara, S. (2018). Serverless computing: An in-
vestigation of factors influencing microservice perfor-
mance. In Int. Conf. on Cloud Engineering (IC2E),
pages 159–169.
Lynn, T., Rosati, P., Lejeune, A., and Emeakaroha, V.
(2017). A preliminary review of enterprise serverless
cloud computing (function-as-a-service) platforms. In
Int. Conf. on Cloud Computing Technology and Sci-
ence (CloudCom), pages 162–169.
McGrath, Garrett, M., Short, J., Ennis, S., Judson, B.,
and Brenner, P. (2016). Cloud event programming
paradigms: Applications and analysis. IEEE Com-
puter Society.
Nupponen, J. and Taibi, D. (2020). Serverless: What it
is,what to do and what not to do. In International Con-
ference on Software Architecture (ICSA 2020).
Pahl, C., El Ioini, N., et al. (2019). Blockchain based service
continuity in mobile edge computing. In 2019 Sixth
Int. Conf. on Internet of Things: Systems, Manage-
ment and Security (IOTSMS), pages 136–141. IEEE.
Roberts, M. (2016). Serverless architectures. https://
martinfowler.com/articles/serverless.html.
Sadaqat, M., Colomo-Palacios, R., and Knudsen, L. E. S.
(2018). Serverless computing: a multivocal literature
review. Nokobit.
Shilkov., M. (2019 a). When does cold start happen on azure
functions? https://mikhail.io/serverless/coldstarts/
azure/intervals/.
Shilkov, M. (2019 b). When does cold start happen on aws
lambda? https://mikhail.io/serverless/coldstarts/aws/
intervals/.
Taibi, D., Lenarduzzi, V., and Pahl, C. (2018). Architec-
tural patterns for microservices: a systematic mapping
study. Int. Conf. on Cloud Computing and Services
Science (CLOSER2018).
Taibi, D., Lenarduzzi, V., and Pahl, C. (2019a). Microser-
vices anti-patterns: A taxonomy. Microservices - Sci-
ence and Engineering. Springer. 2019.
Taibi, D., Lenarduzzi, V., and Pahl, C. (2019b). Microser-
vices architectural, code and organizational anti-
patterns. Communications in Computer and Informa-
tion Science, pages 126–151.
Patterns for Serverless Functions (Function-as-a-Service): A Multivocal Literature Review
191