databases, gateways, messaging systems are needed
to build cloud applications as well. These services
increase the risk for an ecosystem lock-in at the se-
lected vendor. This was already identified as a risk
for building cloud (Armbrust et al., 2010) and espe-
cially serverless applications (Baldini et al., 2017) by
having the fast changing “API jungle” (van Eyk et al.,
2018) in mind.
Additionally we want to extend our scope in or-
der to consider on the software lifecycle rather than
the development of a single function only. Initial de-
velopment, evolution, service deployment and opera-
tion, closedown and phaseout are the five steps of the
software lifecycle as defined by RAJLICH and BEN-
NETT (Rajlich and Bennett, 2000). Since portability
considerations only influence the first three phases,
we will exclude the latter two. We combine the first
two phases in implementation aspects and split servic-
ing into packaging and deployment. Each of our re-
search questions is related to one of these three steps:
• RQ1: (1) How can the portability of a serverless
application be assessed based on code properties
and metrics? (2) How can the challenges of porta-
bility be solved when considering dependencies
on other services like in-function database calls?
• RQ2: (1) Which packaging options exist for
cloud function provisioning? (2) Does the chosen
packaging option increase or decrease portability
for a cloud function?
• RQ3: (1) Which deployment options exist for
cloud functions? (2) Does the chosen deployment
option increase or decrease portability for a cloud
function? (3) How can Infrastructure as Code so-
lutions support developers to provide cloud func-
tions with and without dependent services on dif-
ferent platforms?
To answer our research questions, we state related
work in Section 2. For deployment, we chose the
three public cloud providers Amazon Web Services
(AWS), Azure Cloud (AZC) and Google Cloud Plat-
form (GCP). As a baseline, we use AWS and migrate
our functions and the dependent services to AZC and
GCP as suggested by (Yussupov et al., 2019). Un-
like their approach, we already had the migration in
mind and looked at potential portability weaknesses
during experiment design. We discuss our experimen-
tal setup in Section 3, where we list the technologies
and tools used. In Sections 4, 5 and 6, we discuss
the research questions in order. At the beginning of
each of these Sections, we describe the situation and
the challenges we faced. We then propose different
implementation solutions and define dimensions on
which to compare the solutions. In Section 7, we dis-
cuss our results and point out some threats to validity
introduced by our methodology and experiment. Fu-
ture work concludes the paper.
2 RELATED WORK
Some authors identified the need to have a uni-
form interface to finally solve portability issues in
FaaS (Jonas et al., 2019). They argue that an ab-
straction introduced by Knative
3
via containerization
and Kubernetes could be a solution which is also
pushed by Google’s cloud platform. Another interest-
ing work was done by (Yussupov et al., 2019) who
implemented four typical FaaS use cases on AWS.
Then they migrated these applications to AZC and
IBM cloud where they faced different types of lock-
ins. To categorize these lock-ins, they used a scheme
according to HOPHE
4
. The assessment was based on
a binary (yes/no) decision to determine whether some
aspects need to be changed. These include, for exam-
ple, the programming language if the target platform
of the migration does not offer the initial language.
Furthermore, they included a mapping of typical
application components at different providers which
helps to find the corresponding service at the target
platform. This experience report on the challenges
of an “unplanned migration” (Yussupov et al., 2019)
is an interesting contribution, but lacks details like
the Lines of Code (LOC) metric, and the compari-
son between the providers. In addition, YUSSUPOV
and others (Yussupov et al., 2020) asked the question
whether and to which extent an application is portable
to another platform. To investigate this, they trans-
formed a serverless application to a provider agnostic
model using established frameworks like the Cloud-
Application-Management Framework (CAMF) (An-
toniades et al., 2015) or Topology and Orchestration
Specification for Cloud Applications (TOSCA) (Binz
et al., 2013).
In edge use cases, portability is even more impor-
tant since the hardware used is more heterogeneous.
Early works deal with these issues by suggesting a
FaaS platform based on WebAssembly
5
(Hall and Ra-
machandran, 2019) or using Linux containers, i.e.
cgroups and namespaces capabilities to allow for a
common interface for edge and cloud elements to en-
able also shifting of components (Wolski et al., 2019).
3
https://knative.dev/docs/
4
https://martinfowler.com/articles/oss-lockin.html
5
https://webassembly.org/
CLOSER 2022 - 12th International Conference on Cloud Computing and Services Science
134