<!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>Practitioners' Perspective on Microservices Design Areas Challenges: A Socio-Technical Grounded Theory Literature Review</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Muhammad Hamza</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Muhammad Azeem Akbar</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kari Smolander</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Arif Ali Khan</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>LUT University</institution>
          ,
          <addr-line>53851, Lappeenranta</addr-line>
          ,
          <country country="FI">Finland</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Oulu</institution>
          ,
          <addr-line>90570, Oulu</addr-line>
          ,
          <country country="FI">Finland</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Microservice architecture has gained hype both in industry and academia. Companies are migrating their legacy monolithic systems to microservices architecture due to its promised benefits (e.g., agility and scalability). However, practitioners have faced many challenges in microservices architecture's design, development, and operation. This study investigates the challenging factors that could negatively affect the adoption of microservices architecture, as revealed by practitioners in empirical studies. We performed a socio-technical grounded theory literature review (ST-GTLR) and identified 24 key challenges from 31 empirical studies. The identified challenges were labeled as codes and mapped into seven concepts. Finally, the concepts were merged into three core categories design, development, and infrastructure. Our results serve as a body of knowledge for practitioners and researchers to understand the challenging aspects of microservices architecture in design areas.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Microservices Architecture (MSA)</kwd>
        <kwd>Design Areas</kwd>
        <kwd>Challenges</kwd>
        <kwd>ST-GTLR1</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Software organizations are continuously seeking
solutions to improve product quality. To this end,
many companies are migrating their monolithic
systems to a microservices architecture to achieve
better scalability, maintainability, and deliverability.
In traditional monolithic architecture, all layers of
application, e.g., user interface, business, and database,
are developed as a single logical executable unit [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ],
which raises several challenges, such as scalability,
maintainability, and deliverability. To tackle the
mentioned challenges, the concept of microservices is
introduced. Lewis and Flower [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], defined
microservices architecture (MSA) as the counterpart
to the monolith: a single application composed of
loosely coupled and independently deployable smaller
services.
      </p>
      <p>
        In recent years, MSA concepts have largely been
adopted across a vast array of industrial solutions.
Technology giants like Amazon, Netflix, Spotify, Uber,
and Twitter have successfully migrated the
conventional monolithic system architectures to
microservices architecture MSA to achieve structural,
functional, and data decoupling [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Modernizing the
legacy system with microservices architecture enables
faster delivery, improved scalability, and greater
autonomy.
      </p>
      <p>
        However, adopting microservices architecture is
not a one-go process as various challenges are likely to
appear [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], e.g., decentralization of microservices
requires more exertion to optimize the
communication among services and to trace
performance [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Haselböck et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] have identified
design areas of microservices architecture, such as
microservices security, testing, communication, etc.,
by conducting expert interviews. Knoche and
Hasselbringa [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] investigated the main motivation,
challenges, and goals of adopting microservices by
conducting a survey study. Similarly, Jamshidi et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
identified microservices architecture's drivers,
evolution, and future challenges. Yarygina et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]
identified and categorized security challenges in a
microservices architecture. Viggiato et al. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
conducted an industrial survey and investigated
prevalent programming languages, their advantages,
and challenges, e.g., distributed transactions,
integration tests, service faults, and remote procedure
calls in microservices systems. Zhou et al. [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]
conducted a survey study of practitioners and
investigated the fault analysis of a microservices
system and practices for debugging. Similarly, Wang et
al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] empirically investigated the challenges (e.g.,
common code management across services) faced by
practitioners and their solutions in the microservices
system. Moreover, Taibi et al. [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] reported migration
motivation to MSA, benefits, and challenges (e.g., data
splitting). Several studies identified challenges
covering different aspects of microservices [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        However, all these studies report different
challenges from each other. Some studies discuss the
architecture, whereas others discuss the security
perspective. Therefore, no systematic study analyzes
all the empirical studies that classify the microservices
system's most common challenges in each design area
(design, development, and operations). This study
aims to identify the challenges for each design area
from the empirical studies and develop a taxonomy of
challenges that practitioners faced while designing,
developing, and operating MSA. To achieve the study
objectives, we conducted a socio-technical grounded
theory literature review (ST-GTLR) to understand the
industrial practitioner's perspective on the challenges
and map the identified challenges into the design areas
(e.g., design, development, and operation) of
microservices architecture. ST-GTLR is based on the
grounded theory literature review guidelines
developed by Wolfswinkel et al. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. GTLR studies
have been conducted in healthcare [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ],
education [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], and banking [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. This approach has
also been implemented in information system
research [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], and the software engineering domain
[
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. Hence, in this study, we derived the following
research question (RQ):
      </p>
      <p>[RQ]: What are the challenges in the design area of
microservices architecture, reported by practitioners
in state-of-the-art empirical studies?</p>
    </sec>
    <sec id="sec-2">
      <title>2. Methodology</title>
      <sec id="sec-2-1">
        <title>2.1. Socio-Technical Grounded</title>
      </sec>
      <sec id="sec-2-2">
        <title>Theory Literature Review</title>
        <p>
          Socio-technical grounded theory literature review
(ST-GLTR) is an iterative and responsive approach that
applies a five-phase framework (i.e., define, search,
select, analyze, and present) of the original grounded
theory literature review (GTLR) with concrete data
analysis framework of socio-technical grounded
theory [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ].
        </p>
        <p>
          We conducted ST-GTLR to explore challenges that
practitioners face when working with microservices
architecture and to develop a taxonomy of challenges
with respect to design areas of microservices
architecture. The main motivation of this review study
is to develop a taxonomy of challenges, understand
various facets of the practice areas, and guide future
research in microservices architecture. Thus, all the
steps to perform the ST- GTLR are presented in Figure
2, with a detailed illustration of the analysis phase. As
per our knowledge, we are the first to use the ST- GTLR
approach to explore the challenges of microservices
architecture design areas. However, the detailed first
version of the ST-GTLR was implemented in the
domain of software engineering [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. A detailed
description of each stage of ST-GTLR is presented in
the following subsections.
        </p>
        <p>Define: In the initial phase of ST-GTLR, we set the
study's scope by defining the research question and
criteria, as shown in Table 1. This guided the creation
of the search string, developed through a thorough
analysis of keywords by the first two authors.</p>
        <p>
          Furthermore, the search string was created using
'AND' and 'OR' Boolean operators to combine key
terms and synonyms. After a team meeting to test eight
candidate strings, the final version was selected and
run on five major databases—ACM, Science Direct,
IEEE Xplore, Wiley OL, and Springer Link—yielding
2,830 studies. These databases were chosen by
unanimous author agreement and are commonly used
in software engineering reviews [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ].
        </p>
        <p>Table 1
Inclusion and Exclusion criteria
Inclusion Exclusion
The selected study must be Studies include
full text published in Journal, microservices terms
Conference, as a thesis, and but do not focus on
report or paper on arXiv. empirical challenges.
The study must be published Papers published in
in English. workshop, short paper
The study must present (less than 4 pages).
empirical findings regarding Grey literature, books,
practitioners' perspectives on and incomplete work.
microservices. Review and duplicate
A study that presents articles.
empirical results on
challenges in the
implementation of
microservices architecture.</p>
        <p>
          Search: In the second stage, the actual search was
performed using the review protocols defined in the
first stage's guidelines by Wolfswinkel et al. [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]. The
search process was iterative and time-consuming
because we had to revisit the define section as some
necessary synonyms of search terms were missed. The
search process was started on 21 October 2022 and
ended on 13 November 2022. By executing the final
search string, 2830 articles were collected. The total
number of studies was large in number; thus, we
exerted inclusion and exclusion criteria presented in
Table 1.
        </p>
        <p>Select: In the third stage, literature was filtered
based on criteria in Table 1, narrowing it down to 2067
articles from various sources like journals,
conferences, and arXiv. Further refinement led to 23
primary studies. The first author then used a backward
snowballing approach, adding 8 more studies. The
final list included 31 studies (23+8), as shown in
Figure 1. If new articles emerged from snowballing, the
process would restart; an article was finalized only if
no new ones were found.</p>
        <p>
          Analyze: STGT is an effective approach to deeply
understanding the state-of-the-art literature and
exploring the specific research problem reported in
the state-of-the-art literature [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. Hence, we used the
step-by-step guidelines STGTLR proposed by Hoda
[
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] to understand the practitioner's perception
concerning microservices architecture design areas
challenges reported in primary studies and
sociotechnical phenomena [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. Our research group is
highly skilled in terms of the technical background of
microservices architecture and qualitative and
quantitative empirical research. We used MS Excel
software to collect the qualitative data from selected
primary studies and applied advanced STGT data
analysis techniques.
        </p>
        <p>We employed Socio-Technical Grounded Theory
(STGT) in our ST-GTLR study, using traditional
methods like open coding and constant comparison in
the early stages, and advanced techniques like targeted
Data Collection and Analysis (DCA) later. The data
consisted of practitioners' statements on
microservices architecture, analyzed using STGT
methods like open coding and theoretical structuring.
Details of the analysis are depicted on the right-hand
side of Figure 2.</p>
        <p>The basic stage – Open Coding: The open coding
technique was performed to develop the codes from
the finding section of primary empirical studies. For
instance, the primary study stated, "Without a design
of microservices systems, a system could become a
nightmare for developers. Several risks can affect the
microservices system, including poor work and time
management," is coded as "Lak of design" Similarly, we
developed several codes by considering the statement
of practitioners in the finding section of the primary
study. All study authors carefully verified the codes in
multiple meetings to check whether they met the
objective of our research question.
categories. The seven concepts are microservices
architecture, microservices security, testing,
monitoring, development, microservices
development, storage, and deployment. The concepts
were mainly mapped into three categories:
microservices design, development, and operation.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. FINDINGS – KEY CATEGORIES</title>
      <p>We derived three key categories from the rigorous
analysis: (1) microservices design (2) microservices
development (3) microservices operation. The codes
were mapped into the seven concepts, and concepts
were mapped into key categories. The mapping of
concepts into categories is depicted in Figure 4,
whereas their respective challenges are depicted in
Figure 5.</p>
      <sec id="sec-3-1">
        <title>3.1. Microservices design</title>
        <p>
          Microservices design is the first category that
emerged from the analysis. This category emerged
from the underlying microservice architecture and
microservices security concepts. The design of the
microservices system should be comprised of loosely
coupled microservices that can be developed, tested,
and deployed independently [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ].
        </p>
        <p>Microservices architecture: Architecture is a crucial
component of microservices system development.
However, defining microservices architecture carries
several challenges. The challenges are coded and
numbered as C1, C2, C3.</p>
        <p>
          C1 (Microservices granularity): Granularity
defines the size of microservices, such as how big and
short a microservices should be. However, identifying
the right granularity of microservices is challenging
from most practitioners' perspectives, whether they
are experienced or newcomers reported in [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ],
[
          <xref ref-type="bibr" rid="ref28">28</xref>
          ], [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ], [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ], [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ], [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ], [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ], [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ], [
          <xref ref-type="bibr" rid="ref35">35</xref>
          ], [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ],
[
          <xref ref-type="bibr" rid="ref37">37</xref>
          ],[
          <xref ref-type="bibr" rid="ref38">38</xref>
          ], [
          <xref ref-type="bibr" rid="ref39">39</xref>
          ], [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ], [
          <xref ref-type="bibr" rid="ref41">41</xref>
          ]. For example, the participants
of [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] mentioned “Identifying the right granularity of
microservices is challenging; the size in lines of code is
less crucial than having a cohesive service that focuses
on one thing [….]” (Page no. 15) [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>
          C2 (Lack of microservices ownership): Services
ownership states that a person should be accountable
for the service in the entire lifecycle of its success or
failure. Microservices ownership helps identify and fix
bugs, implement new features, and train new
recruiters [
          <xref ref-type="bibr" rid="ref42">42</xref>
          ]. However, companies do not have
experienced persons for microservices ownership.
Therefore, the lack of microservices ownership is also
considered a significant challenge among practitioners
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ], [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ], [
          <xref ref-type="bibr" rid="ref41">41</xref>
          ]. For instance, the participants of
the study [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ] stated “Instead of excelling at one specific
function, these 'jack-of-all-trades' services end up
performing multiple tasks poorly, undermining the
principle of doing one thing well” (page no. 18) [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ].
        </p>
        <p>
          C3 (Language Diversity): The polyglot nature of
the microservices architecture is more advertised as a
developer can choose different programming
languages for different microservices [
          <xref ref-type="bibr" rid="ref41">41</xref>
          ]. However,
specifying different languages for different
microservices may negatively affect the microservices
system maintenance and testing [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ], [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ],
[
          <xref ref-type="bibr" rid="ref35">35</xref>
          ], [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ], [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ], [
          <xref ref-type="bibr" rid="ref43">43</xref>
          ], [
          <xref ref-type="bibr" rid="ref44">44</xref>
          ], [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ]. For instance, the
participants of the study stated, “We said, 'Hey, why not
try using Golang? Why not try using Elixir?' [...] so we
wrote a service in that language […...]” (page no. 19)
[
          <xref ref-type="bibr" rid="ref43">43</xref>
          ].
        </p>
        <p>
          C4 (Lack of microservices design): Having a
detailed design of the microservices system may assist
(i) teams in estimating the amount of work required
(ii) implementing security standards and solutions
(iii) helping to understand the system for trainee
developers [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ]. However, companies generally do not
create the design of the microservices systems.
Therefore, the lack of microservices design is a
significant challenge among practitioners [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ], [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ],
[
          <xref ref-type="bibr" rid="ref34">34</xref>
          ], [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ], [
          <xref ref-type="bibr" rid="ref44">44</xref>
          ], [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ], [
          <xref ref-type="bibr" rid="ref41">41</xref>
          ], [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. For instance, the
participants of the study stated “Without a design of
microservices systems, a system could become a
nightmare for developers. Several kinds of risks can
affect the microservices system as a whole [….]” (Page
no. 17) [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ].
        </p>
        <p>
          C5 (Lack of knowledge on decomposing
strategies): Decomposing monolithic systems is
challenging due to the lack of a one-size-fits-all
strategy. While methods like Domain-Driven Design
(DDD) exist, companies often break down systems
based on team structure, resource consumption,
dependencies, and delivery cycles [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ]. Therefore, the
lack of knowledge on decomposing strategies is a
significant challenge for some companies [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ], [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ],
[
          <xref ref-type="bibr" rid="ref37">37</xref>
          ], [
          <xref ref-type="bibr" rid="ref45">45</xref>
          ], [
          <xref ref-type="bibr" rid="ref46">46</xref>
          ]. As one of the practitioners, “We are not
familiar with other strategies that can be used for
decomposing the application than domain-driven
design DDD and business capability. However, DDD is
not always the right […]” (page 26) [
          <xref ref-type="bibr" rid="ref45">45</xref>
          ].
        </p>
        <p>
          C6 (API Versioning): This is the way of managing
the expected changes with full assurance that these
changes will not disrupt the client. Even minor changes
to your API can cause client applications to fail [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ].
Therefore, it is highly encouraged not to make even
minor changes to API. However, change is still
unavoidable [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ], [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ], [
          <xref ref-type="bibr" rid="ref35">35</xref>
          ], [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ], [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ], [
          <xref ref-type="bibr" rid="ref39">39</xref>
          ], [
          <xref ref-type="bibr" rid="ref43">43</xref>
          ],
[
          <xref ref-type="bibr" rid="ref47">47</xref>
          ], [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], [
          <xref ref-type="bibr" rid="ref48">48</xref>
          ]. Therefore, managing API
versioning is a significant challenge among
practitioners "If we are going to delete something from
the payload or we completely change the signature, we
will have to bump up the major version and create
another version of the API and ask people to move over
[…]” (Page no. 24) [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ].
        </p>
        <p>
          Microservices security is the second concept that
emerged from the analysis of the microservices design
category. Securing the microservices system is more
intricate than securing monolithic architecture, as
communication in the microservices system is done
through the network that creates the surface attack.
Besides this, malicious requests can be sent by a
compromised microservice to other services in the
system [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. Therefore, practitioners face challenges
when securing microservices architecture.
        </p>
        <sec id="sec-3-1-1">
          <title>C7 (Lack of authentication and authorization):</title>
          <p>
            Authentication is the way of verifying the identity of an
individual, whereas authorization verifies whether an
individual is authorized to access data or services [
            <xref ref-type="bibr" rid="ref49">49</xref>
            ]
[51]. The practitioner stated that “I would say
microservices can get exposed to, e.g., confused deputy
problem where attackers can trick a service and get
data that they should not be able to get if proper
authorization is not enforced [….]” (Page no. 8) [
            <xref ref-type="bibr" rid="ref50">50</xref>
            ].
          </p>
        </sec>
        <sec id="sec-3-1-2">
          <title>C8 (Irrelevant privileges): This challenge arises</title>
          <p>
            when different microservices are given access to those
functions that are not required by a particular service.
These privileges could cause confidentiality and
integrity issues [
            <xref ref-type="bibr" rid="ref50">50</xref>
            ], [51]. As reported by the
practitioner “In our case, what happens, e.g., when a
service can write or read data stored in databases or
messages posted in messages queues, even if such
databases or queues are not needed by the service to
deliver its business function […]” (Page no. 10) [51].
          </p>
        </sec>
        <sec id="sec-3-1-3">
          <title>C9 (Lack of secure communication):</title>
          <p>
            Microservices architecture is highly distributed in
nature, thus requiring a communication interface to
interact with other microservices to perform business
functionalities. The communication among
microservices can be compromised by attackers [
            <xref ref-type="bibr" rid="ref50">50</xref>
            ],
[51]. “Let's say that the communication channel is not
secured, and then it is possible that data transferred can
be exposed to the man-in-the-middle, eavesdropping,
and tampering attacks […]” (page no. 11) [
            <xref ref-type="bibr" rid="ref50">50</xref>
            ].
          </p>
        </sec>
        <sec id="sec-3-1-4">
          <title>C10 (Implementing own cryptic algorithms):</title>
          <p>
            Most companies build and implement their own
cryptographic algorithm to secure their microservices
system. However, a system's confidentiality, Integrity,
and authenticity can be compromised if the company's
development team starts to build its own
cryptographic algorithms [
            <xref ref-type="bibr" rid="ref50">50</xref>
            ], [51]. As reported by
the practitioner: “Microservice-based applications are
not the exception: development teams that implement
their encryption solutions may end with improper
solutions […]” (Page no 6) [51].
          </p>
          <p>
            C11 (Lack of data encryption): In most cases, the
data in microservices storage are kept without any
encryption or authenticated data protection method
that the intruder eventually compromises. The data
stored without encrypted could breach the
confidentiality and Integrity of the system [
            <xref ref-type="bibr" rid="ref50">50</xref>
            ], [51] as
explained by the practitioner “When sensitive data is
exposed, its Confidentiality and Integrity can get
violated because it could be acquired or modified by an
intruder who gets direct access to the microservices
forming an application […]” (Page no. 7) [51].
          </p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Development</title>
        <p>Microservices development is the second category
that emerged from the rigorous analysis. This category
is underlying by three main microservices
development, microservices testing, and
microservices storage concept. The review shows
that practitioners face several challenges in each
concept of this category.</p>
        <p>
          Development: Microservices architecture includes
small, loosely coupled services that can be
independently developed, tested, and deployed into
production. However, developing microservices raises
several challenges, such as shared libraries/ managing
common codes, variants, and cyclic dependencies [
          <xref ref-type="bibr" rid="ref43">43</xref>
          ].
Microservices development is the first concept in the
underlying category of development.
        </p>
        <p>
          C12 (Managing common codes/ shared
libraries): Splitting all monolithic systems into small
services that can be developed and deployed
independently is not possible in most cases. Some
systems require sharing the functionalities among
other microservices, such as logging and
authentication, database access, common utilities, etc.
However, the common code cannot be shared among
microservices as it will breach the common principle
of microservices architecture [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ], [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ], [52].
Therefore, practitioners stated it is challenging when
managing shared libraries “That is a [...] hassle because
you change the common library, and all the services that
depend on this library need to change” (Page no. 23)
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>
          C13 (Difficulties in managing variants): Most
applications offer free or premium versions to their
customers based on their necessities. However,
managing the variants for different customers is still
challenging for many companies. Most companies use
the feature flag to handle it, but it requires extensive
management of features [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ], [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ]. Similarly,
testing multiple features is also challenging “When the
feature is toggled for a customer, it is more like a
temporary thing where it is like a hack. [...]” (Page no.
26) [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ].
        </p>
        <p>
          C14 (Cyclic dependencies): This challenge arises
when one microservices directly or indirectly rely on
the other microservices to function properly, known as
mutually recursive. Cyclic dependency will eventually
increase the complexity of microservices [
          <xref ref-type="bibr" rid="ref43">43</xref>
          ], [
          <xref ref-type="bibr" rid="ref44">44</xref>
          ].
“Having circular dependencies between microservices
will result in hardly maintainable services. You'll be
unable to think of a single service at a time […].” (Page
no. 9) [
          <xref ref-type="bibr" rid="ref43">43</xref>
          ].
        </p>
        <p>Microservices Testing is a crucial part of any
system to deliver a quality product to end customers.
However, monolithic testing is easier as one codebase
is to test, whereas each microservice is tested in the
distributed microservices architecture. There are
several challenges that practitioners face when testing
microservices-based systems.</p>
        <sec id="sec-3-2-1">
          <title>C15 (Creating and implementing manual tests):</title>
          <p>
            Most systems are composed of many microservices in
a microservices architecture. According to the survey
by Kong [53], most companies have more than 184
microservices in their system. However, creating and
implementing manual test cases is tedious for
companies “There are several reasons why manual
testing could become a problem due to the number of
microservices and communication between them” (page
no. 39) [
            <xref ref-type="bibr" rid="ref37">37</xref>
            ].
          </p>
          <p>
            C16 (Integration testing of microservices): In
integration testing, the tester usually examines the
proper working of different modules in a sub-system
when a high-level feature is introduced. However,
integration testing becomes a challenge because of
multiple connecting points where the tester has
limited knowledge of other microservices [
            <xref ref-type="bibr" rid="ref31">31</xref>
            ], [
            <xref ref-type="bibr" rid="ref35">35</xref>
            ],
[
            <xref ref-type="bibr" rid="ref37">37</xref>
            ]. “Our major challenge is to write effective test cases
for the integration testing of the microservices system,
[…]” (page no.36) [
            <xref ref-type="bibr" rid="ref31">31</xref>
            ].
          </p>
          <p>Storage: In monolithic architecture, an application
is composed of a single codebase that requires a single
database, whereas microservices architecture
comprises several services, and each service can have
an independent database. If any change is made in the
data model of a monolithic application, the entire
database will be affected, whereas, in microservices,
only the dedicated database will be affected.
Furthermore, different services can have different
storage requirements; one requires a relational
database, while another requires MongoDB [54]. This
distributed nature of microservices also poses storage
challenges.</p>
          <p>
            C17 (Distributed transactions): Microservices
are distributed, and the transactions made by any
client can also be distributed. They may span multiple
computers over the network. However, distributed
transactions lose the ACID (atomicity, consistency,
isolation, durability) feature [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ], [
            <xref ref-type="bibr" rid="ref36">36</xref>
            ], [
            <xref ref-type="bibr" rid="ref39">39</xref>
            ], [
            <xref ref-type="bibr" rid="ref41">41</xref>
            ], [55].
“In an async[hronous] environment and having
microservices be[ing] responsible for processing their
changes, issues introduced with new releases on
microservices may cause inconsistencies in data
processing which are generally hard to correct after the
fact”.
          </p>
          <p>
            C18 (Lack of consistency between
heterogenous databases): A shared relational
database is used to handle the data consistency in the
monolithic architecture as companies use a single
database for the entire application [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ], [
            <xref ref-type="bibr" rid="ref36">36</xref>
            ], [
            <xref ref-type="bibr" rid="ref39">39</xref>
            ],
[
            <xref ref-type="bibr" rid="ref41">41</xref>
            ], [55]. However, different microservices may use
different database technologies, which may cause data
consistency challenges “Atomicity cannot be
guaranteed over different storage technologies, no
information or proper literature. Guessing and fixing
error approach” (Page no. 9) [
            <xref ref-type="bibr" rid="ref39">39</xref>
            ].
          </p>
          <p>C19 (Query complexity): Microservice
architectures extensively use online queries. There is,
however, no de facto approach because developers
typically rely on various ad hoc mechanisms for online
queries [55]. According to the practitioner, “We are
integrating data from different sources in a global
transportation network. The changes in data are
flowing into our system consistently.” (Page no. 11) [55].</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Operation</title>
        <p>The third category is the operation that emerged
from two underlying microservices monitoring and
microservices deployment concepts. This category is
related to the microservices operation team that
governs and deploys the microservices in IT
infrastructure. The operation team automates the
repeatable task and maintain the consistency of the
entire microservice system.</p>
        <p>Microservices monitoring: Microservices systems
have a distributed nature comprised of many
independent services that run inside the container.
However, it becomes a nightmare to track the
availability and performance of numerous
microservices and use the suitable monitoring
infrastructure. We identified three challenges under
this concept.</p>
        <sec id="sec-3-3-1">
          <title>C20 (Lack of early setup of a logging and</title>
          <p>
            monitoring framework): Managing logs and
monitoring in systems with numerous microservices is
complex and often lacks infrastructure. A robust
framework is essential from the project's start, a step
often overlooked by practitioners [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ], [
            <xref ref-type="bibr" rid="ref37">37</xref>
            ], [
            <xref ref-type="bibr" rid="ref40">40</xref>
            ].
Furthermore, practitioners also stated that the privacy
of the client should be preserved by obscuring logged
data “Probably I will focus more on logging and
monitoring, right off the bat. Because trying to retrofit
monitoring and logging once we have all the services, is
quite a bit of work” (page no. 20) [
            <xref ref-type="bibr" rid="ref37">37</xref>
            ].
          </p>
        </sec>
        <sec id="sec-3-3-2">
          <title>C21 (Lack of early setup of distributed tracing):</title>
          <p>
            Distributed tracing is a process of following a
transaction request and recording all relevant data
throughout the path of a microservices architecture.
Failure is unavoidable, and when it occurs in the
microservices system, most of the practitioners start
from the failing services and gradually trace the source
of occurrence of failure [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ], [
            <xref ref-type="bibr" rid="ref37">37</xref>
            ], [
            <xref ref-type="bibr" rid="ref40">40</xref>
            ], [
            <xref ref-type="bibr" rid="ref41">41</xref>
            ].
Practitioners stated that companies should set up the
distributed tracing as early as the project starts “A lot
of companies that start do not think about distributed
tracing right from the get-go […]” (page no. 19) [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ].
          </p>
          <p>Microservice deployment is the second concept
that has emerged in the infrastructure category. The
deployment in a microservices architecture is different
from that of a monolithic architecture. The operational
team must deploy multiple microservices in
microservices architecture, whereas only a Single
deployment is required in a monolithic architecture.
Considering the microservice deployment, we
identified three main challenges in this concept.</p>
          <p>
            C22 (Lack of an automatic process): Companies
usually develop microservices and manually add them
to the deployment pipeline. However, it took a lot of
time as compared to automating the microservices
stub, and creating the build and deployment pipeline
for newly created microservices may reduce the
operational cost and time [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ], [
            <xref ref-type="bibr" rid="ref37">37</xref>
            ], [56]. As the
practitioner stated “The tooling is very important.
There is one way to create, at least, the structure of
projects for different platforms. So, like, Scala
microservices, they will all look the same. They will have
the same structure […]” (Page no. 22) [56].
          </p>
        </sec>
        <sec id="sec-3-3-3">
          <title>C23 (Multiple services in one container):</title>
          <p>
            Containers are used for packaging up code and
dependencies to deploy microservices ideally.
However, many companies package multiple
microservices in one container and deploy it.
Packaging multiple microservices in one container can
cause issues such as launching new instances for such
services [
            <xref ref-type="bibr" rid="ref37">37</xref>
            ], [
            <xref ref-type="bibr" rid="ref38">38</xref>
            ], [
            <xref ref-type="bibr" rid="ref41">41</xref>
            ] “We observe that placing
multiple services in one container would constitute
independent deployability of microservices. If two
microservices would be packaged in the same Docker
image […]”
          </p>
          <p>
            C24 (Tool selection): With the hype of
microservice architecture, numerous tools are built
and publicly available in the market. There are several
tools publicly available in the market for microservices
development and deployment [57], [58]. However, the
selection of the appropriate tool among many is a
timeconsuming task for many practitioners, particularly
when there is a lack of knowledge on how these tools
and technologies work [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ], [
            <xref ref-type="bibr" rid="ref37">37</xref>
            ], [56] “There are tools
that are out or coming out that are solving a lot of
problems that we have. Things like gRPC, GraphQL, code
generation and documentation, service meshes, [...]”
(page no. 22) [56].
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. DISCUSSIONS</title>
      <p>This section describes the conclusive summary of our
research study, comparative analysis, implications,
and limitations.</p>
      <p>Conclusive summary: Microservices architecture
offers benefits like easier development and
deployment but isn't a one-size-fits-all solution. Our
research question focused on challenges in
microservices design as reported by practitioners.
Using a Socio-Technical Grounded Theory Literature
Review (ST-GTLR), we selected 31 relevant studies
and identified 24 challenges. These were categorized
into seven concepts and three categories. The study
revealed that most of the challenges are in the
microservices design and development category.
Similarly, securing microservices architecture,
particularly authentication and authorization of
services, is extremely challenging due to the
distributed nature of microservices. The study calls for
industry-specific solutions to these challenges for
successful microservices adoption.</p>
      <p>
        Comparative analysis: Recently, several studies
investigated different aspects of microservices
architecture from state-of-the-art practices. Pahl and
Jamshidi [59] conducted a systematic mapping study
on MSA where they taxonomically classified the
emerging applications particularly related to cloud
and container technologies. Similarly, Taibi et al. [60]
conducted a systematic mapping study on
microservices-based solutions' common patterns and
principles. Furthermore, Di Francesco et al. [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ]
conducted an industrial survey to identify the
activities and challenges when organizations migrate
to microservices architecture. Similarly, Baskarada et
al. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] conducted an in-depth interview with
industrial practitioners and identified the challenges
and practical opportunities. Xiang et al. [
        <xref ref-type="bibr" rid="ref38">38</xref>
        ]
empirically investigated the activities performed
during the migration of legacy monolithic architecture
and the challenges faced during the migration.
Similarly, Wang et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] empirically collected
challenges and best practices in microservices.
architecture design and deployment from the
practitioners who have successfully developed
microservices systems. De Almeida and Canedo [61]
conducted a systematic literature review on
authentication and authorization in a microservices
architecture. They have identified the challenges and
practical solutions related to microservices security
but did not cover other design areas. Lianger et al. [55]
conducted an empirical investigation to identify the
practices and challenges regarding data management
in a microservices architecture but did not classify and
develop the taxonomy of challenges in other design
areas of microservices architecture. Soldani et al. [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]
conducted systematic grey literature to identify the
barriers and solutions of microservices architecture.
They just included the grey literature which differs
from our study which particularly identifies the
challenges from empirical studies. Ghofrani and Lubke
[
        <xref ref-type="bibr" rid="ref30">30</xref>
        ] empirically investigated the current state of
practices on barriers and advantages of using a
microservices architecture. However, no study
provided and systematically classified the challenges
that practitioners faced in each design area (design,
development, and operation) of microservices. Both of
these studies addressed different aspects of
microservices architecture [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ][
        <xref ref-type="bibr" rid="ref13">13</xref>
        ][
        <xref ref-type="bibr" rid="ref40">40</xref>
        ].
      </p>
      <p>Study Implications: The results of this study
contribute to academic research by explicitly
exploring the available primary studies related to the
microservices architecture design areas. Similarly, the
study findings make a concrete research contribution
by providing a significant overview of microservices
architecture design area challenges. The implications
for researchers and practitioners were distilled from
seven concepts (microservices implementation,
architecture, security, testing, storage, monitoring,
deployment) identified in this study.</p>
      <p>Practitioners face major challenges in the
architecture and implementation phases of
microservices, especially in decomposing monolithic
systems. Researchers should focus on empirical
studies to identify industry strategies for
decomposition and create universal solutions. These
should help define service boundaries for low coupling
and offer guidelines on which applications would
benefit from transitioning to microservices.</p>
      <p>The security of microservices systems can be
compromised due to the distributed nature of the
system as it gains a large attack surface. Therefore,
researchers and practitioners should develop unique
solutions to trace the vulnerabilities.</p>
      <p>Concerning microservices deployment, it is still
challenging for novice developers to manage and
configure CI/CD tools or services. Researchers should
evaluate the tools employed in the industry, and
practitioners should simplify the configuration of
these tools to help better support, novice developers.</p>
      <p>Managing and monitoring microservices is
considered the second most challenging phase in the
industry. Logging and monitoring traces have been
critical for the developer of the microservices system.
Therefore, the researcher should develop guidelines
for early setup logging and monitoring. Furthermore,
practitioners should develop simple tools for
monitoring the traces.</p>
      <p>The distributed nature of the microservices
architecture poses significant challenges to data
management. The data consistency, query complexity,
and distributed transactions are some significant
challenges. However, research and practitioners
should define the guidelines on how data consistency
can be ensured in a microservices architecture, where
multiple microservices may access and modify the
same data.</p>
      <p>From a practical perspective, practitioners can use
the study's findings to develop strategies for
improving microservices architecture design areas.
The taxonomy of reported challenges provides an
overview of critical areas that need to be considered
by industry experts before initiating the design
activities of microservices architecture.</p>
      <sec id="sec-4-1">
        <title>4.1. Threats to Validity</title>
        <p>Several threats could influence the validity of our
study. The potential threats of this study are analyzed
based on internal, external, and conclusion validity.</p>
        <p>Internal validity: We used ST-GTLR to focus on
key aspects of the topic, acknowledging the risk of
missing some studies due to our search strategy and
keyword selection. To mitigate this, we used an
iterative approach for keyword definition and study
selection, validated by experienced authors. Studies
were chosen based on the criteria in Table 1 and
discussed for quality assurance. Personal bias in data
extraction was minimized through regular discussions
with senior authors. We included non-reviewed
studies from arXiv for comprehensive insights. Coding
was done by the first author and validated iteratively
by expert co-authors to ensure accuracy.</p>
        <p>External validity: refers to the extent to which the
results of a study can be generalized to other
populations, settings, or times. To mitigate this
validity, we followed rigorous protocols of ST-GTLR.</p>
        <p>Conclusion validity: The degree to which the
study's conclusions are credible or reasonable is
referred to as conclusion validity. The authors
conducted brainstorming sessions to discuss the
findings of the study to construct a correct conclusion.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>The concept of microservices architecture is booming
and has become more common due to its significant
benefits, such as agility and scalability. However,
design areas of microservices architecture (design,
development, and operations) pose various
challenges. Seeking the significance of design,
development, and operations, we formulated the
research question: what are the challenges in the
design area of microservices architecture reported by
practitioners in state-of-the-art empirical studies? To
address the mentioned research question, we
conducted a socio-technical grounded theory
literature review (ST-GTLR) by applying the
framework of grounded theory literature review
(GTLR) and rigorous steps of socio-technical grounded
theory (STGT) for analyzing the data of 31 primary
studies. We applied open coding and targeted coding
in the finding section of each empirical study. The
codes were developed by analyzing the raw data of the
finding sections. Further, codes were mapped into core
concepts, and finally, core concepts were mapped into
categories. Through rigorous analysis, we found 24
challenges mapped into seven concepts, i.e.,
architecture, security, development, testing, storage,
monitoring, and deployment. All the concepts were
mapped into three categories, i.e., microservices
design, development, and operation. The challenges
and their mapping would provide a holistic view to
practitioners and researchers.
Systems,” arXiv preprint arXiv:2112.14927,
2021.
[51] P. Billawa, A. B. Tukaram, N. E. D. Ferreyra, J.-P.</p>
      <p>Steghöfer, R. Scandariato, and G. Simhandl,
“Security of Microservice Applications: A
Practitioners’ Perspective on Challenges and
Best Practices,” arXiv preprint
arXiv:2202.01612, 2022.
[52] S. S. de Toledo, A. Martini, and D. I. Sjøberg,
“Improving agility by managing shared libraries
in microservices,” in International Conference on
Agile Software Development, 2020, pp. 195–202.
[53] K. Kong, “APIs &amp; Microservices Connectivity
Report.” [Online]. Available:
https://konghq.com/resources/reports/2022api-microservices-connectivity-report
[54] N. Viennot, M. Lécuyer, J. Bell, R. Geambasu, and
J. Nieh, “Synapse: a microservices architecture
for heterogeneous-database web applications,”
in Proceedings of the Tenth European
Conference on Computer Systems, 2015, pp. 1–
16.
[55] R. Laigner, Y. Zhou, M. A. V. Salles, Y. Liu, and M.</p>
      <p>Kalinowski, “Data management in microservices:
State of the practice, challenges, and research
directions,” arXiv preprint arXiv:2103.00170,
2021.
[56] X. Zhou, H. Huang, H. Zhang, X. Huang, D. Shao,
and C. Zhong, “A cross- company ethnographic
study on software teams for DevOps and
microservices: organization, benefits, and
issues,” in Proceedings of the 44th International
Conference on Software Engineering: Software
Engineering in Practice, 2022, pp. 1–10.
[57] B. BHANDA, “Comprehensive List of DevOps
Tools 2023.” [Online]. Available:
https://www.qentelli.com/thoughtleadership/insights/devops-tools
[58] Forge, “Best Microservices Tools.” [Online].</p>
      <p>Available:
https://sourceforge.net/software/microservice
s/
[59] C. Pahl and P. Jamshidi, “Microservices: A
Systematic Mapping Study.,” CLOSER (1), pp.
137–146, 2016.
[60] D. Taibi, V. Lenarduzzi, and C. Pahl, “Architectural
patterns for microservices: a systematic
mapping study,” in CLOSER 2018: Proceedings of
the 8th International Conference on Cloud
Computing and Services Science; Funchal,
Madeira, Portugal, 19-21 March 2018, 2018.
[61] M. G. de Almeida and E. D. Canedo,
“Authentication and Authorization in
Microservices Architecture: A Systematic
Literature Review,” Applied Sciences, vol. 12, no.
6, p. 3023, 2022</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Newman</surname>
          </string-name>
          ,
          <article-title>Monolith to microservices: evolutionary patterns to transform your monolith</article-title>
          .
          <source>O'Reilly Media</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J.</given-names>
            <surname>Lewis</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Fowler</surname>
          </string-name>
          , “
          <article-title>Microservices: a definition of this new architectural term,” MartinFowler. com</article-title>
          , vol.
          <volume>25</volume>
          , pp.
          <fpage>14</fpage>
          -
          <lpage>26</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>C.</given-names>
            <surname>Richardson</surname>
          </string-name>
          , “
          <article-title>Who is using microservices?” [Online]</article-title>
          . Available: https://microservices.io/articles/whoisusingmi croservices.html
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Waseem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Liang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Shahin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ahmad</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A. R.</given-names>
            <surname>Nassab</surname>
          </string-name>
          , “
          <article-title>On the nature of issues in five open source microservices systems: An empirical study,” in Evaluation and</article-title>
          Assessment in Software Engineering,
          <year>2021</year>
          , pp.
          <fpage>201</fpage>
          -
          <lpage>210</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P.</given-names>
            <surname>Jamshidi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Pahl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. C.</given-names>
            <surname>Mendonça</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lewis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Tilkov</surname>
          </string-name>
          , “
          <article-title>Microservices: The journey so far and challenges ahead</article-title>
          ,
          <source>” IEEE Software</source>
          , vol.
          <volume>35</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>24</fpage>
          -
          <lpage>35</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Haselböck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Weinreich</surname>
          </string-name>
          , and G. Buchgeher, “
          <article-title>An expert interview study on areas of microservice design,” in 2018 IEEE 11th Conference on service-oriented computing and applications</article-title>
          (SOCA),
          <year>2018</year>
          , pp.
          <fpage>137</fpage>
          -
          <lpage>144</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>H.</given-names>
            <surname>Knoche</surname>
          </string-name>
          and
          <string-name>
            <given-names>W.</given-names>
            <surname>Hasselbring</surname>
          </string-name>
          , “
          <article-title>Drivers and barriers for microservice adoption- a survey among professionals in Germany,” Enterprise Modelling and Information Systems Architectures</article-title>
          (EMISAJ)-
          <source>International Journal of Conceptual Modeling:</source>
          Vol.
          <volume>14</volume>
          ,
          <string-name>
            <surname>Nr</surname>
          </string-name>
          . 1,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>T.</given-names>
            <surname>Yarygina</surname>
          </string-name>
          and
          <string-name>
            <given-names>A. H.</given-names>
            <surname>Bagge</surname>
          </string-name>
          , “
          <article-title>Overcoming security challenges in microservice architectures,” in 2018 IEEE Symposium on Service-Oriented System Engineering (SOSE</article-title>
          ),
          <year>2018</year>
          , pp.
          <fpage>11</fpage>
          -
          <lpage>20</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Viggiato</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Terra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Rocha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. T.</given-names>
            <surname>Valente</surname>
          </string-name>
          , and E. Figueiredo, “
          <article-title>Microservices in practice: A survey study</article-title>
          ,” arXiv preprint arXiv:
          <year>1808</year>
          .04836,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Baškarada</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Koronios</surname>
          </string-name>
          , “
          <article-title>Architecting microservices: Practical opportunities</article-title>
          and challenges,
          <source>” Journal of Computer Information Systems</source>
          , vol.
          <volume>60</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>428</fpage>
          -
          <lpage>436</lpage>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>X.</given-names>
            <surname>Zhou</surname>
          </string-name>
          et al., “
          <article-title>Fault analysis and debugging of microservice systems: Industrial survey, benchmark system, and empirical study</article-title>
          ,
          <source>” IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>47</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>243</fpage>
          -
          <lpage>260</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Kadiyala</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Rubin</surname>
          </string-name>
          , “
          <article-title>Promises and challenges of microservices: an exploratory study,” Empirical Software Engineering</article-title>
          , vol.
          <volume>26</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>44</lpage>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>D.</given-names>
            <surname>Taibi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lenarduzzi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Pahl</surname>
          </string-name>
          , “Processes, motivations, and
          <article-title>issues for migrating to microservices architectures: An empirical investigation</article-title>
          ,
          <source>” IEEE Cloud Computing</source>
          , vol.
          <volume>4</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>22</fpage>
          -
          <lpage>32</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>P.</given-names>
            <surname>Di Francesco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Lago</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Malavolta</surname>
          </string-name>
          , “
          <article-title>Architecting with microservices: A systematic mapping study</article-title>
          ,
          <source>” Journal of Systems and Software</source>
          , vol.
          <volume>150</volume>
          , pp.
          <fpage>77</fpage>
          -
          <lpage>97</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>J.</given-names>
            <surname>Soldani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Tamburri</surname>
          </string-name>
          , and W.
          <string-name>
            <surname>-J. Van Den</surname>
            <given-names>Heuvel</given-names>
          </string-name>
          , “
          <article-title>The pains and gains of microservices: A systematic grey literature review</article-title>
          ,
          <source>” Journal of Systems and Software</source>
          , vol.
          <volume>146</volume>
          , pp.
          <fpage>215</fpage>
          -
          <lpage>232</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>P.</given-names>
            <surname>Di Francesco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Lago</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Malavolta</surname>
          </string-name>
          , “
          <article-title>Architecting with microservices: A systematic mapping study</article-title>
          ,
          <source>” Journal of Systems and Software</source>
          , vol.
          <volume>150</volume>
          , pp.
          <fpage>77</fpage>
          -
          <lpage>97</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>R.</given-names>
            <surname>Hoda</surname>
          </string-name>
          , “
          <article-title>Socio-technical grounded theory for software engineering</article-title>
          ,
          <source>” IEEE Transactions on Software Engineering</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Wolfswinkel</surname>
          </string-name>
          , E. Furtmueller, and
          <string-name>
            <given-names>C. P.</given-names>
            <surname>Wilderom</surname>
          </string-name>
          , “
          <article-title>Using grounded theory as a method for rigorously reviewing literature</article-title>
          ,”
          <source>European journal of information systems</source>
          , vol.
          <volume>22</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>45</fpage>
          -
          <lpage>55</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>F.</given-names>
            <surname>Nunes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Verdezoto</surname>
          </string-name>
          , G. Fitzpatrick,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kyng</surname>
          </string-name>
          , E. Grönvall, and
          <string-name>
            <given-names>C.</given-names>
            <surname>Storni</surname>
          </string-name>
          , “
          <article-title>Self-care technologies in HCI: Trends, tensions, and opportunities,” ACM Transactions on Computer-Human Interaction (TOCHI)</article-title>
          , vol.
          <volume>22</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>45</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>C.</given-names>
            <surname>Meuwly</surname>
          </string-name>
          et al.,
          <article-title>“Definition and diagnosis of the trigeminocardiac reflex: a grounded theory approach for an update,” Frontiers in neurology</article-title>
          , vol.
          <volume>8</volume>
          , p.
          <fpage>533</fpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>K.-I. Andersson</surname>
          </string-name>
          , “
          <article-title>Developing a theory of open access: a grounded theory based literature review</article-title>
          ,”
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>A. R.</given-names>
            <surname>Montazemi</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Qahri-Saremi</surname>
          </string-name>
          , “
          <article-title>Factors affecting adoption of online banking: A metaanalytic structural equation modeling study,” Information &amp; management</article-title>
          , vol.
          <volume>52</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>210</fpage>
          -
          <lpage>226</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>S.</given-names>
            <surname>Utulu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Sewchurran</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Dwolatzky</surname>
          </string-name>
          , “
          <article-title>Systematic and Grounded Theory Literature Reviews of Software Process Improvement Phenomena: Implications for IS Research,”</article-title>
          <source>in Proceedings of the Informing Science and Information Technology Education Conference</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>249</fpage>
          -
          <lpage>279</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>A.</given-names>
            <surname>Pant</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hoda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tantithamthavorn</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Turhan</surname>
          </string-name>
          , “
          <article-title>Ethics in AI through the Developer's Prism: A Socio-Technical Grounded Theory Literature Review</article-title>
          and Guidelines,” arXiv preprint arXiv:
          <volume>2206</volume>
          .09514,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>D.</given-names>
            <surname>Hidellaarachchi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Grundy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hoda</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Madampe</surname>
          </string-name>
          , “
          <article-title>The effects of human aspects on the requirements engineering process: A systematic literature review</article-title>
          ,
          <source>” IEEE Transactions on Software Engineering</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Sill</surname>
          </string-name>
          , “
          <article-title>The design and architecture of microservices,” IEEE Cloud Computing</article-title>
          , vol.
          <volume>3</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>76</fpage>
          -
          <lpage>80</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>A.</given-names>
            <surname>Balalaie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Heydarnoori</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Jamshidi</surname>
          </string-name>
          , “
          <article-title>Microservices architecture enables devops: Migration to a cloud-native architecture</article-title>
          ,
          <source>” Ieee Software</source>
          , vol.
          <volume>33</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>42</fpage>
          -
          <lpage>52</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>D.</given-names>
            <surname>Taibi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lenarduzzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Pahl</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Janes</surname>
          </string-name>
          , “
          <article-title>Microservices in agile software development: a workshop-based study into issues, advantages</article-title>
          , and disadvantages,”
          <source>in Proceedings of the XP2017 Scientific Workshops</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Gouigoux</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Tamzalit</surname>
          </string-name>
          , “
          <article-title>From monolith to microservices: Lessons learned on an industrial migration to a web oriented architecture</article-title>
          ,
          <source>” in 2017 IEEE international conference on software architecture workshops (ICSAW)</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>62</fpage>
          -
          <lpage>65</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>J.</given-names>
            <surname>Ghofrani</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Lübke</surname>
          </string-name>
          , “
          <article-title>Challenges of Microservices Architecture: A Survey on the State of the Practice</article-title>
          .,
          <source>” ZEUS</source>
          , vol.
          <year>2018</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>P.</given-names>
            <surname>Di Francesco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Lago</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Malavolta</surname>
          </string-name>
          , “
          <article-title>Migrating towards microservice architectures: an industrial survey</article-title>
          ,” in
          <source>2018 IEEE International Conference on Software Architecture (ICSA)</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>29</fpage>
          -
          <lpage>2909</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>W.</given-names>
            <surname>Luz</surname>
          </string-name>
          , E. Agilar,
          <string-name>
            <surname>M. C. de Oliveira</surname>
          </string-name>
          ,
          <string-name>
            <surname>C. E. R. de Melo</surname>
            , G. Pinto, and
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Bonifácio</surname>
          </string-name>
          , “
          <article-title>An experience report on the adoption of microservices in three Brazilian government institutions</article-title>
          ,”
          <source>in Proceedings of the XXXII Brazilian Symposium on Software Engineering</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>32</fpage>
          -
          <lpage>41</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <surname>H. H. S. da Silva</surname>
          </string-name>
          ,
          <string-name>
            <surname>G. de F Carneiro</surname>
            , and
            <given-names>M. P.</given-names>
          </string-name>
          <string-name>
            <surname>Monteiro</surname>
          </string-name>
          , “
          <article-title>An experience report from the migration of legacy software systems to microservice based architecture</article-title>
          ,
          <source>” in 16th International Conference on Information Technology-New Generations (ITNG</source>
          <year>2019</year>
          ),
          <year>2019</year>
          , pp.
          <fpage>183</fpage>
          -
          <lpage>189</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>J.</given-names>
            <surname>Fritzsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bogner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Wagner</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Zimmermann</surname>
          </string-name>
          , “Microservices Migration in Industry: Intentions, Strategies, and Challenges,” in
          <source>2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)</source>
          , Cleveland,
          <string-name>
            <surname>OH</surname>
          </string-name>
          , USA, Sep.
          <year>2019</year>
          , pp.
          <fpage>481</fpage>
          -
          <lpage>490</lpage>
          . doi:
          <volume>10</volume>
          .1109/ICSME.
          <year>2019</year>
          .
          <volume>00081</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bogner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Fritzsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Wagner</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Zimmermann</surname>
          </string-name>
          , “
          <article-title>Assuring the evolvability of microservices: insights into industry practices and challenges</article-title>
          ,” in
          <source>2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>546</fpage>
          -
          <lpage>556</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <given-names>J.</given-names>
            <surname>Ghofrani</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Bozorgmehr</surname>
          </string-name>
          , “
          <article-title>Migration to microservices: Barriers and solutions</article-title>
          ,” in International Conference on Applied Informatics,
          <year>2019</year>
          , pp.
          <fpage>269</fpage>
          -
          <lpage>281</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <given-names>M.</given-names>
            <surname>Waseem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Liang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Shahin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. Di</given-names>
            <surname>Salle</surname>
          </string-name>
          , and G. Márquez, “
          <article-title>Design, monitoring, and testing of microservices systems: The practitioners' perspective,”</article-title>
          <source>Journal of Systems and Software</source>
          , vol.
          <volume>182</volume>
          , p.
          <fpage>111061</fpage>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>Q.</given-names>
            <surname>Xiang</surname>
          </string-name>
          et al.,
          <article-title>“No free lunch: Microservice practices reconsidered in industry</article-title>
          ,
          <source>” arXiv preprint arXiv:2106.07321</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <surname>M. Wu</surname>
          </string-name>
          et al., “
          <article-title>On the Way to Microservices: Exploring Problems and Solutions from Online Q&amp;A Community,</article-title>
          ” in
          <source>2022 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)</source>
          ,
          <year>2022</year>
          , pp.
          <fpage>432</fpage>
          -
          <lpage>443</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <given-names>H.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Jia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Zhong</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Zhang</surname>
          </string-name>
          , “
          <article-title>Microservice architecture in reality: An industrial inquiry</article-title>
          ,” in
          <source>2019 IEEE international conference on software architecture (ICSA)</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>51</fpage>
          -
          <lpage>60</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <given-names>T.</given-names>
            <surname>Colanzi</surname>
          </string-name>
          et al., “
          <article-title>Are we speaking the industry language? The practice and literature of modernizing legacy systems with microservices</article-title>
          ,
          <source>” in 15th Brazilian Symposium on Software Components</source>
          , Architectures, and
          <string-name>
            <surname>Reuse</surname>
          </string-name>
          ,
          <year>2021</year>
          , pp.
          <fpage>61</fpage>
          -
          <lpage>70</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <given-names>P.</given-names>
            <surname>Kruchten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. L.</given-names>
            <surname>Nord</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Ozkaya</surname>
          </string-name>
          , “
          <article-title>Technical debt: From metaphor to theory and practice,” Ieee software</article-title>
          , vol.
          <volume>29</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>18</fpage>
          -
          <lpage>21</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <given-names>D.</given-names>
            <surname>Taibi</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Lenarduzzi</surname>
          </string-name>
          , “
          <article-title>On the definition of microservice bad smells,” IEEE software</article-title>
          , vol.
          <volume>35</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>56</fpage>
          -
          <lpage>62</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          [44]
          <string-name>
            <given-names>D.</given-names>
            <surname>Taibi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lenarduzzi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Pahl</surname>
          </string-name>
          , “
          <article-title>Microservices anti-patterns: A taxonomy,</article-title>
          ” in Microservices, Springer,
          <year>2020</year>
          , pp.
          <fpage>111</fpage>
          -
          <lpage>128</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          [45]
          <string-name>
            <given-names>V.</given-names>
            <surname>Lenarduzzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Lomio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Saarimäki</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Taibi</surname>
          </string-name>
          , “
          <article-title>Does migrating a monolithic system to microservices decrease the technical debt</article-title>
          ?,
          <source>” Journal of Systems and Software</source>
          , vol.
          <volume>169</volume>
          , p.
          <fpage>110710</fpage>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref46">
        <mixed-citation>
          [46]
          <string-name>
            <given-names>S.</given-names>
            <surname>S. de Toledo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Martini</surname>
          </string-name>
          , and
          <string-name>
            <surname>D. I. Sjøberg</surname>
          </string-name>
          , “
          <article-title>Identifying architectural technical debt, principal, and interest in microservices: A multiple-case study</article-title>
          ,
          <source>” Journal of Systems and Software</source>
          , vol.
          <volume>177</volume>
          , p.
          <fpage>110968</fpage>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref47">
        <mixed-citation>
          [47]
          <string-name>
            <given-names>H.</given-names>
            <surname>Michael Ayas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Leitner</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Hebig</surname>
          </string-name>
          , “The Migration Journey Towards Microservices,” in
          <source>International Conference on Product-Focused Software Process Improvement</source>
          ,
          <year>2021</year>
          , pp.
          <fpage>20</fpage>
          -
          <lpage>35</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref48">
        <mixed-citation>
          [48]
          <string-name>
            <given-names>J.</given-names>
            <surname>Lotz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Vogelsang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Benderius</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Berger</surname>
          </string-name>
          , “
          <article-title>Microservice architectures for advanced driver assistance systems: A case-study,” in</article-title>
          2019 IEEE International Conference on Software Architecture
          <string-name>
            <surname>Companion (ICSA-C)</surname>
          </string-name>
          ,
          <year>2019</year>
          , pp.
          <fpage>45</fpage>
          -
          <lpage>52</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref49">
        <mixed-citation>
          [49]
          <string-name>
            <given-names>J.</given-names>
            <surname>Carnell</surname>
          </string-name>
          and
          <string-name>
            <given-names>I. H.</given-names>
            <surname>Sánchez</surname>
          </string-name>
          , Spring microservices in action.
          <source>Simon and Schuster</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref50">
        <mixed-citation>
          [50]
          <string-name>
            <given-names>A. R.</given-names>
            <surname>Nasab</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Shahin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. A. H.</given-names>
            <surname>Raviz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Liang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mashmool</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Lenarduzzi</surname>
          </string-name>
          , “
          <article-title>An Empirical Study of Security Practices for Microservices</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>