Аналіз наявних методів і засобів забезпечення зручності супроводу мікросервісного програмного забезпечення

Ключові слова: зручність супроводу, мікросервіси, Clean Architecture, тестування, ін'єкція залежностей

Анотація

Проаналізовано літературні джерела, що досліджують методи та засоби забезпечення зручності супроводу мікросервісного програмного забезпечення (ПЗ). Виявлено, що наявні підходи, хоч і корисні, не повністю вирішують проблеми, пов'язані зі складністю мікросервісної архітектури. Особливу увагу приділено складності управління великою кількістю незалежних компонент, які потребують узгодженості для забезпечення надійності та ефективності системи. Дослідження виявило, що забезпечення зручності супроводу мікросервісів є складним завданням через їхню розподілену природу, високий ступінь автономії компонент та потребу підтримання узгодженості між ними. Зручність супроводу мікросервісів розглянуто як комплексну характеристику, що містить модульність, аналізованість (англ. Analyzability), можливість повторного використання, змінюваність та тестованість (англ. Testability). Визначено ключові проблеми, що ускладнюють супровід мікросервісів, та запропоновано шляхи їх вирішення. Запропоновано розширити підхід чистої архітектури (англ. Clean Architecture) шляхом додавання шару доменних сервісів, що сприятиме кращій організації бізнес-логіки та зниженню складності в разі внесення змін. Удосконалення структури компонент містить розроблення нового методу управління залежностями, який поєднує ін'єкцію залежностей з локатором служб, що забезпечить гнучкіше та контрольованіше середовище для управління залежностями. Розроблено спеціалізований метод тестування ініціалізації залежностей, що дасть змогу зменшити кількість помилок на ранніх етапах розроблення та підвищити стабільність системи. Окрім цього, розглянуто подальший розвиток використання моків (англ. Mocks) для спрощення процесу тестування, що дасть змогу знизити залежність від зовнішніх сервісів під час перевірки компонент. Результати дослідження засвідчують важливість подальшого вивчення та вдосконалення методів забезпечення зручності супроводу мікросервісів, що має вирішальне значення для підтримання високої якості програмного забезпечення та зниження витрат на його підтримку. На підставі запропонованих шляхів вирішення можна розробити нові та вдосконалити наявні методи, що дасть змогу підвищити показники зручності супроводу мікросервісного ПЗ, зменшити ризики, пов'язані з інтеграцією нових компонент, та забезпечити ефективніше управління складними мікросервісними системами.

Завантаження

Дані завантаження ще не доступні.

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

В. Я. Лахай, Національний університет "Львівська політехніка", м. Львів

аспірант, кафедра програмного забезпечення

М. М. Сенів, Національний університет "Львівська політехніка", м. Львів

канд. техн. наук, доцент, кафедра програмного забезпечення

Посилання

Abeyrathne, T. & Gayal, B. & Jayathilake, R. & Weththasinghe, W. (2021). Increase Maintainability of a Software Product using Structuredness. In University of Kelaniya, 1–16. URL: https://www.researchgate.net/publication/354363138_Increase_Maintainability_of_a_Software_Product_using_Structuredness

Abgaz, Y., McCarren, A., Elger, P., Solan, D., Lapuz, N., Bivol, M., Jackson, G., Yilmaz, M., Buckley, J., & Clarke, P. (2023). Decomposition of Monolith Applications Into Microservices Architectures: A Systematic Review. IEEE Transactions on Software Engineering, 1–32. https://doi.org/10.1109/tse.2023.3287297

Alenezi, M., & Zarour, M. (2020). On the relationship between software complexity and security. International Journal of Software Engineering & Applications, 11(1), 51–60. https://doi.org/10.5121/ijsea.2020.11104

Anwer, F., Asif, M., Ahmad, M. O., & Usman, M. (2017). Agile Software Development Models TDD, FDD, DSDM, and Crystal Methods: A Survey. International Journal of Multidisciplinary Sciences and Engineering, 8(2), 1–10. URL: https://www.researchgate.net/publication/316273992_Agile_Software_Development_Models_TDD_FDD_DSDM_and_Crystal_Methods_A_Survey

Bass, L., Clements, P., & Kazman, R. (2012). Software Architecture in Practice (3rd ed.). Addison-Wesley Professional. URL: https://edisciplinas.usp.br/pluginfile.php/5922722/mod_resource/content/1/2013%20-%20Book%20-%20Bass%20%20Kazman-Software%20Architecture%20in%20Practice%20%281%29.pdf

Bissi, W., Serra Seca Neto, A. G., & Emer, M. C. F. P. (2016). The effects of test driven development on internal quality, external quality and productivity: A systematic review. Information and Software Technology, 74, 45–54. https://doi.org/10.1016/j.infsof.2016.02.004

Bondyopadhyay, A., & Mandal, D. A. (2022). Improvement of Software Reliability using Data Mining Technique. International Journal of Scientific and Research Publications, 12(6), 183–187. URL: https:www.ijsrp.org/research-paper-0622/ijsrp-p12620.pdf

Boswell, D., & Foucher, T. (2011). Art of Readable Code. O'Reilly Media, Incorporated. URL: https://www.oreilly.com/library/view/the-art-of/9781449318482/

Farooq, M. S., Omer, U., Ramzan, A., Rasheed, M. A., & Atal, Z. (2023). Behavior Driven Development: A Systematic Literature Review, 1. https://doi.org/10.1109/access.2023.3302356

Ghofrani, J., & Lübke, D. (2018). Challenges of Microservices Architecture: A Survey on the State of the Practice. 10th Central European Workshop on Services and their Composition. URL: https://www.researchgate.net/publication/328216639_Challenges_of_Microservices_Architecture_A_Survey_on_the_State_of_the_Practice

Gillis, A., & Ferguson, K. (2023). What is dependency injection in object-oriented programming (OOP). TechTarget. URL: https://www.techtarget.com/searchapparchitecture/definition/dependency-injection

Goseva-Popstojanova, K., & Perhinschi, A. (2015). On the capability of static code analysis to detect security vulnerabilities. Information and Software Technology, 68, 18–33. https://doi.org/10.1016/j.infsof.2015.08.002

Grytsiuk, P. Y., Ivanyshyn, A. V., & Hrytsiuk, Y. I. (2023). Quality assurance of software products in accordance with IEEE 730-2014 standard within the project implementation lifecycle. Scientific Bulletin of UNFU, 33(2), 101–117. https://doi.org/10.36930/40330214

Hasselbring, W. (2018). Software Architecture: Past, Present, Future. The Essence of Software Engineering, 169–184. Springer International Publishing. https://doi.org/10.1007/978-3-319-73897-0_10

Hrytsiuk, Y. I., & Mukha, T. O. (2020). Methods of determination of quality of software. Scientific Bulletin of UNFU, 30(1), 158-167. https://doi.org/10.36930/40300127

ISO/IEC. (2023). Systems and software engineering – Systems and software Quality Requirements and Evaluation (SQuaRE) – Product quality model (ISO/IEC 25010: 2023). URL: https://www.iso.org/obp/ui/#iso:std:iso-iec:25010:ed-2:v1:en

Kapferer, S., & Zimmermann, O. (2020). Domain-specific Language and Tools for Strategic Domain-driven Design, Context Mapping and Bounded Context Modeling. 8th International Conference on Model-Driven Engineering and Software Development. SCITEPRESS – Science and Technology Publications. https://doi.org/10.5220/0008910502990306

Khaire, U. M., & Dhanalakshmi, R. (2019). Stability of feature selection algorithm: A review. Journal of King Saud University – Computer and Information Sciences. https://doi.org/10.1016/j.jksuci.2019.06.012

Lakhai, V. Y., Kuzmych, O. M., & Seniv, M. M. (2023). An improved method for increasing maintainability in terms of serverless architecture application. Ukrainian Journal of Information Technology, 5(1), 09–16. https://doi.org/10.23939/ujit2023.01.009

Martin Fowler, M. (2004). Inversion of Control Containers and the Dependency Injection pattern. martinfowler.com. URL: https://martinfowler.com/articles/injection.html

Martin, R. (2017). Clean Architecture: A Craftsman's Guide to Software Structure and Design. Pearson Education, Limited. URL: https://audiobookstore.com/audiobooks/clean-architecture-1.aspx?campaign=dynamic_ads_international&source=google&iwAoRO5rMPrL9ChfBa4kd7AyaKboNqE90ns23s4ns33scvEnD_RLxxrSVRwUBoCm50QAvD_BwE

Martin, R. C. (2012). The Clean Architecture. Clean Coder Blog. URL: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

Meyer, B. (1992). Applying 'design by contract'. Computer, 25(10), 40–51. https://doi.org/10.1109/2.161279

Molnar, A.-J., & Motogna, S. (2021). A Study of Maintainability in Evolving Open-Source Software. У Communications in Computer and Information Science, 261–282. Springer International Publishing. https://doi.org/10.1007/978-3-030-70006-5_11

Molnar, A.-J., & Motogna, S. (2021). A study of maintainability in evolving open-source software. Communications in Computer and Information Science, 261–282. Springer International Publishing. https://doi.org/10.1007/978-3-030-70006-5_11

Nageshkumar, M., & Mandavkar, S. (2021). Handling Unhandled Exceptions in Python 3 using Dependency Injection (DI) or Inversion of Control (IoC). International Journal of Engineering Research & Technology (IJERT), 10(7), 29–33. URL: https:www.ijert.org/research/handling-unhandled-exceptions-in-python-3-using-dependency-injection-di-or-inversion-of-control-ioc-IJERTV10IS070030.pdf

Nielsen, M. E., Ostergaard Madsen, C., & Lungu, M. F. (2020). Technical Debt Management: A Systematic Literature Review and Research Agenda for Digital Government. Lecture Notes in Computer Science, 121–137. Springer International Publishing. https://doi.org/10.1007/978-3-030-57599-1_10

Paasonen, T. (2011). Methods for Improving the Maintainability of Application Software. [Master's thesis, Aalto University]. URL: https: aaltodoc.aalto.fi/server/api/core/bitstreams/48383ab2- 54b5-4987-b30e-da2a7e1821a1/content

Rafique, Y., & Misic, V. B. (2013). The Effects of Test-Driven Development on External Quality and Productivity: A Meta-Analysis. Transactions on Software Engineering, 39(6), 835–856. https://doi.org/10.1109/tse.2012.28

Rogers, D. S. (2022). Implementing Domain-Driven Design (by V. Vernon). ACM SIGSOFT Software Engineering Notes, 47(3), 24. https://doi.org/10.1145/3539814.3539822

Sardar, M. (2023). Exploring the Impact of Software Architecture on System Performance and Maintainability: A Comprehensive Study. ResearchGate. URL: https://www.researchgate.net/publication/372231890_Exploring_the_Impact_of_Software_Architec ture_on_System_Performance_and_Maintainability_A_Comprehensive_Study

Seemann, M., & Deursen, S. V. (2019). Dependency Injection Principles, Practices, and Patterns. Manning Publications. URL: https://www.manning.com/books/dependency-injection-principles- practices-patterns

Shahin, M., Ali Babar, M., & Zhu, L. (2017). Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices. URL: https://arxiv.org/pdf/1703.07019

Sharma, T., & Singh, Y. (2022).A Systematic Literature Review on Software- refactoring Techniques, Challenges, and Practices. The University of Lahore. URL: https://www.researchgate.net/publication/360310217_A_Systematic_Literature_Review_ on_Software-_refactoring_Techniques_Challenges_and_Practices

Späth, P., Cosmina, I., Harrop, R., & Schaefer, C. (2023). Introducing IoC and DI in Spring. Pro Spring 6 with Kotlin, 41–101. https://doi.org/10.1007/978-1-4842-9557-1_3

Thatikonda, V. K. (2023). Assessing the Impact of Microservices Architecture on Software Maintainability and Scalability. European Journal of Theoretical and Applied Sciences, 1(4), 782–787. https://doi.org/10.59324/ejtas.2023.1(4).71

Uludağ, Ö., Hauder, M., Kleehaus, M., Schimpfle, C., & Matthes, F. (2018). Supporting Large-Scale Agile Development with Domain-Driven Design. Lecture Notes in Business Information Processing, 232–247. Springer International Publishing. https://doi.org/10.1007/978-3-319-91602-6_16

Veng, M. (2014). Dependency Injection and Mock on Software and Testing [Master's thesis, Uppsala University]. URL: https://www.diva-portal.org/smash/get/diva2:726176/FULLTEXT01.pdf

Опубліковано
2024-09-05
Як цитувати
Лахай, В. Я., & Сенів, М. М. (2024). Аналіз наявних методів і засобів забезпечення зручності супроводу мікросервісного програмного забезпечення. Scientific Bulletin of UNFU, 34(6), 87-92. https://doi.org/10.36930/40340612
Розділ
Інформаційні технології

Статті цього автора (авторів), які найбільше читають