Проєктування рівня маршрутизації в мікросервісних архітектурах на платформі Spring

Автор(и)

  • Світлана Переяславська Державний заклад "Луганський національний університет імені Тараса Шевченка", Україна https://orcid.org/0000-0001-9873-0447
  • Ольга Смагіна Державний заклад "Луганський національний університет імені Тараса Шевченка", Україна https://orcid.org/0000-0002-6024-5152

DOI:

https://doi.org/10.30837/ITSSI.2023.25.064

Ключові слова:

мікросервісна архітектура; маршрутизація; Spring; Service discovery; API Gateway; Load Balancer.

Анотація

Предметом дослідження є маршрутизація запитів у мікросервісній архітектурі. Мета статті – розроблення цілісної концепції проєктування рівня маршрутизації запитів у мікросервісній архітектурі на прикладі стеку технологій Spring. Завдання: проаналізувати сучасні підходи щодо структури мікросервісної архітектури; визначити сутність маршрутизації та встановити процеси, що забезпечують маршрутизацію запитів; визначити стек технологій Spring, які реалізують маршрутизацію; спроєктувати рівень маршрутизації застосунку на платформі Spring. Упроваджуються такі методи: аналіз і синтез для вивчення технологій взаємодії між службами; абстрагування та узагальнення для визначення структури мікросервісної архітектури, рівня маршрутизації, узагальнення технологій, що забезпечують взаємодію між сервісами; моделювання з метою побудови моделі мікросервісної архітектури з виокремленням рівня маршрутизації та зв’язків  з іншими структурами моделі. Здобуто такі результати: досліджено структуру мікросервісної архітектури, зокрема рівень маршрутизації; визначено роль шаблонів проєктування, що забезпечують маршрутизацію: Service discovery, API Gateway, Load Balancer тощо; проаналізовано види  міжпроцесної взаємодії (синхронна, асинхронна, гібридна) та визначено переваги й доцільність застосування; розглянуто моделі відмовостійкості системи; визначено стек технологій на платформі Spring для реалізації рівня маршрутизації; розроблено модель проєкту багаторівневої мікросервісної архітектури із застосуванням стеку технологій Spring, що реалізує найбільш ефективні рішення в контексті маршрутизації запитів. Висновки: мікросервісну архітектуру доцільно розглядати як багаторівневу структуру, що будується на функціональних рівнях і зв’язках між ними; рівнем маршрутизації мікросервісів  потрібно вважати всі процеси, пов’язані з налагодженням міжпроцесної взаємодії, виявленням сервісів, балансуванням навантаження та забезпеченням відмовостійкості, створенням єдиної точки входу; Spring є популярною платформою розроблення мікросервісної  архітектури, що надає необхідні інструменти для реалізації маршрутизації запитів; розроблена модель проєкту є прикладом ефективних рішень щодо проєктування багаторівневої архітектури із застосуванням стеку технологій Spring  у контексті маршрутизації запитів.

Біографії авторів

Світлана Переяславська, Державний заклад "Луганський національний університет імені Тараса Шевченка"

кандидат педагогічних наук, доцент, доцент кафедри інформаційних технологій та систем

Ольга Смагіна, Державний заклад "Луганський національний університет імені Тараса Шевченка"

кандидат педагогічних наук, доцент, доцент кафедри інформаційних технологій та систем

Посилання

Список літератури

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##

Опубліковано

2023-09-30

Як цитувати

Переяславська, С., & Смагіна, О. (2023). Проєктування рівня маршрутизації в мікросервісних архітектурах на платформі Spring. СУЧАСНИЙ СТАН НАУКОВИХ ДОСЛІДЖЕНЬ ТА ТЕХНОЛОГІЙ В ПРОМИСЛОВОСТІ, (3(25), 64–78. https://doi.org/10.30837/ITSSI.2023.25.064