<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "https://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" article-type="review-article" dtd-version="1.2" xml:lang="en">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">IJCSER</journal-id>
<journal-title-group><journal-title>International Journal of Computer Science Engineering and Research</journal-title></journal-title-group>
<publisher><publisher-name>Thomson &amp; Ryberg Publications</publisher-name></publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.62715/ijcser.2026.v1.i1.pp13-18</article-id>
<article-id pub-id-type="publisher-id">c321211bfb</article-id>
<article-categories><subj-group subj-group-type="heading"><subject>Review Article</subject></subj-group></article-categories>
<title-group><article-title>Migrating a University Registration Platform to a Microservice Architecture: A Review of Published Lessons and Migration Patterns</article-title></title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes"><name><surname>Iyer</surname><given-names>Manon</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1">*</xref></contrib>
<contrib contrib-type="author"><name><surname>Haddad</surname><given-names>Hala</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib>
<contrib contrib-type="author"><name><surname>Ngo</surname><given-names>Bongani</given-names></name><xref ref-type="aff" rid="aff3"><sup>3</sup></xref></contrib>
<aff id="aff1"><label>1</label>Department of Computer Science, Tamiraparani Graduate Institute of Computer Science, Slovakia</aff>
<aff id="aff2"><label>2</label>Department of Computer Science, Han River Research Institute of Computer Science, Peru</aff>
<aff id="aff3"><label>3</label>Department of Computer Science, Tagus University Centre for Computer Science, Philippines</aff>
</contrib-group>
<author-notes><corresp id="cor1">* Correspondence: <email>manon.iyer@tamiraparani.edu</email></corresp></author-notes>
<pub-date pub-type="epub" iso-8601-date="2026-05-27"><day>27</day><month>05</month><year>2026</year></pub-date>
<volume>1</volume>
<issue>1</issue>
<fpage>13</fpage>
<lpage>18</lpage>
<history>
<date date-type="received" iso-8601-date="2026-02-08"><day>08</day><month>02</month><year>2026</year></date>
<date date-type="accepted" iso-8601-date="2026-03-29"><day>29</day><month>03</month><year>2026</year></date>
</history>
<permissions><copyright-statement>© 2026 The Author(s)</copyright-statement><copyright-year>2026</copyright-year><license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/"><license-p>This is an open access article distributed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).</license-p></license></permissions>
<self-uri xlink:href="https://trpub.org/article.php?id=c321211bfb"/>
<abstract><p>University registration platforms are old, monolithic and subject to a load pattern that few other systems share: almost idle for most of the term and overwhelmed in the hours when enrolment opens. Microservices are frequently proposed as the remedy. This narrative review examines what the published literature on migrating monoliths to microservices has to say to an institution considering that step. Accounts devoted to university systems are few, so the review draws on the general body of migration research, including practitioner surveys, experience reports from other sectors, grey literature reviews and the standard books on the architecture, and reads it against the particular demands of course registration. It covers the reasons organisations give for migrating and how well they apply, the decomposition of the registration domain into services, incremental migration by the strangler fig approach, the handling of data and consistency where a limited number of seats must never be oversold, the operational capabilities that have to be in place first, and legal duties concerning student records. The lessons that recur across sources are collected in a table. The review concludes that the literature supports a cautious, incremental migration for those institutions with a clear scaling or delivery problem, and that evidence from higher education itself remains thin.</p></abstract>
<kwd-group kwd-group-type="author">
<kwd>Microservices</kwd>
<kwd>Legacy system migration</kwd>
<kwd>Student information systems</kwd>
<kwd>Course registration</kwd>
<kwd>Strangler fig pattern</kwd>
<kwd>Software architecture</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="sec1"><title>1. Introduction</title>
<p>A registration platform lets students search the course catalogue, checks that they may take what they choose, and records their enrolment against a limited number of places. In many universities it is a module of a student information system that also holds admissions, grades, fees and timetables, built around one relational database and extended over many years by local customisation. The architecture is the classic monolith: one deployable unit, one schema, one release cycle.</p>
<p>Microservices divide such a system into small services that are deployed independently, own their data and communicate over the network (Lewis and Fowler, 2014; Newman, 2015). The style grew out of service-oriented architecture and the operating practices of large web companies (Dragoni et al., 2017), and it promises exactly what registration seems to need: the ability to scale the part under pressure without scaling everything, and to change one function without redeploying the rest.</p>
<p>Whether the promise holds for a university is less obvious. The sector has small development teams, fixed academic calendars and strict duties towards student data. This review asks what the published literature on monolith-to-microservice migration teaches, and how far those lessons carry over to a registration platform.</p>
</sec>
<sec id="sec2"><title>2. Scope and Approach</title>
<p>The article is a narrative review. It considers peer-reviewed studies of microservice migration, notably interview and survey research with practitioners, published experience reports, a systematic review of grey literature, and the books that practitioners themselves cite. It does not report a migration carried out by the author and describes no particular institution. Published accounts that deal specifically with university registration are scarce, and that scarcity is itself a finding. The general literature is therefore read with the registration domain in mind, and the reasoning that connects the two is made explicit so that readers can judge it.</p>
</sec>
<sec id="sec3"><title>3. What Makes Registration Distinctive</title>
<p>Three properties of the domain shape any architectural decision. The first is the load profile. Demand is concentrated in short windows at the start of each enrolment period, when a large part of the student body arrives at the same minute and competes for the same popular sections. The second is a hard invariant: a section has a capacity, and the number of students enrolled must not exceed it. Prerequisites, timetable clashes, credit limits and holds on a student&#x27;s account are further rules that must be evaluated at the moment of enrolment, and they draw on data owned by other parts of the system.</p>
<p>The third property is regulatory. Student records are protected by law, in the United States by the Family Educational Rights and Privacy Act (FERPA, 1974) and in the European Union by the General Data Protection Regulation (European Union, 2016). An architecture that copies student data into many service databases multiplies the places where access must be controlled, audited and, where the law requires, erased or corrected.</p>
</sec>
<sec id="sec4"><title>4. Reasons for Migrating and How Well They Apply</title>
<p>Practitioners interviewed by Taibi et al. (2017) named maintainability and scalability as their main reasons for moving to microservices, and admitted that some migrations were undertaken because others were doing the same. The industrial survey of Di Francesco et al. (2018) found a similar mix of technical and organisational motives. The grey literature review by Soldani et al. (2018) sets the reported gains, among them independent deployment and fault isolation, against pains that include harder testing, more demanding monitoring and greater consumption of infrastructure.</p>
<p>For registration, the scalability argument is real but narrow. The load peak falls on a few operations, catalogue search and seat allocation, and those could in principle be scaled by other means. The maintainability argument depends on team structure. Conway (1968) observed that a system&#x27;s structure mirrors the communication structure of the organisation that builds it, and microservices pay off when several teams need to release independently. A university with one small team gains little from independent deployment and inherits all of the operational cost. Fowler (2015) advises starting from a well-structured monolith for this reason.</p>
</sec>
<sec id="sec5"><title>5. Decomposing the Registration Domain</title>
<p>The step that practitioners report as hardest is deciding where the service boundaries lie (Di Francesco et al., 2018). The principle is older than the style. Parnas (1972) argued that modules should hide design decisions likely to change, and domain-driven design supplies the working tool: the bounded context, a part of the domain within which a model and its vocabulary are consistent (Evans, 2003). In registration, the catalogue, the timetable, student eligibility, enrolment and waitlists, and fees are natural candidates. The word &quot;course&quot; means different things in each, which is the usual sign of a context boundary.</p>
<p>Automated support exists. Mazlami et al. (2017) derive candidate services by clustering classes according to how they change together in version history, and the classification by Fritzsch et al. (2019) groups refactoring approaches by the inputs they need, from static code analysis to workload data. Such techniques assume a codebase with meaningful structure and history. Much of the logic of an older student system sits in database procedures and vendor customisations, where these tools reach poorly, so domain analysis with registrar staff is likely to do more of the work.</p>
</sec>
<sec id="sec6"><title>6. Migrating Incrementally</title>
<p>The literature is close to unanimous that migration should be incremental. The strangler fig approach places a routing layer in front of the old system and moves functions behind it one at a time until nothing is left to route to the monolith (Fowler, 2004). Newman (2019) catalogues the supporting patterns, among them branch by abstraction, parallel running of old and new implementations, and change data capture to keep two stores in step. The experience report of Balalaie et al. (2016) describes a migration organised as a sequence of such steps and stresses that the delivery pipeline was built before services were split out. Knoche and Hasselbring (2018) report a modernisation that first defined service facades over the legacy system, moved clients onto them, and only then replaced the internals.</p>
<p>The academic calendar gives this advice particular force. Enrolment periods are fixed and public, so a failed cut-over cannot be postponed. Each increment has to be released and proven in a quiet part of the term, and the order of extraction should follow risk. Figure 1 sets out a plausible sequence, pairing each stage with the hazard that the domain makes most likely. Read-mostly functions such as catalogue search come early because an error there is visible and recoverable. Seat allocation comes late, once the team has operated simpler services through at least one peak.</p>
<fig id="fig1"><label>Figure 1</label><caption><p>Stages of an incremental migration (top) and the hazard most characteristic of registration systems at each stage (bottom)</p></caption><graphic xlink:href="IJCSER_V1I1_2026_03_Figure1.png" mimetype="image" mime-subtype="png"/></fig>
</sec>
<sec id="sec7"><title>7. Data Ownership and Consistency</title>
<p>Splitting the database is the part of migration that reports describe as most painful (Taibi et al., 2017). The pattern literature recommends a database per service, with other services obtaining data through interfaces or published events, not shared tables (Richardson, 2018). Once data is divided, an operation that used to be one transaction spans several services. The usual answer is the saga, a sequence of local transactions each paired with a compensating action that undoes it, an idea introduced for long-lived database transactions by Garcia-Molina and Salem (1987).</p>
<p>Enrolment tests this answer severely. Under a network partition a distributed system must give up either consistency or availability (Brewer, 2012), and for seat counts consistency cannot be given up. The practical consequence drawn in the design literature is to keep the invariant inside one service: the component that owns a section&#x27;s capacity should also own the enrolments counted against it, so that the check and the update remain a single local transaction (Kleppmann, 2017). Eligibility rules that depend on other contexts can be evaluated against replicated data, provided the staleness is bounded and understood. Prerequisites change slowly. A financial hold placed a minute ago may not.</p>
</sec>
<sec id="sec8"><title>8. Operational Prerequisites</title>
<p>A microservice system has many more moving parts than the monolith it replaces. Automated build, test and deployment are therefore preconditions, not refinements (Humble and Farley, 2010). So are centralised logging, tracing across service calls and monitoring. Calls that were in-process become remote and can fail or stall, and Nygard (2018) describes the timeouts, circuit breakers and bulkheads that stop one slow dependency from exhausting its callers. Fan-out makes matters worse at the peak: Dean and Barroso (2013) showed that when a request depends on many components, the slow tail of each one comes to dominate overall response time. An enrolment request that consults five services is exposed to five tails at precisely the moment each is busiest.</p>
<p>Testing changes character as well. A monolith can be exercised end to end in one process, whereas a set of services needs contract tests at each interface and rehearsals of the whole system under load. For registration the rehearsal that matters is the opening of enrolment, and it can be approximated by replaying recorded request patterns from an earlier term against a staging environment before each release. Running the old and new implementations side by side on the same requests and comparing their answers, the parallel run described by Newman (2019), is well suited to eligibility checks, where a silent difference in a rule would otherwise surface only as a complaint from a student.</p>
<p>Table 1 gathers the lessons that recur across the sources reviewed and states what each implies for a registration platform.</p>
<table-wrap id="tbl1"><label>Table 1</label><caption><p>Recurrent lessons in the microservice migration literature and their implication for a registration platform</p></caption><table frame="hsides" rules="groups"><thead><tr><th>Lesson</th><th>Sources</th><th>Implication for registration</th></tr></thead><tbody><tr><td>Migrate in small steps behind a facade</td><td>Fowler, 2004; Newman, 2019</td><td>Release each step in a quiet part of the term</td></tr><tr><td>Build the delivery pipeline first</td><td>Balalaie et al., 2016</td><td>Automate deployment and rollback before the first extraction</td></tr><tr><td>Boundaries follow the domain</td><td>Evans, 2003</td><td>Model catalogue, eligibility, enrolment and fees as separate contexts</td></tr><tr><td>Splitting data is the hardest part</td><td>Taibi et al., 2017</td><td>Keep section capacity and enrolments in one service</td></tr><tr><td>Expect remote calls to fail</td><td>Nygard, 2018</td><td>Set timeouts and degrade search before enrolment</td></tr><tr><td>Architecture mirrors organisation</td><td>Conway, 1968</td><td>A single small team may be better served by a modular monolith</td></tr><tr><td>Operational cost rises</td><td>Soldani et al., 2018</td><td>Budget for monitoring, tracing and on-call cover at peak</td></tr></tbody></table></table-wrap>
</sec>
<sec id="sec9"><title>9. Gaps and Future Work</title>
<p>The clearest gap is evidence from the sector. The studies cited here draw largely on commercial software companies and enterprise information systems. Peer-reviewed accounts of registration or student-record migrations, with enough detail on load, team size and outcome to support comparison, would allow the reasoning of this review to be tested. A second gap concerns alternatives. The literature compares microservices with an unreformed monolith far more often than with a modular monolith whose peak-load path has been tuned or scaled separately, which may be the realistic competitor for a small institution.</p>
<p>Third, most universities run vendor systems. Migration then means surrounding a product with services through its interfaces, not decomposing source code, and that situation is little studied. Finally, the effect of data distribution on compliance with records legislation is asserted more often than it is examined, and would repay joint work by software engineers and data protection specialists.</p>
</sec>
<sec id="sec10"><title>10. Conclusion</title>
<p>The migration literature does not say that a university should move its registration platform to microservices. It says what such a move costs and how to reduce the risk: migrate behind a facade in small steps, establish automated delivery and observability first, draw boundaries from the domain, and keep the seat-allocation invariant within one service. It also says that the benefits depend on having several teams and a real scaling problem. Institutions that meet those conditions will find well-tried patterns to follow. Those that do not may be better served by restructuring the monolith they have, and the sector as a whole would benefit from publishing what it learns either way.</p>
</sec>
<sec id="sec11"><title>Conflict of interest</title>
<p>To be declared by the author(s) before publication.</p>
</sec>
<sec id="sec12"><title>Funding</title>
<p>To be declared by the author(s) before publication.</p>
</sec>
</body>
<back>
<ref-list><title>References</title>
<ref id="ref1"><label>1</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Balalaie, A., Heydarnoori, A. and Jamshidi, P.</string-name></person-group> (<year>2016</year>). <article-title>Microservices architecture enables DevOps: Migration to a cloud-native architecture</article-title>. <source>IEEE Software</source>, <volume>33(3)</volume>, <fpage>42-52</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/MS.2016.64">https://doi.org/10.1109/MS.2016.64</ext-link></mixed-citation></ref>
<ref id="ref2"><label>2</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Brewer, E.</string-name></person-group> (<year>2012</year>). <article-title>CAP twelve years later: How the &quot;rules&quot; have changed</article-title>. <source>Computer</source>, <volume>45(2)</volume>, <fpage>23-29</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/MC.2012.37">https://doi.org/10.1109/MC.2012.37</ext-link></mixed-citation></ref>
<ref id="ref3"><label>3</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Conway, M.E.</string-name></person-group> (<year>1968</year>). <article-title>How do committees invent?</article-title>. <source>Datamation</source>, <volume>14(4)</volume>, <fpage>28-31</fpage></mixed-citation></ref>
<ref id="ref4"><label>4</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Dean, J. and Barroso, L.A.</string-name></person-group> (<year>2013</year>). <article-title>The tail at scale</article-title>. <source>Communications of the ACM</source>, <volume>56(2)</volume>, <fpage>74-80</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/2408776.2408794">https://doi.org/10.1145/2408776.2408794</ext-link></mixed-citation></ref>
<ref id="ref5"><label>5</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Di Francesco, P., Lago, P. and Malavolta, I.</string-name></person-group> (<year>2018</year>). <article-title>Migrating towards microservice architectures: An industrial survey</article-title>. <source>Proceedings of the 2018 IEEE International Conference on Software Architecture (ICSA)</source>, <fpage>29-38</fpage></mixed-citation></ref>
<ref id="ref6"><label>6</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Dragoni, N., Giallorenzo, S., Lluch Lafuente, A., Mazzara, M., Montesi, F., Mustafin, R. and Safina, L.</string-name></person-group> (<year>2017</year>). <article-title>Microservices: Yesterday, today, and tomorrow</article-title>. <source>In: Mazzara, M. and Meyer, B. (eds), Present and Ulterior Software Engineering. Springer, Cham, 195-216</source> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/978-3-319-67425-4_12">https://doi.org/10.1007/978-3-319-67425-4_12</ext-link></mixed-citation></ref>
<ref id="ref7"><label>7</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>European Union</string-name></person-group> (<year>2016</year>). <article-title>Regulation (EU) 2016/679 of the European Parliament and of the Council (General Data Protection Regulation)</article-title>. <source>Official Journal of the European Union, L 119: 1-88</source></mixed-citation></ref>
<ref id="ref8"><label>8</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Evans, E.</string-name></person-group> (<year>2003</year>). <article-title>Domain-Driven Design: Tackling Complexity in the Heart of Software</article-title>. <source>Addison-Wesley, Boston</source></mixed-citation></ref>
<ref id="ref9"><label>9</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>FERPA</string-name></person-group> (<year>1974</year>). <article-title>Family Educational Rights and Privacy Act of 1974</article-title>. <source>20 U.S.C. § 1232g; 34 CFR Part 99. United States</source></mixed-citation></ref>
<ref id="ref10"><label>10</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Fowler, M.</string-name></person-group> (<year>2004</year>). <article-title>StranglerFigApplication. martinfowler.com (online article)</article-title>. </mixed-citation></ref>
<ref id="ref11"><label>11</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Fowler, M.</string-name></person-group> (<year>2015</year>). <article-title>MonolithFirst. martinfowler.com (online article)</article-title>. </mixed-citation></ref>
<ref id="ref12"><label>12</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Fritzsch, J., Bogner, J., Zimmermann, A. and Wagner, S.</string-name></person-group> (<year>2019</year>). <article-title>From monolith to microservices: A classification of refactoring approaches</article-title>. <source>In: Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment (DEVOPS 2018). Lecture Notes in Com</source></mixed-citation></ref>
<ref id="ref13"><label>13</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Garcia-Molina, H. and Salem, K.</string-name></person-group> (<year>1987</year>). <article-title>Sagas</article-title>. <source>Proceedings of the 1987 ACM SIGMOD International Conference on Management of Data</source>, <fpage>249-259</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/38713.38742">https://doi.org/10.1145/38713.38742</ext-link></mixed-citation></ref>
<ref id="ref14"><label>14</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Humble, J. and Farley, D.</string-name></person-group> (<year>2010</year>). <article-title>Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation</article-title>. <source>Addison-Wesley, Upper Saddle River, NJ</source></mixed-citation></ref>
<ref id="ref15"><label>15</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Kleppmann, M.</string-name></person-group> (<year>2017</year>). <article-title>Designing Data-Intensive Applications</article-title>. <source>O&#x27;Reilly Media, Sebastopol, CA</source></mixed-citation></ref>
<ref id="ref16"><label>16</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Knoche, H. and Hasselbring, W.</string-name></person-group> (<year>2018</year>). <article-title>Using microservices for legacy software modernization</article-title>. <source>IEEE Software</source>, <volume>35(3)</volume>, <fpage>44-49</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/MS.2018.2141035">https://doi.org/10.1109/MS.2018.2141035</ext-link></mixed-citation></ref>
<ref id="ref17"><label>17</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Lewis, J. and Fowler, M.</string-name></person-group> (<year>2014</year>). <article-title>Microservices: A definition of this new architectural term. martinfowler.com (online article)</article-title>. </mixed-citation></ref>
<ref id="ref18"><label>18</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Mazlami, G., Cito, J. and Leitner, P.</string-name></person-group> (<year>2017</year>). <article-title>Extraction of microservices from monolithic software architectures</article-title>. <source>Proceedings of the 2017 IEEE International Conference on Web Services (ICWS)</source>, <fpage>524-531</fpage></mixed-citation></ref>
<ref id="ref19"><label>19</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Newman, S.</string-name></person-group> (<year>2015</year>). <article-title>Building Microservices: Designing Fine-Grained Systems</article-title>. <source>O&#x27;Reilly Media, Sebastopol, CA</source></mixed-citation></ref>
<ref id="ref20"><label>20</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Newman, S.</string-name></person-group> (<year>2019</year>). <article-title>Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith</article-title>. <source>O&#x27;Reilly Media, Sebastopol, CA</source></mixed-citation></ref>
<ref id="ref21"><label>21</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Nygard, M.T.</string-name></person-group> (<year>2018</year>). <article-title>Release It!</article-title>. <source>Design and Deploy Production-Ready Software, 2nd edition. Pragmatic Bookshelf, Raleigh, NC</source></mixed-citation></ref>
<ref id="ref22"><label>22</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Parnas, D.L.</string-name></person-group> (<year>1972</year>). <article-title>On the criteria to be used in decomposing systems into modules</article-title>. <source>Communications of the ACM</source>, <volume>15(12)</volume>, <fpage>1053-1058</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/361598.361623">https://doi.org/10.1145/361598.361623</ext-link></mixed-citation></ref>
<ref id="ref23"><label>23</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Richardson, C.</string-name></person-group> (<year>2018</year>). <article-title>Microservices Patterns: With Examples in Java</article-title>. <source>Manning, Shelter Island, NY</source></mixed-citation></ref>
<ref id="ref24"><label>24</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Soldani, J., Tamburri, D.A. and Van Den Heuvel, W.-J.</string-name></person-group> (<year>2018</year>). <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>, <fpage>215-232</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/j.jss.2018.09.082">https://doi.org/10.1016/j.jss.2018.09.082</ext-link></mixed-citation></ref>
<ref id="ref25"><label>25</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Taibi, D., Lenarduzzi, V. and Pahl, C.</string-name></person-group> (<year>2017</year>). <article-title>Processes, motivations, and issues for migrating to microservices architectures: An empirical investigation</article-title>. <source>IEEE Cloud Computing</source>, <volume>4(5)</volume>, <fpage>22-32</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/MCC.2017.4250931">https://doi.org/10.1109/MCC.2017.4250931</ext-link></mixed-citation></ref>
</ref-list>
</back>
</article>