<!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>
      <journal-title-group>
        <journal-title>October</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Migration from Monolithic Applications to Microservices: A Systematic Literature Mapping on Approaches, Challenges, and Anti-patterns</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Fernando Muraca</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>María F. Pollo-Cattaneo</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Universidad Tecnológica Nacional</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Buenos Aires</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Argentina</string-name>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <volume>2</volume>
      <fpage>6</fpage>
      <lpage>28</lpage>
      <abstract>
        <p>The present work explores the approaches, challenges, and anti-patterns, together with the best practices concerning the transition from a monolith to a microservice architecture. Based on a methodical examination of current scholarly publications across an extensive review of publications in specialized journals, ongoing tendencies are identified, also future research areas in the domain of transitioning from monolithic systems into microservices are mentioned. Additionally, the applied and academic implications of these findings are reviewed. The intention is to present a complete and current summary of progress in this area.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Migration</kwd>
        <kwd>Monolithic Applications</kwd>
        <kwd>Microservices</kwd>
        <kwd>Systematic Mapping</kwd>
        <kwd>Literature</kwd>
        <kwd>Approaches</kwd>
        <kwd>Challenges</kwd>
        <kwd>Anti-Patterns</kwd>
        <kwd>Best Practices</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Transitioning from monolithic apps to microservices grows as a dynamic research area in
Software Engineering, due to the advantages ofered by this architecture in terms of scalability,
maintainability, and adaptability [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Migration involves decomposing a monolithic system into
little, autonomous components that can be developed, released and expanded independently [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
However, that process can be complex and challenging as it involves reorganizing components,
managing dependencies, and adapting to new design patterns and architectures [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Additionally,
the use of microservices in agile environments introduces challenges, benefits, and drawbacks
that are considered in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. These key considerations motivate a deeper analysis of the migration
process in such environments.
      </p>
      <p>
        Drawing from an exhaustive examination of prior research, multiple publications delve into
the advantages as well as challenges related to leveraging Microservices [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ]. These works
explore various design aspects [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and highlight the significance of patterns [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The industry
is achieving considerable progress in this field, however, academic research is still in its early
stages [
        <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
        ]. An additional review verifies substantial industry interest in transitioning legacy
systems [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>The context and motivations driving the research, intended objectives, and document structure
are outlined in the present section.</p>
      <sec id="sec-1-1">
        <title>1.1. Context and Motivation</title>
        <p>
          The software industry gravitates toward microservices adoption as a result of the advantages it
ofers in terms of eficiency and scalability for application development and maintenance [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
Despite this trend, many organizations still use monolithic applications, which pose challenges
in terms of adaptability and scalability. Shifting from monoliths to microservices is a solution
to address these challenges, yet many concerns and obstacles remain to achieve a successful
transition [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
      </sec>
      <sec id="sec-1-2">
        <title>1.2. Research Goal</title>
        <p>The present work intends to carry a systematic literature mapping about the migration from
monolithic systems to microservices evaluating the present approaches, challenges, antipatterns,
and best practices published in recent scholarly literature. Moreover, this study tries to identify
tendencies as well as possible areas for further research in this domain of study.</p>
      </sec>
      <sec id="sec-1-3">
        <title>1.3. Document Structure</title>
        <p>The structure of the paper is: Section 2 gives the theoretical grounding of the investigation,
including important definitions such as monolithic apps, microservices, converting monoliths to
microservices, as well as approaches and techniques for service decomposition. In Section 3 the
procedures employed to carry out the mapping are discussed. Section 4 presents the discoveries
of the systematic mapping, containing approaches, challenges, antipatterns, and best practices
reported in the literature. In Section 5 concrete and theoretical efects of these discoveries are
reviewed, along with the limits of the examined literature, plus the areas for future research.
Section 6 shows the research findings, including the conclusions recap. The references used are
presented in the last section.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. Theoretical Framework</title>
      <p>The theories and models that back up the current work are presented in this section. Diverse
concepts are explained: monolithic apps, microservices, converting monoliths to microservices,
approaches, and techniques for service breakdown, challenges and antipatterns in migration,
best practices and suggestions, tools and technologies for microservices migration, success
measurement and metrics in microservices migration, also case studies of transitions from
monolithic systems to microservices.</p>
      <p>Shifting away from monoliths to microservices is a complicated and demanding procedure
mandating thoughtful preparation and roll-out. The importance lies in choosing appropriate
strategies for breaking down to ensure an easy transition as well as obtain the most of the
opportunities that microservice architecture gives. The goal is to find current literature and
viewpoints on migration, guaranteeing that all relevant topics are included, and reducing any
research gaps that may occur.</p>
      <sec id="sec-2-1">
        <title>2.1. Monolithic Applications</title>
        <p>
          Monolithic applications are computer programs developed as unified, indivisible elements where
all components are interconnected and dependent on each other [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. These computer programs
are frequently constructed, verified, and released as a sole artifact, which can make
maintenance and scalability challenges. As a monolithic system increases its scope and complication,
challenges can emerge in trying to understand, modify, as well as extend them, potentially
undermining the developer productivity and code quality [
          <xref ref-type="bibr" rid="ref12 ref3">3, 12</xref>
          ].
        </p>
        <p>
          In a monolithic application, components such as the front end, backend logic, and data are
tightly coupled, making it challenging to implement changes in a specific part of the application
without afecting other parts [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. Additionally, monolithic applications may be less scalable
than microservices-based applications, as the scalability of a specific component can be limited
by the scalability of the application as a whole [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Microservices</title>
        <p>
          Microservice is a software architecture that involves decomposing an app into tiny, autonomous
components, each handling particular functionality [
          <xref ref-type="bibr" rid="ref1 ref13 ref14">1, 13, 14</xref>
          ]. Such components are created,
validated, and installed separately, which enables scalability as well as maintenance of the
system. Additionally, microservices allow development squads to operate more flexibly and
also adapt to changes in business requirements [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>
          Microservices also promote modularity and separation of responsibilities, which can improve
software quality and facilitate collaboration among development teams [
          <xref ref-type="bibr" rid="ref1 ref13">1, 13</xref>
          ]. The independent
nature of microservices enables teams to work simultaneously in addition to reducing risks
associated with implementing changes in the application [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Migration from Monolithic Applications to Microservices</title>
        <p>
          Over time, companies tend to collect apps that, due to their longevity, commonly have a
monolithic architecture and a tendency to accumulate technical debt. Given the necessity to
update these legacy systems due to technological advances, and shifting from monoliths to
microservices represents a convincing approach [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. Numerous companies are attracted to
decomposing monoliths into a microservice architecture model [
          <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
          ]. Making the switchover
from monolithic apps to microservices involves breaking apart a monolithic app into shorter,
self-contained components that can be engineered, released, and extended separately [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. That
process may be complicated, as it involves reorganizing components, managing dependencies,
and adjusting to new design patterns and architecture [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Successfully transitioning from
monoliths to microservices can improve extensibility, and maintainability, along with
adaptability related to the application, as well as facilitate teamwork and continuous software delivery
[
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. The migration process can be represented by the following diagram suggested in Figure 1,
whereas 3 stages are identified: reverse engineering, architecture transformation, and forward
engineering.
        </p>
        <p>
          Transitioning from monoliths to microservices can be carried out incrementally, starting
by identifying and extracting the components that can benefit the most from decomposition
into microservices [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. This approach allows organizations to minimize risks associated with
migration and obtain quick benefits by addressing the most problematic areas of the monolithic
application first [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], an approach is presented for transforming one monolithic model into a
microservicesbased paradigm, focusing on critical points such as modularity, scalability, and software
reliability during the migration process. Coping with these challenges is crucial to ensure a successful
shift to a microservice architecture.
        </p>
      </sec>
      <sec id="sec-2-4">
        <title>2.4. Approaches and Techniques for Service Decomposition</title>
        <p>
          The process of shifting from monoliths to microservices involves various approaches
together with techniques to achieve a successful transition. Some common approaches include
functionality-based decomposition, which involves dividing the application into microservices
that represent specific business functions; domain-based decomposition, which focuses on
dividing the application into microservices that represent specific business areas; and
responsibilitybased decomposition, which involves dividing the application into microservices that represent
specific responsibilities, such as user management or order management [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
        <p>
          Another proposed approach focuses on identifying and analyzing the business functionalities
of the monolith, theoretically assigning them to microservices using statistical techniques. The
possibility of automating the process in the future is also mentioned, but the need for testing
and demonstrations to validate its efectiveness is emphasized [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ].
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], additional approaches and techniques for microservice decomposition are presented,
ofering practical perspectives and strategies for such transitioning eficiently as well as
effectively. These approaches encompass methodologies based on functionality, domain, and
responsibility, providing tailored options for the specific context of each project.
        </p>
      </sec>
      <sec id="sec-2-5">
        <title>2.5. Tools and technologies for Microservice Migration</title>
        <p>
          The choice of appropriate tools and technologies is crucial to facilitate the switchover from
monolithic systems to microservices. Some common tools along with technologies include
containers (such as Docker), container orchestrators (such as Kubernetes), API management
systems (such as API Gateway), and monitoring and observability platforms (such as Prometheus
and Grafana) [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. These tools and technologies can assist development teams in eficiently and
efectively managing, deploying, and scaling microservices, as well as monitoring and analyzing
the performance and health of the application during and after the migration [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
        </p>
        <p>
          Another study [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] shows tools as Linux Containers over Docker Swarm. Containerization
ofers many capabilities via Docker. Also, automated continuous integration and deployment
workflow on in-house hosting.
        </p>
      </sec>
      <sec id="sec-2-6">
        <title>2.6. Success Measurement and Metrics in Microservice Migration</title>
        <p>
          To assess the success in transitioning from monoliths to microservices, it is crucial to establish
clear metrics and evaluation criteria. Typical measurements incorporate response duration,
latency, error frequency, resource consumption, and user satisfaction [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. These metrics can
help development teams identify areas for improvement and adjust their migration strategies as
needed to achieve the desired goals [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-7">
        <title>2.7. Case Studies and Successful Examples of Monolithic to Microservices</title>
      </sec>
      <sec id="sec-2-8">
        <title>Migration</title>
        <p>
          Several case studies demonstrate successful migration from monolithic applications to
microservices [
          <xref ref-type="bibr" rid="ref20 ref3">3, 20</xref>
          ]. One notable example is the work conducted in [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], which investigates
the feasibility and efects of transforming an advanced driver assistance function into a
microservice architecture. The results indicate that microservices reduced system complexity and
streamlined the development process, thereby preparing the systems to tackle future challenges.
By analyzing such cases, there is the potential to achieve enhanced comprehension of successful
practices along with approaches applied to their migration projects [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. In [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] another example
is presented to display how scale is beneficially influenced by reconfiguring a monolithic design
to microservices model.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Methodology</title>
      <p>The present section delineates the approach taken for this research, including the systematic
literature mapping, document selection system, criteria of inclusion and exclusion, data extraction,
and synthesis.</p>
      <p>
        Specific filters are applied to select relevant articles within the domain of microservices design.
An approach followed in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] serves as a reference, and a general overview of the approach is
provided along with an explanation of the filters used.
      </p>
      <sec id="sec-3-1">
        <title>3.1. Systematic Literature Mapping</title>
        <p>
          Systematic literature mapping refers to a research approach that enables the spotting, assessment,
along fusion of available evidence in a specific area of study ºci [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. This approach involves
conducting comprehensive and systematic searches in academic databases and other sources of
information to identify relevant studies and gain a panorama of cutting-edge progress on the
study topic [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Research Queries</title>
        <p>The chosen research queries for this investigation are on approaches, challenges, and
antipatterns in shifting from monoliths to microservices. These queries are displayed in the following
exhibit:
Understanding those approaches applied in
shifting from monoliths to microservices ofers a
panorama of the strategies and implements
utilized in the present process.</p>
        <p>What are the common challenges Identifying the common challenges in the
transiin the process of converting mono- tion of monoliths into microservices will provide
lithic apps to microservices? an understanding of every dificulty that arises
during this shift together with developing
strategies to recover from them.</p>
        <p>What antipatterns have been sin- Identifying antipatterns in converting from
monogled out when moving from mono- liths to microservices will help avoid common
lithic systems to microservices? mistakes and adopt recommended practices for
achieving successful migration.</p>
        <p>Which are the ideal approaches and
recommendations when it comes to
transitioning from monolithic apps
to microservices?
What are the advantages and
disadvantages associated with
transitioning from monolithic apps to
microservices?</p>
        <p>The ideal approaches and recommendations can
be helpful as guidelines to manage migration
more efectively.</p>
        <p>Assessing the positives and negatives of shifting
away from monoliths to microservices gives an
understanding into the upsides and possible
constraints of this transition.</p>
        <p>These research queries intend to cope with diferent viewpoints presented in the process of
switching monoliths into microservices.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Query String</title>
        <p>A carefully designed search string is created to address the research focus, ensuring the inclusion
of relevant studies on microservices and migration. The Boolean operators AND and OR are used
to ensure the inclusion of studies that contemplate both terms: microservices and migration. The
use of AND ensures the presence of both topics, while OR allows for variations in terminology,
such as "Microservices" or "Microservice".</p>
        <p>Initially, the search string is broad and iteratively refined to narrow down the results. Diferent
combinations of terms and Boolean operators are tested until an optimal string is obtained that
returns a manageable number of relevant articles. The final search string used is: ("Microservices"
OR "Microservice") AND ("Migration" OR "Challenges" OR "Approaches" OR "Antipatterns").</p>
      </sec>
      <sec id="sec-3-4">
        <title>3.4. Eligibility Criteria and Search Filters</title>
        <p>
          Eligibility criteria are rules applied during the present study selection process to determine if a
study is relevant and should be included in the mapping [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. These criteria can be based on
aspects such as study type, methodology used, study population, and relevance to the research
questions [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ].
        </p>
        <p>
          Table 2 summarizes the eligibility criteria established in the present systematic literature
mapping, based on [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. These criteria were essential to delimit the scope of the mapping and
ensure the inclusion of relevant studies that provide valuable information.
        </p>
      </sec>
      <sec id="sec-3-5">
        <title>3.5. Filters</title>
        <p>Five filters (1F to 5F) are applied to refine the search results:
• 1F: Review of articles by submitting the query through research databases. Search specifics
include publication date span, publication category, and vocabulary.
• 2F: Reading the headline, tags, and synopsis of the research to assess its relevance.
• 3F: Elimination of duplicate studies to avoid data repetition.
• 4F: Checking the opening, discoveries, and deductions of the paper for enhanced
comprehension of the study.
• 5F: Reading each full article to have a complete understanding of the study along with its
relevance to this research.</p>
      </sec>
      <sec id="sec-3-6">
        <title>3.6. Information seeking Execution</title>
        <p>The information seeking takes place sequentially across the listed databases in the following
order: IEEE Xplore, Springer, Science Direct, O’Reilly, Wiley Online Library, and Compendex.
The numbers shown represent the cumulative filtered studies after searching each database.
In addition to the search string, the first filter applied was the publication date (2018–2023),
content type or publication, and language (English). At this stage, Figure 2 was generated,
illustrating the study filtering process.</p>
        <p>In the above figure, the filtered studies are later revised to identify the relevant research
articles for the systematic mapping.</p>
      </sec>
      <sec id="sec-3-7">
        <title>3.7. Study Selection Process</title>
        <p>
          In this process, which involves the revision of the filtered articles in the information-seeking
phase, is determined their significance related to the research queries [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. This process is
carried out in several stages, starting with the removal of duplicates and the review of study
titles and abstracts to identify those that address the research topic [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ].
        </p>
        <p>
          Next, a full-text review is conducted on the selected studies from the previous stage, aiming
to assess their quality and relevance in detail [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. That involves the review of various factors
including the methods employed, the legitimacy and dependability of the findings, plus the
enrichment of understanding in the research area [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ].
        </p>
        <p>The conceptual categories used for document classification were defined based on the key
topics covered in the research questions, including approaches for migration, challenges,
antipatterns, and best practices.</p>
        <p>
          Finally, the studies that meet the established criteria for quality and relevance are selected
and included in the data synthesis and results analysis [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-8">
        <title>3.8. Information selection</title>
        <p>
          At this point, relevant data coming from selected studies is collected and analyzed to dig the
research queries together with providing an overview of the current state of this topic under
study, in this case, transitioning from monolithic systems to microservices [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. This process
includes distinguishing tendencies within the content, associating outcomes, along finding
areas of agreement and distinction through the literature [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Findings</title>
      <p>Within this area, every finding obtained from this structured literature mapping around
transitioning from monoliths to microservices is presented. Each following subsection corresponds
to each research query. In essence, the final intention is to connect the following findings with
the research queries previously stated.</p>
      <sec id="sec-4-1">
        <title>4.1. Most Common approaches utilized for a transition from monoliths into microservices (RQ1)</title>
        <p>
          In this section, the most common approaches spotted in the literature are revised. One spotted
tactic is Service Cutter [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], a structured procedure for module breakdown based on two concepts:
coupling and cohesion. This method applies many rules to identify component boundaries, as a
result, it provides support in the process of changing to a microservices model.
        </p>
        <p>
          Another approach is domain-driven decomposition, which involves dividing the application
into services that represent specific business domains [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Domain-driven design is the main
concept that motivates this type of decomposition, as a consequence it permits better alignment
between software architecture and business needs.
        </p>
        <p>
          Responsibility-based decomposition is another technique found in the literature, where
services are divided based on functional and non-functional responsibilities [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. It allows better
separation of concerns, modularity, scalability with maintainability.
        </p>
        <p>
          Another proposal is a cooperative clustering-oriented solution for automated microservices
detection by extracting them from business processes [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]. Here, a separation between models
to capture structural dependencies, data dependencies, together with semantic dependencies of
the business processes is made. Collaborative clustering means preventing loss of details and
summing the extracted information, and as a consequence, to have better precision in
microservice detection. In [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ] it is recommended to use continuous integration and continuous delivery
for end-to-end automation of release administration and installation, individual databases per
service, service discovery, monitoring, and the use of virtual machines or containers.
        </p>
        <p>
          Additionally, hybrid approaches that combine diferent decomposition techniques, such as
functionality-based decomposition and domain-based decomposition are identified [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Multiple
perspectives and criteria are considered in this hybrid approach, which leads to greater flexibility
in the whole migration process.
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ] most systems are rebuilt using modern technologies, whereas legacy code is
restructured in only two examples. This validates a trend also spotted in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Most Common Challenges Encountered During the Migration (RQ2)</title>
        <p>
          Every long-standing monolithic system is singular, and shifting to microservices presents
obstacles [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. One of the top issues is managing dependencies between services, as the
decomposition of a monolithic application can lead to a complex set of interdependencies [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
The negative aspects are, on one hand, scalability and maintainability of the solution can be
afected, and on the other hand complexity of the architecture can increase.
        </p>
        <p>
          Another common dificulty throughout the transition is adapting to new design together with
architectural patterns, such as communication between services and managing distributed data
[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. These patterns require important changes in the system’s architecture, including additional
skills along with knowledge from the development team.
        </p>
        <p>
          The article [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ] remarks three significant challenges in microservice migration: timeshare,
persistence, and information integrity. The concept of timeshare allows multiple services
to be utilized by diverse organizations possessing unique needs while accommodating data
protection priorities. Persistence or statefulness afects non-functional criteria around flexibility,
robustness, and accessibility within the upgraded platform. Information integrity issues arise
upon transitioning legacy scripts that tap into centralized data storage into microservices
accessing decentralized data servers [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ].
        </p>
        <p>
          Troubles around undertaking microservices decoupling, underappreciating the impacts of
service isolation, and having a single data storage per microservice along with problems in
managing microservice paradigm are challenges described in [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ].
        </p>
        <p>
          The reorganization of components and code refactoring can also pose challenges during the
migration, as they can introduce regression risks and afect the software’s quality [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Also,
the migration may require the adoption of a set of new technologies, including containers and
orchestration platforms, this may result in compatibility problems and a slow learning curve
[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. In a study conducted in [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ] technological obstacles are informed across entities of all
scales, though large institutions primarily face challenges to sync big teams and build bridges
between them. Experienced corporations need to begin a mentality shift while instituting agile
workflows.
        </p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Antipatterns singled out when moving from monolithic systems to microservices (RQ3)</title>
        <p>
          Antipatterns are bad habits that can be counterproductive when moving monolithic systems to
microservices. The first identified antipattern: is excessive service decomposition, which can
result in many microservices that are dificult to manage and maintain [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. To address this issue,
a more balanced and pragmatic approach to service decomposition is proposed, considering
factors such as cohesion, coupling, and application complexity [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
        <p>
          Another antipattern is the lack of consideration for the implications of migration on
nonfunctional aspects such as security, privacy, and performance [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. To address this issue, it is
recommended to perform an extensive analysis of non-functional needs including adopting
design and architectural practices that ensure the fulfillment of these requirements during
the migration process [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Over-prioritizing technology over design along with the transition
process [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ] can be problematic too.
        </p>
        <p>
          Regarding databases, [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ] points out that several companies implemented microservices
wired into legacy data stores or existing repository clusters, despite this potentially shortening
the benefits of implementing microservice architectures because they were not able to divide
the databases. This situation brings unwanted coupling. In this case, the professionals
propose splitting the information in present data sources so each microservice taps its exclusive
repository.
        </p>
        <p>
          Another thing that could happen is to grow large components, as described in [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] as
numerous entities find, feature upon feature, modules can inflate over time. Troubled by
monolithic components with overstufed functionality. This introduces unneeded complications,
uncertainty on where to put the new features, and lastly poor software quality.
        </p>
      </sec>
      <sec id="sec-4-4">
        <title>4.4. Best Practices and Recommendations (RQ4)</title>
        <p>
          Many best practices and recommendations were found in the literature. One best practice is to
adopt an incremental and evolutionary approach to migration, starting with the decomposition
of the most critical or problematic components of the application and gradually progressing
towards a complete microservice architecture [
          <xref ref-type="bibr" rid="ref3 ref30">3, 30</xref>
          ]. The Strangler pattern [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ] can be used to
incrementally shift the current legacy solution into a microservice architecture.
        </p>
        <p>
          Another recommendation is to establish efective communication and close collaboration
between development, operations, and business teams to ensure proper alignment between
the software architecture and business needs [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. This can facilitate adaptation to changing
requirements and team skills, as well as refine quality and efectiveness over the transition plan.
        </p>
        <p>
          As [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] conveys, the importance of maintaining high levels of communication between
multidisciplinary teams included in the construction of the latest model is also mentioned.
Additionally, thorough testing is recommended before, during, and after the migration process
to ensure smooth transitions and maintain software quality.
        </p>
        <p>
          The following migration patterns are recommended in [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ]: enabling CI, retrieving the
existing structure, dismantling the legacy system, shifting code interdependencies to service
invocations, presenting service catalog, placing an internal load balancer, implementing circuit
breaker, containerizing modules, clustering implementation with container orchestration, among
others.
        </p>
        <p>
          Lastly, adopting agile development practices and continuous delivery in the migration process
is recommended to facilitate adaptation to changing requirements and enable rapid incorporation
of enhancements and fixes in the application [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. This can improve responsiveness, and flexibility,
and reduce the risks associated with the migration process.
        </p>
      </sec>
      <sec id="sec-4-5">
        <title>4.5. Advantages and disadvantages associated with transitioning from monoliths to microservices regarding scalability, maintainability, along performance (RQ5)</title>
        <p>
          An important advantage is that microservices can improve the scalability of the application
by allowing individual services to scale independently [
          <xref ref-type="bibr" rid="ref19 ref29 ref3">3, 29, 19</xref>
          ]. Like related studies [
          <xref ref-type="bibr" rid="ref29 ref32">29, 32</xref>
          ],
maintainability, as well as scalability, were spotlighted as prime motivators for such transition.
The fact of scaling independently provides an enormous advantage in application performance
and responsiveness, particularly on peaks of consumption. Capabilities such as facilitating
diferentiated accessibility and scale tuning for system segments, leveraging diverse frameworks
avoiding vendor encasement, accelerated service launch, along with boosted codebase legibility
[
          <xref ref-type="bibr" rid="ref31">31</xref>
          ].
        </p>
        <p>
          Another advantage is that microservices can improve the maintainability of the application
by enabling individual services to be engineered, validated, and released separately [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. This
may reduce the time as well as the efort required for modifying the system and enhancing
the all-round software quality. In terms of technical debt [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ] shows that past a comparatively
small timescale, the technical debt is inclined to expand less aggressively versus the monolithic
approach.
        </p>
        <p>
          Regarding fault tolerance [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ] describes that microservices crashes tend not to broadly disrupt
the entire application. Whereas in a monolithic system, a module failure may halt the complete
program.
        </p>
        <p>
          However, there are also disadvantages associated with transitioning away from monolithic
systems to microservices. One negative aspect is that the migration process can be complex and
challenging, requiring careful planning and execution [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Challenges including system
partitioning into discrete services alongside tracking and supervising those services figure among
other considerations turn microservices adoption non-trivial [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ]. Additionally, managing
dependencies between services can be dificult and increase the complexity of the architecture
[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
        <p>
          Regarding efort estimation: sizing up the coding cycle of microservices is viewed as more
imprecise compared to estimates for monolithic solutions [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ].
        </p>
        <p>
          Another disadvantage is that microservices can increase the cost and complexity of operations,
as each service requires individualized tracking, administration, and scaling [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Additional
expertise and capabilities may be required from the operations team and increase the total
cost of ownership of the application. The study made in [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ] concludes that despite migration
presenting natural complications, said complications seem simpler to resolve over monolith
system dificulties.
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Discussion</title>
      <p>Based on the results, approaches, and tactics for transitioning from monoliths to microservices
are compared, highlighting advantages and disadvantages. Consequently, and given their
importance, research implications are presented. In the latter subsections, feedback is given
about limitations in the reviewed studies along with future research areas.</p>
      <sec id="sec-5-1">
        <title>5.1. Approaches and Techniques</title>
        <p>
          The review of literature displays many approaches for shifting from monoliths into microservices,
each one of them having its pros and cons [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Responsibility-driven decomposition ofers
greater modularity, although it can generate complex interdependencies [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. On the other hand,
domain-driven decomposition aligns the architecture with business needs but can be complex
in unclear or changing domains [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Hybrid approaches, such as mixing functionality and
domain-based breakdown, hand over greater flexibility, however, they need more coordination
[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. The selection of several migration patterns is described in [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ].
        </p>
      </sec>
      <sec id="sec-5-2">
        <title>5.2. Research Implications</title>
        <p>
          From the theoretical point of view, this research tries to give a structured perspective about the
state-of-the-art phase of investigation along with practices in this field [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. Is the expectation of
this work that some of the findings discussed can open future lines of investigation. Identifying
areas of consensus as well as discrepancy among the studies and suggesting opportunities for
improvement in the microservices migration phase [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
        <p>
          Conversely, from the practical side, identified approaches can serve as a guide for engineers
and software architects in the process of handling a successful migration, by helping them to
tackle the challenges and maximizing the advantages associated with the microservice model
[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
        </p>
      </sec>
      <sec id="sec-5-3">
        <title>5.3. Reviewed Studies Limitations</title>
        <p>
          Limitations around the reviewed studies must be taken into consideration while observing the
results. Primarily, they are based on case studies or practical experiences, which limits their
generalizability to other contexts [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Moreover, biases from the authors are possible, and that
can influence the neutrality of the results [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. The absence of strict empirical evidence of the
approaches is another limitation, which makes it challenging to identify which are the truly
best practices and validate the efectiveness of the proposed solutions in other contexts [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
Worth highlighting, most of the current works emphasize technical and architectural aspects,
neglecting organizational and cultural concerns, which are also important for the success of the
migration [
          <xref ref-type="bibr" rid="ref18 ref3">3, 18</xref>
          ].
        </p>
        <p>Future lines of investigation have to consider wide-ranging contexts, to collect rigorous
empirical evidence, as well as to take into account every technical and non-technical requirement
to improve the reliability of the results. All of the above limitations emphasize the eforts that
have to be made to address these gaps.</p>
      </sec>
      <sec id="sec-5-4">
        <title>5.4. Future Research</title>
        <p>
          Future research areas within transitioning from monoliths to microservices are identified.
Upcoming research should consider developing more automated approaches for service
decomposition, taking into consideration diferent criteria [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
        <p>
          Further research could, for instance, investigate the organizational and cultural aspects of
migration, such as communication between teams, and collaboration among the IT department,
operations, and business teams, as a consequence of the new model, design, and architectural
patterns [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Handling these non-technical aspects can enhance the quality and eficiency of
the system migration process.
        </p>
        <p>
          Future lines can dig into the advantages and disadvantages of scaling microservices in the
process of assessing challenges related to orchestration and deployment [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. Another idea for
future lines of investigation, based on the works reviewed, is the efects of applying microservices
in terms of performance, reliability, and security. The impact of cloud computing represents an
emerging trend that warrants exploration in future work. Upcoming works might conduct a
more intensive assessment of exposed approaches, motivators, and impediments to ease shifting
legacy monolithic apps to microservices [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusions</title>
      <p>The approaches identified in the academic literature regarding performing the decomposition
of legacy monolithic systems into microservices are domain-driven, responsibility-driven, and
hybrid approaches. Some examples are found where a detailed exploration of the existing system
can help establish clear boundaries between the resulting microservices after the migration
process.</p>
      <p>Common troubles and issues in the migration process include dependency management,
adaptation to new models and architectural patterns, and reorganization of components as well
as code refactoring.</p>
      <p>Antipatterns are also discussed, such as excessive service decomposition and lack of
consideration for non-functional requirements of the migration. Best practices and suggestions are
introduced to address challenges and consolidate the benefits associated with this transition,
including the adoption of an incremental approach, the establishment of efective communication
among teams, the embrace of agile development practices along the use of CI/CD techniques.</p>
      <p>The domain and responsibility-driven approaches align with established decomposition
strategies discussed in migration frameworks such as Strangler and microservice refactoring
patterns. The identified challenges also mirror issues reported in empirical studies on technical
debt and dependency management. However, the literature points to several emerging directions
that could complement these findings, including expanded research on organizational change
management during migration, and the need for standardized metrics to evaluate migration
success across context.</p>
      <p>The process of migration into microservices seems promising for further review, with the
necessity of finding better approaches to address its challenges, all of this to increase the
benefits associated with the adoption of microservice architecture. Yet, it remains essential to
acknowledge the nonexistence of silver bullet solutions, as each system and context may require
specific strategies together with techniques to manage its challenges. In any case, industry and
academia should continue investigating as well as sharing experiences to improve knowledge
and practice in this domain.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Newman</surname>
          </string-name>
          , Building microservices,
          <string-name>
            <surname>" O'Reilly Media</surname>
          </string-name>
          ,
          <source>Inc."</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gysel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Kölbener</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Giersche</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Zimmermann</surname>
          </string-name>
          ,
          <article-title>Service cutter: A systematic approach to service decomposition</article-title>
          ,
          <source>in: Service-Oriented and Cloud Computing: 5th IFIP WG 2</source>
          .14 European Conference,
          <string-name>
            <surname>ESOCC</surname>
          </string-name>
          <year>2016</year>
          , Vienna, Austria, September 5-
          <issue>7</issue>
          ,
          <year>2016</year>
          , Proceedings 5, Springer,
          <year>2016</year>
          , pp.
          <fpage>185</fpage>
          -
          <lpage>200</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <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>I. Malavolta</surname>
          </string-name>
          ,
          <article-title>Migrating towards microservice architectures: an industrial survey</article-title>
          ,
          <source>in: 2018 IEEE international conference on software architecture (ICSA)</source>
          , IEEE,
          <year>2018</year>
          , pp.
          <fpage>29</fpage>
          -
          <lpage>2909</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <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>
          ,
          <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, and disadvantages</article-title>
          ,
          <source>in: Proceedings of the XP2017 Scientific Workshops</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <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,
            <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="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>F.</given-names>
            <surname>Rademacher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sorgalla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Sachweh</surname>
          </string-name>
          ,
          <article-title>Challenges of domain-driven microservice design: A model-driven perspective</article-title>
          ,
          <source>IEEE Software 35</source>
          (
          <year>2018</year>
          )
          <fpage>36</fpage>
          -
          <lpage>43</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <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>Architectural patterns for microservices: a systematic mapping study</article-title>
          ,
          <source>in: CLOSER 2018: Proceedings of the 8th International Conference on Cloud Computing and Services Science; Funchal</source>
          , Madeira, Portugal,
          <fpage>19</fpage>
          -21
          <source>March</source>
          <year>2018</year>
          , SciTePress,
          <year>2018</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <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>
          ,
          <string-name>
            <surname>W.-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>
          <volume>146</volume>
          (
          <year>2018</year>
          )
          <fpage>215</fpage>
          -
          <lpage>232</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>C.</given-names>
            <surname>Pahl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Jamshidi</surname>
          </string-name>
          ,
          <article-title>Microservices: A systematic mapping study</article-title>
          .,
          <source>CLOSER (1)</source>
          (
          <year>2016</year>
          )
          <fpage>137</fpage>
          -
          <lpage>146</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <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>I. Malavolta</surname>
          </string-name>
          ,
          <article-title>Architecting with microservices: A systematic mapping study</article-title>
          ,
          <source>Journal of Systems and Software</source>
          <volume>150</volume>
          (
          <year>2019</year>
          )
          <fpage>77</fpage>
          -
          <lpage>97</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>V.</given-names>
            <surname>Velepucha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Flores</surname>
          </string-name>
          ,
          <article-title>Monoliths to microservices-migration problems and challenges: A sms</article-title>
          , in: 2021
          <source>Second International Conference on Information Systems and Software Technologies (ICI2ST)</source>
          , IEEE,
          <year>2021</year>
          , pp.
          <fpage>135</fpage>
          -
          <lpage>142</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>D.</given-names>
            <surname>Sanchez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Mendez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Florez</surname>
          </string-name>
          ,
          <article-title>An approach of a framework to create web applications</article-title>
          ,
          <source>in: Computational Science and Its Applications-ICCSA</source>
          <year>2018</year>
          : 18th International Conference, Melbourne,
          <string-name>
            <surname>VIC</surname>
          </string-name>
          , Australia,
          <source>July 2-5</source>
          ,
          <year>2018</year>
          , Proceedings,
          <source>Part IV 18</source>
          , Springer,
          <year>2018</year>
          , pp.
          <fpage>341</fpage>
          -
          <lpage>352</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <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>
          <string-name>
            <surname>O'Reilly Media</surname>
          </string-name>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D.</given-names>
            <surname>Sanchez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Rojas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Florez</surname>
          </string-name>
          ,
          <article-title>Towards a clean architecture for android apps using model transformations</article-title>
          ,
          <source>IAENG International Journal of Computer Science</source>
          <volume>49</volume>
          (
          <year>2022</year>
          )
          <fpage>270</fpage>
          -
          <lpage>278</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>V.</given-names>
            <surname>Velepucha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Flores</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Torres</surname>
          </string-name>
          ,
          <article-title>Migration of monolithic applications towards microservices under the vision of the information hiding principle: a systematic mapping study</article-title>
          ,
          <source>Advances in Emerging Trends and Technologies:</source>
          Volume
          <volume>1</volume>
          (
          <year>2020</year>
          )
          <fpage>90</fpage>
          -
          <lpage>100</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kazanavičius</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Mažeika</surname>
          </string-name>
          ,
          <article-title>Migrating legacy software to microservices architecture</article-title>
          ,
          <source>in: 2019 Open Conference of Electrical, Electronic and Information Sciences (eStream)</source>
          , IEEE,
          <year>2019</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>P.</given-names>
            <surname>Gómez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. E.</given-names>
            <surname>Sánchez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Florez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Villalobos</surname>
          </string-name>
          ,
          <article-title>An approach to the co-creation of models and metamodels in enterprise architecture projects</article-title>
          .,
          <source>Journal of Object Technology</source>
          <volume>13</volume>
          (
          <year>2014</year>
          )
          <fpage>2</fpage>
          -
          <lpage>1</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>L. De Lauretis</surname>
          </string-name>
          ,
          <article-title>From monolithic architecture to microservices architecture</article-title>
          ,
          <source>in: 2019 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW)</source>
          , IEEE,
          <year>2019</year>
          , pp.
          <fpage>93</fpage>
          -
          <lpage>96</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M.</given-names>
            <surname>Mazzara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Dragoni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bucchiarone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Giaretta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. T.</given-names>
            <surname>Larsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Dustdar</surname>
          </string-name>
          ,
          <article-title>Microservices: Migration of a mission critical system</article-title>
          ,
          <source>IEEE Transactions on Services Computing</source>
          <volume>14</volume>
          (
          <year>2018</year>
          )
          <fpage>1464</fpage>
          -
          <lpage>1477</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>H.</given-names>
            <surname>Ricaurte</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Florez</surname>
          </string-name>
          ,
          <article-title>Architectural approach for google services integration</article-title>
          , in: Applied Informatics: Fourth International Conference, ICAI 2021,
          <string-name>
            <given-names>Buenos</given-names>
            <surname>Aires</surname>
          </string-name>
          , Argentina,
          <source>October 28-30</source>
          ,
          <year>2021</year>
          , Proceedings 4, Springer,
          <year>2021</year>
          , pp.
          <fpage>483</fpage>
          -
          <lpage>496</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>O. B.</given-names>
            <surname>Benderius</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L.</given-names>
            <surname>Lotz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. B.</given-names>
            <surname>Berger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. V.</given-names>
            <surname>Vogelsang</surname>
          </string-name>
          ,
          <article-title>Microservice architectures for advanced driver assistance systems: A case-</article-title>
          <string-name>
            <surname>study</surname>
          </string-name>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>M.</given-names>
            <surname>Guerrero-Calvache</surname>
          </string-name>
          , G. Hernández,
          <article-title>Team productivity in agile software development: A systematic mapping study</article-title>
          ,
          <source>in: International Conference on Applied Informatics</source>
          , Springer,
          <year>2022</year>
          , pp.
          <fpage>455</fpage>
          -
          <lpage>471</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>K.</given-names>
            <surname>Petersen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Feldt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Mujtaba</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mattsson</surname>
          </string-name>
          ,
          <article-title>Systematic mapping studies in software engineering</article-title>
          ,
          <source>in: 12th International Conference on Evaluation and Assessment in Software Engineering (EASE) 12</source>
          ,
          <year>2008</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>B.</given-names>
            <surname>Kitchenham</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Charters</surname>
          </string-name>
          , et al.,
          <article-title>Guidelines for performing systematic literature reviews in software engineering</article-title>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>M.</given-names>
            <surname>Daoud</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>El Mezouari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Faci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Benslimane</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Maamar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>El Fazziki</surname>
          </string-name>
          ,
          <article-title>Towards an automatic identification of microservices from business processes</article-title>
          , in: 2020 IEEE 29th International Conference on Enabling Technologies:
          <article-title>Infrastructure for Collaborative Enterprises (WETICE)</article-title>
          , IEEE,
          <year>2020</year>
          , pp.
          <fpage>42</fpage>
          -
          <lpage>47</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Henry</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Ridene</surname>
          </string-name>
          , Migrating to microservices, Microservices: Science and
          <string-name>
            <surname>Engineering</surname>
          </string-name>
          (
          <year>2020</year>
          )
          <fpage>45</fpage>
          -
          <lpage>72</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <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>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zimmermann</surname>
          </string-name>
          ,
          <article-title>Microservices migration in industry: intentions, strategies, and challenges</article-title>
          ,
          <source>in: 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)</source>
          , IEEE,
          <year>2019</year>
          , pp.
          <fpage>481</fpage>
          -
          <lpage>490</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>A.</given-names>
            <surname>Furda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Fidge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Zimmermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Kelly</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Barros</surname>
          </string-name>
          ,
          <article-title>Migrating enterprise legacy source code to microservices: on multitenancy, statefulness, and data consistency</article-title>
          ,
          <source>Ieee Software</source>
          <volume>35</volume>
          (
          <year>2017</year>
          )
          <fpage>63</fpage>
          -
          <lpage>72</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <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>
          , Processes, motivations, and
          <article-title>issues for migrating to microservices architectures: An empirical investigation</article-title>
          ,
          <source>IEEE Cloud Computing</source>
          <volume>4</volume>
          (
          <year>2017</year>
          )
          <fpage>22</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>H.</given-names>
            <surname>Florez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Sánchez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Villalobos</surname>
          </string-name>
          , G. Vega,
          <article-title>Coevolution assistance for enterprise architecture models</article-title>
          ,
          <source>in: Proceedings of the 6th International Workshop on Models and Evolution</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>27</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>A.</given-names>
            <surname>Balalaie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Heydarnoori</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Jamshidi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Tamburri</surname>
          </string-name>
          , T. Lynn, Microservices migration patterns,
          <source>Software: Practice and Experience</source>
          <volume>48</volume>
          (
          <year>2018</year>
          )
          <fpage>2019</fpage>
          -
          <lpage>2042</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>H.</given-names>
            <surname>Knoche</surname>
          </string-name>
          , W. Hasselbring,
          <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>
          .
          <volume>1</volume>
          (
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <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>
          ,
          <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>
          <volume>169</volume>
          (
          <year>2020</year>
          )
          <fpage>110710</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>M.</given-names>
            <surname>Kalske</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Mäkitalo</surname>
          </string-name>
          , T. Mikkonen,
          <article-title>Challenges when moving from monolith to microservice architecture</article-title>
          , in: Current Trends in Web Engineering:
          <article-title>ICWE 2017 International Workshops, Liquid Multi-Device Software and EnWoT, practi-O-web</article-title>
          , NLPIT, SoWeMine, Rome, Italy, June 5-8,
          <year>2017</year>
          ,
          <source>Revised Selected Papers 17</source>
          , Springer,
          <year>2018</year>
          , pp.
          <fpage>32</fpage>
          -
          <lpage>47</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>