Reliable distributed systems: review of modern approaches

Main Article Content

Oleh V. Talaver
https://orcid.org/0000-0002-6752-2175
Tetiana A. Vakaliuk
https://orcid.org/0000-0001-6825-4697

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.


 

Abstract views: 319 / PDF downloads: 127

Downloads

Download data is not yet available.

Article Details

How to Cite
Talaver, O.V. and Vakaliuk, T.A., 2023. Reliable distributed systems: review of modern approaches. Journal of Edge Computing [Online], 2(1), pp.84–101. Available from: https://doi.org/10.55056/jec.586 [Accessed 21 February 2024].
Section
Articles

How to Cite

Talaver, O.V. and Vakaliuk, T.A., 2023. Reliable distributed systems: review of modern approaches. Journal of Edge Computing [Online], 2(1), pp.84–101. Available from: https://doi.org/10.55056/jec.586 [Accessed 21 February 2024].
Received 2022-09-12
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.

Similar Articles

You may also start an advanced similarity search for this article.