ПІДХОДИ ДО МІЖПРОЦЕСНОЇ КОМУНІКАЦІЇ У ПОБУДОВ І МІКРОСЕРВІСНИХ СИСТЕМ В НАУКОВІЙ ЛІТЕРАТУРІ
DOI:
https://doi.org/10.35546/kntu2078-4481.2024.2.15Ключові слова:
мікросервісна архітектура, міжпроцесна комунікація, моделювання, віддалений виклик процедур, обмін повідомленнями, брокер повідомлень, сага, патерни.Анотація
Сьогодні продовжує актуалізовуватися питання побудови архітектури мікросервісів, що дозволяє проектувати системи з низькою зв’язністю, які мають низку переваг перед монолітами: можливість горизонтального масштабування, краще розділення системи на складові частини (сервіси), кожен окремий з яких простіше розвивати та підтримувати, можливість більш ефективного використання ресурсів тощо. Зазначені вище та низка інших причин призводять до зростання популярності такого типу архітектури в індустрії, що позначається на виборі архітекторів та інженерів програмного забезпечення стосовно впровадження мікросервісної архітектури як при побудові нових систем, так і у якості вектору розвитку успадкованих монолітних систем, які все частіше переводяться на мікросервіси. Проблематика, що стосується питань проектування мікросервісних систем містить в собі велику кількість різноманітних аспектів, і одним з таких аспектів є вибір типу міжпроцесної комунікації разом із низкою супутніх патернів, технологій та інструментів. Вплив такого вибору неможливо переоцінити: здатність сервісів ефективно обмінюватися даними є основою організації функціональності системи, що водночас має значний вплив і на такі нефункціональні характеристики, як масштабованість, надійність, складність розробки та підтримки тощо. В даній статті розглядаються методи, принципи та інструменти, призначені для організації міжпроцесної комунікації у мікросервісних системах, висвітлюються патерни, що дозволяють зменшувати вплив обмежень та недоліків тих чи інших методів та інструментів, наводяться як усталені в індустрії, так і відомі здебільшого в академічній спільноті принципи та підходи. Зазначені вище аспекти розглядаються в контексті як синхронної, так і асинхронної комунікації, в межах яких присутня власна субкласифікація за типами протоколів, інструментами, супутніми патернами, типом організації розподіленої транзакційності.
Посилання
Richardson C. Microservices patterns: with examples in Java. Shelter Island, New York: Manning Publications, 2019. 490 p.
Newman S. Building microservices: designing fine-grained systems. Second Edition. Beijing: O’Reilly Media, 2021. 586 p.
Steen M. van, Tanenbaum A.S. Distributed systems. 4th edition, Version 01 (January 2023). Maarten van Steen, 2023. 669 p.
Kleppmann M. Designing Data-Intensive Applications. O'Reilly Media, 2017. 611 p.
Fielding R.T. et al. Reflections on the REST architectural style and “principled design of the modern web architecture” (impact paper award) // Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering. Paderborn Germany: ACM, 2017. P. 4–14.
Fowler M. Richardson Maturity Model [Electronic resource]. 2010. URL: https://martinfowler.com/articles/richardsonMaturityModel.html.
Mastrangelo C. gRPC + JSON [Electronic resource]. 2018. URL: https://grpc.io/blog/grpc-with-json/.
Viotti J.C., Kinderkhedia M. A Survey of JSON-compatible Binary Serialization Specifications: arXiv:2201.02089. arXiv, 2022.
Zhang L. et al. High performance microservice communication technology based on modified remote procedure call // Sci Rep. 2023. Vol. 13, № 1. P. 12141.
Falahah, Surendro K., Sunindyo W.D. Circuit Breaker in Microservices: State of the Art and Future Prospects // IOP Conf. Ser.: Mater. Sci. Eng. 2021. Vol. 1077, № 1. P. 012065.
Mendonca N.C. et al. Model-Based Analysis of Microservice Resiliency Patterns // 2020 IEEE International Conference on Software Architecture (ICSA). Salvador, Brazil: IEEE, 2020. P. 114–124.
Miraj M., Fajar A.N. Model-Based Resilience Pattern Analysis For Fault Tolerance In Reactive Microservice. Vol. 2022. № 9.
Erdenebat B., Bud B., Kozsik T. Challenges in service discovery for microservices deployed in a Kubernetes cluster – a case study // Infocommunications journal. 2023. Vol. 15, № Special Issue. P. 69–75.
Moore J. et al. Zest: REST over ZeroMQ: arXiv:1902.07009. arXiv, 2019.
Kasarlewar O., Desai P.S. Secure Broker-less Publish/Subscribe System using ECC. 2015. Vol. 6.
Jairange R.A., Gupta A.K. Secure Brokerless System for Publisher/Subscriber Relationship in Distributed Network. 2016. Vol. 6, № 7.
Moll P. et al. Resilient Brokerless Publish-Subscribe over NDN // MILCOM 2021–2021 IEEE Military Communications Conference (MILCOM). San Diego, CA, USA: IEEE, 2021. P. 438–444.
Rathore N., Kant S. Enhanced Blockchain Application for Pub-Sub Model // Advances in Electromechanical Technologies / ed. Pandey V.C., Pandey P.M., Garg S.K. Singapore: Springer Singapore, 2021. P. 299–311.
Maharjan R. et al. Benchmarking Message Queues // Telecom. 2023. Vol. 4, № 2. P. 298–312.
Fu G., Zhang Y., Yu G. A Fair Comparison of Message Queuing Systems // IEEE Access. 2021. Vol. 9. P. 421–432.
Hegde R.G. Low Latency Message Brokers. 2020. Vol. 07, № 05.
Chy M.S.H. et al. Comparative Evaluation of Java Virtual Machine-Based Message Queue Services: A Study on Kafka, Artemis, Pulsar, and RocketMQ // Electronics. 2023. Vol. 12, № 23. P. 4792.
Sekhar R.R., Gadad V. Microservices, Saga Pattern and Event Sourcing: A Survey. 2020. Vol. 07, № 05.
Gordesli M., Nasab A., Varol A. Handling Rollbacks with Separated Response Control Service for Microservice Architecture // 2022 3rd International Informatics and Software Engineering Conference (IISEC). Ankara, Turkey: IEEE, 2022. P. 1–4.
Daraghmi E., Zhang C.-P., Yuan S.-M. Enhancing Saga Pattern for Distributed Transactions within a Microservices Architecture // Applied Sciences. 2022. Vol. 12, № 12. P. 6242.
Dürr K., Lichtenthäler R., Wirtz G. Saga Pattern Technologies: A Criteria-based Evaluation: // Proceedings of the 12th International Conference on Cloud Computing and Services Science. Science and Technology Publications, 2022. P. 141–148.
Štefanko M., Chaloupka O., Rossi B. The Saga Pattern in a Reactive Microservices Environment: // Proceedings of the 14th International Conference on Software Technologies. Prague, Czech Republic: SCITEPRESS – Science and Technology Publications, 2019. P. 483–490.
Resilience strategies [Electronic resource]. URL: https://www.pollydocs.org/strategies/index.html.
Cloud Design Patterns [Electronic resource]. URL: https://learn.microsoft.com/en-us/azure/architecture/patterns/.
Sivrikaya F. et al. Internet of Smart City Objects: A Distributed Framework for Service Discovery and Composition // IEEE Access. 2019. Vol. 7. P. 14434–14454.