Reliable distributed systems: review of modern approaches
Main Article Content
Abstract
Called on to refine service-oriented architecture, a new architectural pattern named microservices emerged in the early two-thousands promising to speed up the delivery of new features. All of this is achieved by allowing many teams to work on separate autonomous parts of an application independently, though steepening the learning curve and introducing infrastructure-related issues. Overtime, while gaining more popularity, the initial meaning, as well as peculiarities of distributed systems development and reason for the use of the pattern, has turned out to be less prominent, instead becoming a sliver bullet for monolithic applications, which irreversibly leads to a tremendous increase in complexity of a system as well as other inherent problems. The absence of a single definition as well as the misleading name of the microservices pattern has all contributed to the development of the notoriously known distributed monolith. In this document, a review was conducted to resurrect the notion of microservices, understand their nature, and how and when the pattern should be applied. This is done by firstly understanding the difference between monolithic and distributed systems including their strengths and weaknesses, and defining the single most important reason for microservices to be used. The main part focuses on reducing the coupling in the system, which is the main obstacle during the development of a reliable and agile distributed system. Firstly, by modeling boundaries following domain teams and architectural needs, we ensure autonomous deployable units are created that provide independence during development, isolation, and reliability. Later by analyzing approaches to sharing data and communication, which are two major forces structuring a distributed system, we secure the previously established boundaries.
Downloads
Article Details

This work is licensed under a Creative Commons Attribution 4.0 International License.
How to Cite
Accepted 2023-05-14
Published 2023-05-17
References
Balalaie, A., Heydarnoori, A., Jamshidi, P., Tamburri, D.A. and Lynn, T., 2018. Microservices migration patterns. Software: Practice and Experience, 48(11), pp.2019–2042. Available from: https://doi.org/10.1002/spe.2608. DOI: https://doi.org/10.1002/spe.2608
Bozan, K., Lyytinen, K. and Rose, G.M., 2020. How to Transition Incrementally to Microservice Architecture. Commun. ACM, 64(1), p.79–85. Available from: https://doi.org/10.1145/3378064. DOI: https://doi.org/10.1145/3378064
Bucchiarone, A., Dragoni, N., Dustdar, S., Larsen, S.T. and Mazzara, M., 2018. From Monolithic to Microservices: An Experience Report from the Banking Domain. IEEE Software, 35(3), pp.50–55. Available from: https://doi.org/10.1109/MS.2018.2141026. DOI: https://doi.org/10.1109/MS.2018.2141026
Communication in a microservice architecture, 2022. Available from: https://learn.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/communication-in-microservice-architecture.
Conway, M.E., 1968. How do committees invent. 14(5), pp.28–31. Available from: https://www.melconway.com/Home/pdf/committees.pdf.
Evans, E., 2003. Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley Professional. Available from: https://sd.blackball.lv/library/domain-driven_design_-_tackling_complexity_in_the_heart_of_software.pdf.
Francesco, P.D., Malavolta, I. and Lago, P., 2017. Research on Architecting Microservices: Trends, Focus, and Potential for Industrial Adoption. 2017 IEEE International Conference on Software Architecture (ICSA). pp.21–30. Available from: https://doi.org/10.1109/ICSA.2017.24. DOI: https://doi.org/10.1109/ICSA.2017.24
Gilbert, S. and Lynch, N., 2002. Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services. SIGACT News, 33(2), p.51–59. Available from: https://doi.org/10.1145/564585.564601. DOI: https://doi.org/10.1145/564585.564601
Helland, P., 2016. Life Beyond Distributed Transactions: An Apostate’s Opinion. Queue, 14(5), p.69–98. Available from: https://doi.org/10.1145/3012426.3025012. DOI: https://doi.org/10.1145/3012426.3025012
Kapferer, S. and Zimmermann, O., 2020. Domain-specific Language and Tools for Strategic Domain-driven Design, Context Mapping and Bounded Context Modeling. Proceedings of the 8th International Conference on Model-Driven Engineering and Software Development - MODELSWARD. INSTICC, SciTePress, pp.299–306. Available from: https://doi.org/10.5220/0008910502990306. DOI: https://doi.org/10.5220/0008910502990306
Khononov, V., 2018. Tackling Complexity in Microservices. Available from: https://vladikk.com/2018/02/28/microservices/.
Khononov, V., 2020. Untangling Microservices, or Balancing Complexity in Distributed Systems. Available from: https://vladikk.com/2020/04/09/untangling-microservices/.
Kleppmann, M., 2017. Designing Data-Intensive Applications. O’Reilly Media, Inc. Available from: https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/.
Laigner, R., Kalinowski, M., Diniz, P., Barros, L., Cassino, C., Lemos, M., Arruda, D., Lifschitz, S. and Zhou, Y., 2020. From a Monolithic Big Data System to a Microservices Event-Driven Architecture. 2020 46th Euromicro Conference on Software Engineering and Advanced Applications (SEAA). pp.213–220. Available from: https://doi.org/10.1109/SEAA51224.2020.00045. DOI: https://doi.org/10.1109/SEAA51224.2020.00045
Lin, Q., Chang, P., Chen, G., Ooi, B.C., Tan, K.L. and Wang, Z., 2016. Towards a Non-2PC Transaction Management in Distributed Database Systems. Proceedings of the 2016 International Conference on Management of Data. New York, NY, USA: Association for Computing Machinery, SIGMOD ’16, p.1659–1674. Available from: https://doi.org/10.1145/2882903.2882923. DOI: https://doi.org/10.1145/2882903.2882923
Merson, P. and Yoder, J., 2020. Modeling Microservices with DDD. 2020 IEEE International Conference on Software Architecture Companion (ICSA-C). pp.7–8. Available from: https://doi.org/10.1109/ICSA-C50368.2020.00010. DOI: https://doi.org/10.1109/ICSA-C50368.2020.00010
Müller, M., 2016. Enabling retroactive computing through event sourcing. Universität Ulm. Available from: https://doi.org/10.18725/OPARU-4111.
Newman, S., 2021. Building Microservices. 2nd ed. O’Reilly Media, Inc. Available from: https://www.oreilly.com/library/view/building-microservices/9781491950340/.
Pritchett, D., 2008. BASE: An Acid Alternative: In Partitioned Databases, Trading Some Consistency for Availability Can Lead to Dramatic Improvements in Scalability. Queue, 6(3), p.48–55. Available from: https://doi.org/10.1145/1394127.1394128. DOI: https://doi.org/10.1145/1394127.1394128
Rotem-Gal-Oz, A., 2008. Fallacies of Distributed Computing Explained. Doctor Dobbs Journal. Available from: https://www.researchgate.net/publication/322500050_Fallacies_of_Distributed_Computing_Explained.
Štefanko, M., Chaloupka, O. and Rossi, B., 2019. The Saga Pattern in a Reactive Microservices Environment. Proceedings of the 14th International Conference on Software Technologies - ICSOFT. INSTICC, SciTePress, pp.483–490. Available from: https://doi.org/10.5220/0007918704830490. DOI: https://doi.org/10.5220/0007918704830490
Stevens, W.P., Myers, G.J. and Constantine, L.L., 1974. Structured Design. IBM Syst. J., 13(2), p.115–139. Available from: https://doi.org/10.1147/sj.132.0115. DOI: https://doi.org/10.1147/sj.132.0115
Surianarayanan, C., Ganapathy, G. and Pethuru, R., 2019. Essentials of Microservices Architecture: Paradigms, Applications, and Techniques. 1st ed. Taylor & Francis. Available from: https://doi.org/10.1201/9780429329920. DOI: https://doi.org/10.1201/9780429329920-1
Vernon, V., 2016. Domain-Driven Design Distilled. Addison-Wesley Professional.
Villamizar, M., Garcés, O., Castro, H., Verano, M., Salamanca, L., Casallas, R. and Gil, S., 2015. Evaluating the monolithic and the microservice architecture pattern to deploy web applications in the cloud. 2015 10th Computing Colombian Conference (10CCC). pp.583–590. Available from: https://doi.org/10.1109/ColumbianCC.2015.7333476. DOI: https://doi.org/10.1109/ColumbianCC.2015.7333476
Yoder, J.W. and Merson, P., 2022. Strangler Patterns. Proceedings of the 27th Conference on Pattern Languages of Programs. USA: The Hillside Group, PLoP ’20, pp.1–25. Available from: https://dl.acm.org/doi/abs/10.5555/3511065.3511076.