Аналіз наявних методів і засобів забезпечення зручності супроводу мікросервісного програмного забезпечення
Анотація
Проаналізовано літературні джерела, що досліджують методи та засоби забезпечення зручності супроводу мікросервісного програмного забезпечення (ПЗ). Виявлено, що наявні підходи, хоч і корисні, не повністю вирішують проблеми, пов'язані зі складністю мікросервісної архітектури. Особливу увагу приділено складності управління великою кількістю незалежних компонент, які потребують узгодженості для забезпечення надійності та ефективності системи. Дослідження виявило, що забезпечення зручності супроводу мікросервісів є складним завданням через їхню розподілену природу, високий ступінь автономії компонент та потребу підтримання узгодженості між ними. Зручність супроводу мікросервісів розглянуто як комплексну характеристику, що містить модульність, аналізованість (англ. 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



