enough to implement a number of distributed com-
puting model such as Bulk synchronous parallel. In
fact, they show that highly parallelizable operation,
such as matrix multiplication, can be parallelized us-
ing lambda with very low bottleneck. More precisely,
they built their own framework to serialize any highly
parallelizable task and send them to an arbitrary num-
ber of workers on lambda. They show that the ag-
gregates TFLOPS scale linearly with the number of
workers. They also show that the read/write through-
put scale also linearly with the number of workers. Fi-
nally, they break down the time taken for each phase
of the lambda function. They show that the initial-
ization bottleneck of the lambda is 15%. In certain
application this bottleneck can be considerable.
Malawski et al. (Malawski et al., 2018) they com-
pare the serverless architecture with the HyperFlow
architecture and evaluate their benchmark on AWS,
Google Cloud and IBM OpenWhisk. They execute
their benchmark on Mersenne Twister and Linpack.
They compare the CPU resources allocated with re-
spect to the memory allocated. They observe that the
CPU resources allocated on AWS scale linearly with
the memory allocated, where the CPU resources al-
located does not scale linearly with the memory allo-
cated on Google cloud framework. They also observe
that AWS achieve over 30 GFLOPS where Google
cloud tops at 17 GFLOPS. This difference is due to
the hardware used on each platform.
10 CONCLUSION
The goal of this paper was to determine whether or
not the efforts of using serverless functions is worth
in terms of software maintainability. We think that
we have achieved this goal by providing an empiri-
cal analysis on metrics we could calculate on static
code. While taking account of the threats to the valid-
ity of this study, we still see a tendency for an increase
of maintainability in Function-as-a-Service architec-
tures. We also wanted to promote more research on
the subject and thus gave many ideas on possible fu-
ture researches.
Our results show that more than 100% (25/25) of
analyzed projects separate concerns in modules, Cou-
ple Architecture Components Loosely, keep architec-
ture components balanced, keep the codebase small,
and Write Clean Code. However (1) 88% (3/25) of
analyzed projects do not write short units of code; (2)
60% of projects (15/25) write complex units of code
and do not use well automated tests.
In fact, we found that (1) software that use server-
less technologies have a low module coupling, their
components are well balanced and are independent;
(2) serverless projects tend to have big units of code;
(3) analysability may be an issue for serverless appli-
cations; (4) it is not clear serverless technologies that
tend to be easy to modify; (5) serverless technolo-
gies are easy to test because they have a small code
base and they are made of independent components;
(6) the deployment of serverless software is in gen-
eral simplified by offering features to ease the deploy-
ment; and (7) serverless configuration management is
an open question, and there is still a large debate on
many-repositories versus mono-repository.
We also mentioned about deployment and config-
uration management, which are in many ways related
to maintainability. We discussed on how deployment
can be a challenge and what seems to be the possible
solutions. We also found out that configuration man-
agement is still a debate.
Our major concerns for maintainability are on
reusability and on configuration management. In the
project we analyzed, there seems to have a lot of du-
plicated code and heavy units of code with big inter-
faces. It would be interesting to know if these bad
tendencies are also seen in commercial projects that
might make a heavier use of FaaS technologies.
We hope that more research will be done in the
future on the subject to analyze subsequent, large-
scale applications that exist in a serverless way and
in a regular way to compare our results. This way, we
could really compare what the advantages and disad-
vantages brought by serverless architecture are in a
more meaningful and precise way.
REFERENCES
Amazon (2017a). Continuous integration deployment for
aws lambda functions with jenkins and grunt. https:
//aws.amazon.com/blogs. (Accessed on 10/17/2017).
Amazon (2017b). Serverless computing - amazon web ser-
vices. https://aws.amazon.com/serverless/. (Accessed
on 09/20/2017).
Baldini, I., Castro, P. C., Chang, K., Cheng, P., Fink, S. J.,
Ishakian, V., Mitchell, N., Muthusamy, V., Rabbah,
R. M., Slominski, A., and Suter, P. (2017). Serverless
computing: Current trends and open problems. CoRR,
abs/1706.03178.
Boehm, B. W., Brown, J. R., and Lipow, M. (1976). Quan-
titative evaluation of software quality. In Proceedings
of the 2Nd International Conference on Software En-
gineering, ICSE ’76, pages 592–605, Los Alamitos,
CA, USA. IEEE Computer Society Press.
Cavale, A. (2016). Our journey to mi-
croservices and a mono repository.
https://www.shippable.com/index.html.
Quality Aspects of Serverless Architecture: An Exploratory Study on Maintainability
69