<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>When to use FaaS? - Influencing technical factors for and against using serverless functions</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Robin Lichtenthäler</string-name>
          <email>robin.lichtenthaeler@uni-bamberg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Stefan Winzinger</string-name>
          <email>stefan.winzinger@uni-bamberg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Johannes Manner</string-name>
          <email>johannes.manner@uni-bamberg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Guido Wirtz</string-name>
          <email>guido.wirtz@uni-bamberg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Distributed Systems Group, University of Bamberg</institution>
        </aff>
      </contrib-group>
      <fpage>39</fpage>
      <lpage>47</lpage>
      <abstract>
        <p>Cloud computing oferings evolve continuously. A recent trend is the Function as a Service paradigm which confronts developers with the decision whether adopting this new paradigm can be beneficial for parts of their application. However, many factors influence this decision or even prevent the usage of FaaS. Therefore, this paper provides a structured overview of relevant technical factors to guide the decision process.</p>
      </abstract>
      <kwd-group>
        <kwd>FaaS</kwd>
        <kwd>serverless</kwd>
        <kwd>serverless function</kwd>
        <kwd>cloud computing</kwd>
        <kwd>decision</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Building applications which run in a cloud environment is the norm for many
enterprises today [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. However, the possibilities how applications are designed and
run in the cloud are manifold and evolve with new oferings of cloud providers.
A recent trend is serverless computing with the Function as a Service (FaaS)
ofering at its core [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Developers implement a serverless function by writing
code, potentially combined with further code artifacts (e.g., libraries), which
processes an input and produces an output according to a predefined interface.
The serverless function can then be deployed to a FaaS platform which enables
its execution. The FaaS platform stores the function code and registers it to be
executable via one or more triggers. The available triggers depend on the specific
platform [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Typical triggers are messages from a messaging system, database
events or an HTTP request to a URL associated with the function by the FaaS
platform. When a serverless function is invoked via such a trigger, the platform
manages the actual execution transparently. That means, the platform starts up
the execution environment with the required resources, typically a container, and
executes the function with the given input [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. For multiple invocations, running
containers can be reused or the platform can scale accordingly by starting or
stopping additional containers. Whether a platform can reuse a container (warm
start) or has to start up a new container (cold start) can have a significant impact
on the execution time [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
      </p>
      <p>FaaS platforms are typically administered by cloud providers as in the case
of AWS Lambda1 or Azure Functions2. These cloud providers also ofer direct
integration with their respective cloud services, like database services or messaging
services to serve as triggers or dependencies for functions. But also open-source
platforms like OpenFaaS3 or Knative4 are available.</p>
      <p>
        FaaS enables a fine-granular billing in a commercial setting where customers
only pay when a serverless function is actually invoked and executed [
        <xref ref-type="bibr" rid="ref10 ref2">2, 10</xref>
        ]. Since
the FaaS platform starts and stops function containers transparently in order to
scale the system dynamically and to enable this billing model, serverless functions
should be stateless. This statelessness is one technical aspect in the decision for or
against using serverless functions. Although such aspects are already known, they
were not summarized yet and are often discussed in a diferent context [
        <xref ref-type="bibr" rid="ref10 ref15 ref4">4, 10, 15</xref>
        ].
Therefore, the aim of this paper is to provide a structured and comprehensive
overview of criteria relevant for the decision process. The focus is on criteria
which result from the technical characteristics of FaaS platforms. Since it can
make sense to use serverless functions only for parts of an application, the starting
point for the criteria we consider is a so-called functionality.
      </p>
      <p>A functionality represents a specific part of business logic which can be
implemented and potentially deployed as a serverless function. An application is
a composition of multiple functionalities. An application primarily consisting of
serverless functions is called a serverless application.</p>
      <p>In the following, section 2 provides a short overview of our approach for
the identification of the criteria which are presented in a catalog as the main
contribution of this paper in section 3. We discuss characteristics of the criteria
and how they can be practically applied in section 4. Section 5 gives an overview
of related work whereas we conclude the paper in section 6.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Approach</title>
      <p>
        The initial identification of relevant technical criteria was not based on a formal
approach but our prior experience with studying FaaS as a recent trend in
cloud computing. In order to refine and validate the identified criteria, we
then decided to build upon the work of Spillner et al. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] who maintain a
comprehensive list of research on serverless computing. By relying on their
collection of relevant literature, we looked for insights that either substantiated
or rebutted our identified criteria. The result is the criteria catalog in section 3.
The basic assumption is that each criterion can be evaluated on the basis of a
functionality which is considered to be implemented as a serverless function.
      </p>
      <sec id="sec-2-1">
        <title>1 https://aws.amazon.com/lambda 2 https://azure.microsoft.com/en-gb/services/functions/ 3 https://www.openfaas.com/ 4 https://knative.dev/</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Criteria catalog</title>
      <p>
        Statelessness: A functionality should be stateless since the FaaS platform
cannot guarantee a reexecution on the same instance [
        <xref ref-type="bibr" rid="ref15 ref21">15, 21</xref>
        ]. This means that a
functionality should not hold state (e.g., data stored in memory or on the disk
of the function instance) of previous invocations which is required for further
invocations. Thus, a serverless function is an example of the stateless component
pattern [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] and all state required should be externalized.
      </p>
      <p>
        Idempotency: A functionality should be idempotent in the sense of the
idempotent processor pattern [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] meaning that it can be reexecuted multiple
times with the same input and produce the same output. This mostly applies
to how a serverless function handles externalized state. Since FaaS platforms
typically reexecute a function in case of an error, a functionality should be
idempotent or at least provide the possibility to be made idempotent [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Otherwise,
a reexecution can lead to unexpected behavior, for example data inconsistencies
because of repeated database transactions.
      </p>
      <p>
        Synchronous dependencies: Synchronous dependencies express the
frequency a functionality requires synchronous communication with other services
during its execution. This means that a request is sent to an external system, e.g.,
a data storage or an external API, and the process is blocked until a response
arrives. Because a serverless function is also charged for the time in which it
is blocked, each synchronous dependency potentially creates unnecessary cost
[
        <xref ref-type="bibr" rid="ref3 ref5">3, 5</xref>
        ]. This efect can even be increased when multiple function instances are
executed on the same host and therefore also have to share the available network
bandwidth for their synchronous dependencies [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. A functionality having many
synchronous dependencies should therefore not be implemented as a serverless
function. Asynchronous interactions with other services where no response is
expected are not problematic.
      </p>
      <p>
        Event-driven architecture: An event-driven architecture aligns well with
the FaaS paradigm because serverless functions are well-suited as event processors
[
        <xref ref-type="bibr" rid="ref10 ref20 ref5">5, 10, 20</xref>
        ]. Therefore, if an event-driven architecture is used for the application
the functionality belongs to, a serverless function is a suitable implementation.
Additionally, several FaaS platforms provide a built-in support (in the form of
specific triggers) for the consumption of events from various sources.
      </p>
      <p>
        Algorithmic computing resource eficiency: The computing resources
required for the execution of a functionality depend on its algorithmic
characteristics and the input. Since the computing resources have to be defined upfront for
serverless functions, a computing resource configuration has to be chosen which
is able to handle the input requiring the most computing resources. Consequently,
potential inputs need to be known or a worst-case assumption for the input has to
be made. Memory and CPU power are typically not assigned independently but
change in conjunction [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] for most FaaS platforms. Therefore, the configuration
has to be chosen so that enough CPU power and memory are assigned meaning
that usually one of the two is oversupplied for most inputs.
      </p>
      <p>
        Oversupplied CPU power does not inevitably result in higher cost because less
complex inputs are often processed faster [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. If additional cores are assigned
with more CPU power, it depends on the ability of the functionalities to be
processed by several cores in parallel. However, oversupplied memory does not result
in a faster execution. It leads to unnecessary cost if memory is provisioned and
has to be paid for, although not needed for all inputs [
        <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
        ]. Thus, an ineficient
usage of the memory resources contradicts the implementation as a serverless
function from an economical point of view.
      </p>
      <p>
        Maximum execution time: The execution time for a serverless function
has an upper limit enforced by the FaaS platform [
        <xref ref-type="bibr" rid="ref17 ref4">4, 17</xref>
        ] because serverless
functions should be short-lived [
        <xref ref-type="bibr" rid="ref10 ref13">10, 13</xref>
        ]. The maximum execution time for a
functionality, even with the highest computing resource configuration, has to be
lower than this limit. Otherwise, the execution will abort with a timeout.
      </p>
      <p>
        Maximum memory consumption: FaaS platforms limit the memory
which can be assigned to the execution of a function [
        <xref ref-type="bibr" rid="ref17 ref4">4, 17</xref>
        ]. The maximum
memory consumption of a function for all inputs has to be smaller than the
maximum possible memory configuration. Otherwise, the execution will abort
with an out of memory error.
      </p>
      <p>
        Availability of execution environments: Available execution
environments are managed by the FaaS platform [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Implementing a functionality as a
serverless function is therefore only possible if the desired execution environment
is supported by the chosen FaaS platform. While the available execution
environments of AWS Lambda are limited to common execution environments like Java,
Python or NodeJS [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], OpenFaaS accepts custom Docker images enabling the
usage of arbitrary environments [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
      </p>
      <p>
        Deployment artifact size: FaaS platforms limit the maximum size of the
deployment artifact (code archive, container image) for a serverless function [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]
to prevent too large functions and excessive storage usage. If the size of a
serverless function implementation in the form of its deployment artifact exceeds this
limit, it is not possible to implement the functionality as a serverless function.
      </p>
      <p>
        Latency: If a functionality strictly requires a very low latency, a FaaS
platform might not be able to provide such a latency because of the start-up
overhead for starting a function instance. This start-up overhead is the time
needed by the FaaS platform to provide the required computing resources and to
start the infrastructure (e.g., the container). Since the FaaS platform manages
transparently when function instances are started and stopped, the start-up
overhead occurs frequently [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. In general, this leads to a longer response time
for functionalities implemented as serverless functions [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1–3</xref>
        ]. Although the
overhead is also influenced by the runtime environment, it is inherent to the FaaS
paradigm. Therefore, the suitability of serverless functions depends on the latency
requirements for a functionality, as discussed in detail by Aditya et al. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        Update frequency: Running systems have to be updated frequently, e.g.,
to implement new features or to fix bugs. Using FaaS ofers benefits regarding
the speed with which functionalities can be updated. These benefits are based
on two specific aspects of FaaS: externalization of operational tasks and the
small size of independent deployment units. Because tasks like hardware
installation, operating system maintenance and container orchestration are externalized
[
        <xref ref-type="bibr" rid="ref10 ref11">10, 11</xref>
        ], no additional eforts are required and developers can focus solely on
the actual functionality [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. All serverless functions of an application can be
deployed independently. If a functionality has to be changed, only the serverless
function implementing this functionality has to be redeployed which saves time
in contrast to other approaches.
      </p>
      <p>
        Vendor independence: In order to be vendor-independent, the possibility
to implement and deploy a functionality in diferent environments is needed.
FaaS platforms expect that serverless functions are implemented according to an
interface predefined by the corresponding platform provider. Once a functionality
is implemented as a serverless function for a specific FaaS platform, its code has to
be adapted if it has to be transferred to another FaaS platform [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Furthermore,
FaaS platforms provide platform-specific services which are often used by the
functions. If these services are used, additional eforts have to be made to transfer
and provide these services on another platform [
        <xref ref-type="bibr" rid="ref15 ref24">15, 24</xref>
        ]
      </p>
      <p>
        Workload type: In general, diferent workload types can be distinguished
which can be used to classify specific usage profiles of functionalities. According
to Fehling [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], there are static, periodic, once-in-a-lifetime, unpredictable and
continuously changing workloads. If the workload is unpredictable, i.e., bursty, or
continuously changing, FaaS is well-suited since its provision of resources can be
adapted dynamically [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Under- or over-provisioning does not occur compared
to other deployment options like VMs. For a once-in-a-lifetime workload (e.g.,
for a migration) FaaS makes sense if the resources required cannot be provided
otherwise, but it is not the typical use case for FaaS. Handling a static workload
can usually be implemented more cost-eficiently in a more traditional cloud
model since the resources needed are known upfront and are used most of the
time which is cost-eficient [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. If workload is produced periodically, FaaS can
make sense but ofers no specific advantage compared to other deployment models.
Apart from this broad assessment, a thorough cost calculation for a specific usage
profile is required to definitively evaluate the suitability of FaaS [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Discussion</title>
      <p>The criteria presented in section 3 cover important aspects of FaaS in a compact
way without being too detailed. Therefore, other criteria were excluded from our
collection which are not exclusive to FaaS. E.g., for a cloud service like AWS
Lambda, it might not be possible to determine where the serverless function
is actually executed. Howevere, there can be regulations for sensitive date that
they can only be processed in certain countries. Thus, the usage of FaaS for
sensitive data might be prohibited. Despite being an important concern, it is
not exclusive to FaaS because it also applies to other cloud deployment models
like Platform as a Service (PaaS). Another often mentioned advantage of FaaS
is the automated horizontal scalability of serverless functions. While it can be
a convincing argument for FaaS, it is not an exclusive characteristic of FaaS.
Other deployment models like a Kubernetes5 deployment with a horizontal pod</p>
      <sec id="sec-4-1">
        <title>5 https://kubernetes.io/</title>
        <p>autoscaler or a PaaS deployment can ofer the same horizontal scalability, although
lacking the possibility to scale to zero instances. Additional criteria in this regard
are availability of SLAs and resilience. It has to be noted that the decision for or
against using FaaS therefore also depends on the alternatives to which FaaS is
compared to. Alternative deployment models could for example be an on-premises
deployment on dedicated hardware, a virtual machine (VM) deployment within
an Infrastructure as a Service (IaaS) ofering, a PaaS deployment, or a deployment
in a Kubernetes cluster. For some of those alternatives the mentioned excluded
criteria can make a significant diference. But, as already stated, to keep the
catalog comprehensible we decided to focus on criteria exclusive to FaaS and a
more comprehensive comparison of criteria with selected deployment alternatives
could be done in future work.</p>
        <p>Furthermore, our catalog is focused on criteria resulting from the technical
characteristics of FaaS. Other non-technical criteria can be relevant in a decision
process as well, for example the efort to train developers to work with the new
paradigm and the specific FaaS platforms. But criteria which cannot be regarded
on the basis of a single functionality are out of the scope for this work because
they are less helpful for the decision whether FaaS is applicable to parts of an
application.</p>
        <p>An additional aspect regarding the criteria included in our catalog is that
their relevance difers depending on whether an administered FaaS platform of
a cloud provider or a self-hosted open source platform is used. This should be
kept in mind when applying the criteria in a decision process since operational
concerns are not completely externalized when a self-hosted platform is used.</p>
        <p>We have summarized the criteria as a structured questionnaire presented in
Table 1 to enable a practical application. The criteria are adjusted to be used
as questions. Possible answers are provided in column Dimension. The table
is structured into three categories. Mandatory criteria are knock-out questions
where a single No indicates that FaaS is not an option.</p>
        <p>Cost-Eficiency criteria impact the billing and are therefore relevant from
a business perspective. Since FaaS is the first real pay-as-you-go billing model,
evaluating the potential cost is a significant factor.</p>
        <p>The impacts of individual criteria depend on the specific situation. Regardless
of the answers given to these questions, an implementation with FaaS is not
immediately prevented. Each developer or organization has to decide individually
how important these aspects are. If, for example, vendor independence is
important, it generally makes FaaS less suitable. But if the disadvantages can be dealt
with, it might nevertheless be possible to implement a functionality using FaaS.</p>
        <p>This questionnaire helps assess the potential of implementing functionalities
as serverless functions by substantiating the decision process. The criteria are
intended to be assessed on the basis of a predefined functionality. However, finding
the right scope for a functionality or decide whether several functionalities could
be fused into one serverless function is another important topic which has to be
addressed in research.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Related Work</title>
      <p>
        Criteria to consider in the decision process for or against using FaaS have so far
not been discussed in combination but individually as suitable for the respective
purpose. To our knowledge, this is the first work collecting these criteria in a
catalog. The only comparable approach is a flow chart created by Bolscher as
part of his Master’s thesis [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], but it considers all criteria to be yes or no criteria.
      </p>
      <p>
        Research on decision making in the broader topic of cloud computing, however,
is already a mature field of research. The main focus is often on multiple-criteria
decision making to select a specific cloud service or cloud provider [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. In
comparison to this, our work has a considerably smaller scope and is focused only
on a single outcome, namely whether or not to use FaaS. It could however be
combined with multiple-criteria decision making to select a suitable deployment
model for an application.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion and Outlook</title>
      <p>This paper presents a catalog of criteria which can be practically used with the
presented questionnaire for the decision of whether to implement a functionality
as a serverless function or not. To evaluate their comprehensiveness and usefulness,
in future work the criteria should be applied to an actual use case or be empirically
validated with the help of practitioners. Furthermore, specific criteria are worth
to be considered in more detail such as the computing resource eficiency or the
impact of diferent workload types.
All links were last followed on January 10, 2020.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Aditya</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Akkus</surname>
            ,
            <given-names>I.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beck</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hilt</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rimac</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Satzke</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stein</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Will Serverless Computing Revolutionize NFV</article-title>
          .
          <source>Proceedings of the IEEE</source>
          <volume>107</volume>
          (
          <issue>4</issue>
          ),
          <fpage>667</fpage>
          -
          <lpage>678</lpage>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Adzic</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chatley</surname>
          </string-name>
          , R.: Serverless Computing:
          <article-title>Economic and Architectural Impact</article-title>
          .
          <source>In: Proceedings of 11th Joint Meeting on Foundations of Software Engineering</source>
          . ACM, Paderborn, Germany (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Albuquerque</given-names>
            <surname>Jr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.F.</given-names>
            ,
            <surname>Ferraz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.S.</given-names>
            ,
            <surname>Oliveira</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.F.A.P.</given-names>
            ,
            <surname>Galdino</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.M.L.</surname>
          </string-name>
          :
          <article-title>Function-as-aService X Platform-as-a-Service: Towards a Comparative Study on FaaS and PaaS</article-title>
          .
          <source>In: The Twelfth International Conference on Software Engineering Advances (ICSEA)</source>
          . p.
          <fpage>217</fpage>
          .
          <string-name>
            <surname>IARIA</surname>
          </string-name>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Baldini</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castro</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chang</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , Cheng, P.,
          <string-name>
            <surname>Fink</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ishakian</surname>
          </string-name>
          , V., Mitchell, N.,
          <string-name>
            <surname>Muthusamy</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rabbah</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Slominski</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Suter</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          : Serverless Computing:
          <article-title>Current Trends and Open Problems</article-title>
          . In: Research Advances in Cloud Computing, pp.
          <fpage>1</fpage>
          -
          <lpage>20</lpage>
          . Springer Singapore (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Baldini</surname>
          </string-name>
          , I., Cheng, P.,
          <string-name>
            <surname>Fink</surname>
          </string-name>
          , S.J., Mitchell, N.,
          <string-name>
            <surname>Muthusamy</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rabbah</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Suter</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tardieu</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>The serverless trilemma: function composition for serverless computing</article-title>
          .
          <source>In: Proceedings of the 2017 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software - Onward</source>
          !
          <year>2017</year>
          . ACM Press (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Bolscher</surname>
          </string-name>
          , R.:
          <source>Leveraging Serverless Cloud Architectures. Master's thesis</source>
          , University of Twente (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Eivy</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Be Wary of the Economics of “Serverless” Cloud Computing</article-title>
          .
          <source>IEEE Cloud Computing</source>
          <volume>4</volume>
          (
          <issue>2</issue>
          ),
          <fpage>6</fpage>
          -
          <lpage>12</lpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Elgamal</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sandur</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nahrstedt</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Agha</surname>
          </string-name>
          , G.:
          <article-title>Costless: Optimizing Cost of Serverless Computing through Function Fusion and Placement</article-title>
          .
          <source>In: 2018 IEEE/ACM Symposium on Edge Computing (SEC)</source>
          . pp.
          <fpage>300</fpage>
          -
          <lpage>312</lpage>
          . IEEE (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. Eurostat:
          <article-title>Cloud computing services used by more than one out of four enterprises in the eu</article-title>
          .
          <source>Online</source>
          (
          <year>2018</year>
          ), https://ec.europa.eu/eurostat/documents/2995521/ 9447642/9-13122018
          <string-name>
            <surname>-</surname>
          </string-name>
          BP-EN.pdf
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>van Eyk</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Iosup</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seif</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thömmes</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>The SPEC Cloud Group's Research Vision on FaaS and Serverless Architectures</article-title>
          .
          <source>In: Proceedings of the 2nd International Workshop on Serverless Computing</source>
          . pp.
          <fpage>1</fpage>
          -
          <lpage>4</lpage>
          . WoSC '17,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>van Eyk</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Toader</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Talluri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Versluis</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Uta</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Iosup</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Serverless is More: From PaaS to Present Cloud Computing</article-title>
          .
          <source>IEEE Internet Computing</source>
          <volume>22</volume>
          (
          <issue>5</issue>
          ),
          <fpage>8</fpage>
          -
          <lpage>17</lpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Fehling</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leymann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Retter</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schupeck</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arbitter</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          : Cloud Computing Patterns. Springer Vienna (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Hellerstein</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Faleiro</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gonzalez</surname>
            ,
            <given-names>J.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schleier-Smith</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sreekanti</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tumanov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Serverless Computing: One Step Forward, Two Steps Back</article-title>
          .
          <source>In: 9th Conference on Innovative Data Systems Research (CIDR)</source>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seo</surname>
            ,
            <given-names>K.K.</given-names>
          </string-name>
          :
          <article-title>A hybrid multi-criteria decision-making model for a cloud service selection problem using BSC, fuzzy delphi method and fuzzy AHP</article-title>
          .
          <source>Wireless Personal Communications</source>
          <volume>86</volume>
          (
          <issue>1</issue>
          ),
          <fpage>57</fpage>
          -
          <lpage>75</lpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Leitner</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wittern</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Spillner</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hummer</surname>
            ,
            <given-names>W.:</given-names>
          </string-name>
          <article-title>A mixed-method empirical study of Function-as-a-Service software development in industrial practice</article-title>
          .
          <source>Journal of Systems and Software</source>
          <volume>149</volume>
          ,
          <fpage>340</fpage>
          -
          <lpage>359</lpage>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Lloyd</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ramesh</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chinthalapati</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ly</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pallickara</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Serverless Computing:
          <article-title>An Investigation of Factors Influencing Microservice Performance</article-title>
          .
          <source>In: 2018 IEEE International Conference on Cloud Engineering (IC2E)</source>
          . pp.
          <fpage>159</fpage>
          -
          <lpage>169</lpage>
          . IEEE (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Lynn</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rosati</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lejeune</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Emeakaroha</surname>
          </string-name>
          , V.:
          <article-title>A Preliminary Review of Enterprise Serverless Cloud Computing (Function-as-a-Service) Platforms</article-title>
          . In: 2017
          <source>IEEE International Conference on Cloud Computing Technology and Science (CloudCom)</source>
          . pp.
          <fpage>162</fpage>
          -
          <lpage>169</lpage>
          . IEEE (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Malawski</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Figiela</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gajek</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zima</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Benchmarking Heterogeneous Cloud Functions</article-title>
          . In: Heras,
          <string-name>
            <given-names>D.B.</given-names>
            ,
            <surname>Bougé</surname>
          </string-name>
          ,
          <string-name>
            <surname>L</surname>
          </string-name>
          . (eds.) Euro-Par
          <source>2017: Parallel Processing Workshops</source>
          . pp.
          <fpage>415</fpage>
          -
          <lpage>426</lpage>
          . Springer International Publishing (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Manner</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Endreß</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heckel</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wirtz</surname>
          </string-name>
          , G.:
          <article-title>Cold Start Influencing Factors in Function as a Service</article-title>
          .
          <source>In: 2018 IEEE/ACM International Conference on Utility and Cloud Computing Companion, 4th Workshop on Serverless Computing (WoSC)</source>
          .
          <source>IEEE</source>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>McGrath</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brenner</surname>
            ,
            <given-names>P.R.</given-names>
          </string-name>
          : Serverless Computing:
          <article-title>Design, Implementation, and Performance</article-title>
          .
          <source>In: 2017 IEEE 37th International Conference on Distributed Computing Systems Workshops (ICDCSW)</source>
          . pp.
          <fpage>405</fpage>
          -
          <lpage>410</lpage>
          . IEEE (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>McGrath</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Short</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ennis</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Judson</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brenner</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Cloud Event Programming Paradigms: Applications and Analysis</article-title>
          .
          <source>In: 2016 IEEE 9th International Conference on Cloud Computing</source>
          . pp.
          <fpage>400</fpage>
          -
          <lpage>406</lpage>
          . CLOUD, IEEE (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Mohanty</surname>
            ,
            <given-names>S.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Premsankar</surname>
            , G., di Francesco,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>An evaluation of open source serverless computing frameworks</article-title>
          .
          <source>In: 2018 IEEE International Conference on Cloud Computing Technology and Science (CloudCom)</source>
          . pp.
          <fpage>115</fpage>
          -
          <lpage>120</lpage>
          . IEEE (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Spillner</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Al-Ameen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boruta</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Serverless literature dataset</article-title>
          .
          <source>Online</source>
          (
          <year>2019</year>
          ), https://zenodo.org/record/3517819
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Yussupov</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Breitenbücher</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leymann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Müller</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Facing the unplanned migration of serverless applications</article-title>
          .
          <source>In: Proceedings of the 12th IEEE/ACM International Conference on Utility and Cloud Computing - UCC'19</source>
          . pp.
          <fpage>273</fpage>
          -
          <lpage>283</lpage>
          . ACM Press, New York, NY, USA (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>