Проєктування рівня маршрутизації в мікросервісних архітектурах на платформі Spring
DOI:
https://doi.org/10.30837/ITSSI.2023.25.064Ключові слова:
мікросервісна архітектура; маршрутизація; Spring; Service discovery; API Gateway; Load BalancerАнотація
The subject matter of research is the routing of requests in the microservice architecture. The goal of the article is to develop a target design concept for the level of request routing in the microservice architecture using the Spring technology stack as an example. Tasks: to analyse modern approaches to the structure of microservice architecture; programming of the routing entity and establishment of processes that ensure the routing of requests; programming stacks of Spring technologies that implement routing; design the routing layer of the application on the Spring platform. The following methods are used: analysis and synthesis to study technologies of interaction between services; abstraction and generalization to determine the structure of the microservice architecture, routing level, generalization of technologies that ensure interaction between services; modelling for the purpose of building a model of microservice architecture, highlighting the level of routing and connections with other structural models. The following results were obtained: the structure of the microservice architecture was investigated, in particular the level of routing; the role of design patterns that provide routing is defined: Service discovery, API Gateway, Load Balancer, etc.; the types of interprocess interaction (synchronous, asynchronous, hybrid) were analysed and the advantages and expediency of the application were determined; models of system fault tolerance are presented; a stack of technologies on the Spring platform is defined for the implementation of the routing layer; a model of a multi-level microservice architecture project was developed using the Spring technology stack, which implements the most effective solutions in the context of request routing. Conclusions: it is advisable to consider microservice architecture as a multi-level structure built on functional levels and connections between them; the level of microservices routing should include all processes related to the establishment of interprocess interaction, service detection, load balancing and fault tolerance, and the creation of a single entry point; Spring is a popular microservice architecture development tool platform that provides requirements for implementing request routing; the developed project model is an example of effective solutions for designing a multi-level architecture using the Spring technology stack in the context of request routing.Завантаження
Посилання
Список літератури
Abdelfattah A.S., Cerny T. Roadmap to Reasoning in Microservice Systems: A Rapid Review. Applied Sciences. Vol. 13. № 3. 2023. 1838 р. DOI: https://doi.org/10.3390/app13031838
Kazanavicius J., Mazeika D. Evaluation of microservice communication while decomposing monoliths. Computing and Informatics. Vol. 42. 2023. P. 1–36. DOI: https://doi.org/10.31577/cai_2023_1_1
Бугаєва І., Розум М. Реалізація міжпроцесної взаємодії в мікросервісній архітектурі. Вісник Одеського національного морського університету. № 67. 2022. P. 81–89. DOI: https://doi.org/10.47049/2226-1893-2022-1-81-89
H. Wang et al. Research on load balancing technology for microservice architecture. MATEC Web of Conferences. Vol. 336. № 08002. 2021. DOI: https://doi.org/10.1051/matecconf/202133608002
Autili M., Perucci A., Lauretis L. Hybrid Approach to Microservices Load Balancing. Microservices. Science and Engineering. 2020. Р. 149–169. DOI: https://doi.org/10.1007/978-3-030-31646-4_10
Akbulut A., Perros H.G. Performance Analysis of Microservice Design Patterns. IEEE Internet Computing. Vol. 23. Issue 6. 2019. P. 19–27. DOI: https://doi.org/10.1109/mic.2019.2951094
Wycislik L., Latusik L., Kaminska A. M. A Comparative Assessment of JVM Frameworks to Develop Microservices. Applied Sciences. Vol. 13. 2023. DOI: https://doi.org/10.3390/app13031343
H. Dinh-Tuan et al. Development Frameworks for Microservice-based Applications: Evaluation and Comparison. In Proceedings of the European Symposium on Software Engineering (ESSE '20). Association for Computing Machinery, New York, NY, USA, 2020. P. 21–29. DOI: https://doi.org/10.1145/3393822.3432339
Zhang Y. et al. Sinan: ML-Based and QoS-Aware Resource Management for Cloud Microservices. In Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’21). Association for Computing Machinery, New York, NY, USA, 2021. P. 167–181. DOI: https://doi.org/10.1145/3445814.3446693
Яшина О. М., Кравчук О. А. Дослідження мікросервісної архітектури, архітектурний стиль Rest та їх сучасна реалізація на Java. Herald of Khmelnytskyi national university. Issue 5. 2020. P. 106–114. DOI: 10.31891/2307-5732-2020-289-5-106-114
Newman S. Building Microservices: Designing Fine-Grained Systems 2nd Edition. O'Reilly Media, London, 2021. 612 р.
Silva V. A. M., França B. B. N. Microservices Design Patterns and Software Evolution. Relatório Técnico - IC-PFG-20-07. Projeto Finalde Graduação. 2020. URL: https://www.ic.unicamp.br/~reltech/PFG/2020/PFG-20-07.pdf (дата звернення: 11.07.2023).
Pachikkal C. Interservice Communication in Microservices. International Journal of Advanced Research in Science, Communication and Technology (IJARSCT). Vol. 5. Issue 2. 2021. URL: https://ijarsct.co.in/Paper1281.pdf (дата звернення: 11.07.2023).
S. A. Asri et al. Implementation of Asynchronous Microservices Architecture on Smart Village Application. International Journal on Advanced Science Engineering and Information Technology. Vol. 12. № 3. P. 1236–1243. DOI:10.18517/ijaseit.12.3.13897
Reselman B. Synchronous vs. asynchronous microservices communication patterns. URL: https://www.theserverside.com/answer/Synchronous-vs-asynchronous-microservices-communication-patterns (дата звернення: 11.07.2023).
Sanjana G B., Girish Rao Salanke N S. High Resilient Messaging Service for Microservice Architecture. International Journal of Applied Engineering Research. Vol. 16. № 5. 2021. P. 357–361. DOI: https://dx.doi.org/10.37622/IJAER/16.5.2021.357-361
Hosea E., Palit H, Dewi L. P. Fault Tolerance pada Microservice Architecture dengan Circuit Breaker dan Bulkhead Pattern. Jurnal Infra. Vol 9, № 2. 2021. URL: https://publication.petra.ac.id/index.php/teknik-informatika/article/view/11452/10062 (дата звернення: 11.07.2023).
Java Development Trends and Analysis. JRebel by Perforce. 2023 Java Developer Productivity Report. URL: https://www.jrebel.com/resources/java-developer-productivity-report-2023 (дата звернення: 11.07.2023).
Netflix Open Source Software Center. URL: https://netflix.github.io/ (дата звернення: 11.07.2023).
Wang Y. Toward service discovery and autonomic version management inself-healing microservices architecture. ECSA '19: Proceedings of the 13th European Conference on Software Architecture. Vol.2. 2019. P. 63–66. https://doi.org/10.1145/3344948.3344952
Indrani V., Swaroopa D., Deepthisri D. Perceptions of Client and Server Side Load Balancing in Microservices. International Journal of Innovative Research in Engineering & Management (IJIREM). Vol. 7. Issue 4. 2020. P. 54–57. URL: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3703126 (дата звернення: 11.07.2023).
Maharjan R. et al. Benchmarking Message Queues. Telecom. Vol. 4. 2023. P. 298–312. DOI: https://doi.org/10.3390/ telecom4020018
Spring by VMware Tanzu. URL: https://spring.io/projects/spring-cloud (дата звернення: 11.07.2023).
References
Abdelfattah, A.S., Cerny, T. (2023), "Roadmap to Reasoning in Microservice Systems: A Rapid Review". Applied Sciences. Vol. 13. № 3. 1838 р. DOI: https://doi.org/10.3390/app13031838
Kazanavicius, J., Mazeika, D. (2023), "Evaluation of microservice communication while decomposing monoliths". Computing and Informatics. Vol. 42. P. 1–36. DOI: https://doi.org/10.31577/cai_2023_1_1
Buhaieva,, I., Rozum, M. (2022), "Implementation of interprocess interaction in microservice architecture". ["Realizatsiia mizhprotsesnoi vzaiemodii v mikroservisnii arkhitekturi"], Bulletin of Odessa National Maritime University, № 67. P. 81–89. DOI: https://doi.org/10.47049/2226-1893-2022-1-81-89
Wang, H. et al. (2021), "Research on load balancing technology for microservice architecture". MATEC Web of Conferences. Vol. 336. № 08002. DOI: https://doi.org/10.1051/matecconf/202133608002
Autili, M., Perucci, A., Lauretis, L. (2020), "Hybrid Approach to Microservices Load Balancing". Microservices. Science and Engineering. Р. 149–169. DOI: https://doi.org/10.1007/978-3-030-31646-4_10
Akbulut, A., Perros, H.G. (2019), "Performance Analysis of Microservice Design Patterns". IEEE Internet Computing. Vol. 23. Issue 6. P. 19–27. DOI: https://doi.org/10.1109/mic.2019.2951094
Wycislik, L., Latusik, L., Kaminska, A. M. (2023), "A Comparative Assessment of JVM Frameworks to Develop Microservices". Applied Sciences. Vol. 13. DOI: https://doi.org/ 10.3390/app13031343
Dinh-Tuan, H. et al. (2020), "Development Frameworks for Microservice-based Applications: Evaluation and Comparison". European Symposium on Software Engineering (ESSE '20). Association for Computing Machinery, New York, NY, USA, P.21–29 DOI: https://doi.org/10.1145/3393822.3432339
Zhang, Y. et al. (2021), "Sinan: ML-Based and QoS-Aware Resource Management for Cloud Microservices". In Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’21). Association for Computing Machinery, New York, NY, USA, P. 167–181. DOI: https://doi.org/10.1145/3445814.3446693
Yashina, O.M., Kravchuk, O.A. (2020), "Research on microservice architecture, Rest architectural style and their modern implementation in Java". ["Doslidzhennia mikroservisnoi arkhitektury, arkhitekturnyi styl Rest ta yikh suchasna realizatsiia na Java"], Herald of Khmelnytskyi national university. Issue 5. P. 106–114. DOI: 10.31891/2307-5732-2020-289-5-106-114
Newman, S. (2021), Building Microservices: Designing Fine-Grained Systems 2nd Edition. O'Reilly Media, London, 612 р.
Silva, V. A. M., França, B. B. N. (2020), "Microservices Design Patterns and Software Evolution". Relatório Técnico - IC-PFG-20-07. Projeto Finalde Graduação, available at: https://www.ic.unicamp.br/~reltech/PFG/2020/PFG-20-07.pdf (last accessed: 11.07.2023).
Pachikkal, C. "Interservice Communication in Microservices". International Journal of Advanced Research in Science, Communication and Technology (IJARSCT). Vol. 5. Issue 2, available at: https://ijarsct.co.in/Paper1281.pdf (last accessed: 11.07.2023).
Asri, S.A. et al. (2020), "Implementation of Asynchronous Microservices Architecture on Smart Village Application". International Journal on Advanced Science Engineering and Information Technology. Vol. 12. № 3. P. 1236–1243. DOI:10.18517/ijaseit.12.3.13897
Reselman, B. Synchronous vs. asynchronous microservices communication patterns, available at: https://www.theserverside.com/answer/Synchronous-vs-asynchronous-microservices-communication-patterns (last accessed: 11.07.2023).
Sanjana, G B., Girish Rao Salanke, N S. (2021), "High Resilient Messaging Service for Microservice Architecture". International Journal of Applied Engineering Research. Vol. 16. № 5. P. 357–361. DOI: https://dx.doi.org/10.37622/IJAER/16.5.2021.357-361
Hosea, E., Palit, H, Dewi, L. P. (2021), "Fault Tolerance pada Microservice Architecture dengan Circuit Breaker dan Bulkhead Pattern". Jurnal Infra. Vol 9, № 2, available at: https://publication.petra.ac.id/index.php/teknik-informatika/article/view/11452/10062 (last accessed: 11.07.2023).
"Java Development Trends and Analysis. JRebelby Perforce". 2023 Java Developer Productivity Report, available at: https://www.jrebel.com/resources/java-developer-productivity-report-2023 (last accessed: 11.07.2023).
"Netflix Open Source Software Center", available at: https://netflix.github.io/ (last accessed: 11.07.2023).
Wang, Y. (2019), "Toward service discovery and autonomic version management inself-healing microservices architecture". ECSA '19: Proceedings of the 13th European Conference on Software Architecture. Vol.2. P. 63–66. https://doi.org/10.1145/3344948.3344952
Indrani, V., Swaroopa, D., Deepthisri, D. (2020), "Perceptions of Client and Server Side Load Balancing in Microservices". International Journal of Innovative Research in Engineering & Management (IJIREM). Vol. 7. Issue 4, P. 54–57, available at: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3703126 (last accessed: 11.07.2023).
Maharjan, R. et al. (2023), "Benchmarking Message Queues". Telecom. Vol. 4. P. 298–312. DOI: https://doi.org/10.3390/telecom4020018
"Spring by VMware Tanzu", available at: https://spring.io/projects/spring-cloud (last accessed: 11.07.2023).
##submission.downloads##
Опубліковано
Як цитувати
Номер
Розділ
Ліцензія
Авторське право (c) 2023 Світлана Переяславська, Ольга Смагіна

Ця робота ліцензується відповідно до Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Наше видання використовує положення про авторські права Creative Commons для журналів відкритого доступу.
Автори, які публікуються у цьому журналі, погоджуються з наступними умовами:
-
Автори залишають за собою право на авторство своєї роботи та передають журналу право першої публікації цієї роботи на умовах ліцензії Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0), котра дозволяє іншим особам вільно розповсюджувати опубліковану роботу з обов'язковим посиланням на авторів оригінальної роботи та першу публікацію роботи у цьому журналі.
-
Автори мають право укладати самостійні додаткові угоди щодо не комерційного та не ексклюзивного розповсюдження роботи у тому вигляді, в якому вона була опублікована цим журналом (наприклад, розміщувати роботу в електронному сховищі установи або публікувати у складі монографії), за умови збереження посилання на першу публікацію роботи у цьому журналі.
-
Політика журналу дозволяє і заохочує розміщення авторами в мережі Інтернет (наприклад, у сховищах установ або на особистих веб-сайтах) рукопису опублікованої роботи, оскільки це сприяє виникненню продуктивної наукової дискусії та позитивно позначається на оперативності та динаміці цитування опублікованої роботи.












