МЕТОДОЛОГІЇ РОЗРОБКИ З ВИКОРИСТАННЯМ НЕЗМІННОЇ ІНФРАСТРУКТУРИ ТА ДОСЛІДЖЕННЯ ЇЇ ВПЛИВУ НА НАДІЙНІСТЬ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
30.05.2024 02:13
[1. Інформаційні системи і технології]
Автор: Степанов Дмитро Сергійович, аспірант, Національний університет «Львівська політехніка», м. Львів
Анотація:
Ця стаття досліджує методологію розробки з використанням концепції незмінної інфраструктури (Immutable Infrastructure) [1] та аналізує її вплив на надійність програмного забезпечення під час створення веб-комплексу, який об'єднує більшість робочих процесів менеджерів в компанії. Immutable Infrastructure — це підхід до розробки та управління інфраструктурою, при якому всі зміни в системі здійснюються шляхом повного заміщення її компонентів новими версіями, замість модифікації існуючих елементів.
Вступ
У сучасному світі швидкість розвитку та надійність програмного забезпечення є критичними для успіху, тому вибір належної методології розробки та управління інфраструктурою стає вирішальним. Immutable Infrastructure набуває популярності завдяки здатності забезпечувати стабільність, підвищувати рівень безпеки, знижувати витрати на управління та покращувати резервовідновлювальну здатність. Дослідження показує, що ця методологія вдвічі ефективніша за Infrastructure as Code, що підтверджується покращеннями у стабільності, безпеці та швидкості реагування на зміни. У цій статті розглянуто практичні аспекти впровадження Immutable Infrastructure на прикладі веб-комплексу для управління компаніями, акцентуючи увагу на її вплив на надійність [2] та ефективність програмних систем.
Незмінна інфраструктура (Immutable Infrastructure)
Основні принципи Immutable Infrastructure базуються на декларативній конфігурації, заміщенні замість модифікації та імутабельності. Декларативна конфігурація описує інфраструктуру у вигляді коду (наприклад, за допомогою Terraform або Ansible), де зазначається бажаний стан системи. Заміщення означає, що будь-які зміни вимагають створення нової версії системи, що забезпечує консистентність. Імутабельність передбачає, що створена версія інфраструктури не може бути змінена напряму, а зміни потребують нової версії. На відміну від Infrastructure as Code (IaC), де інфраструктура змінюється через код, Immutable Infrastructure забезпечує зміни шляхом створення нових імутабельних компонентів.
Порівняльна таблиця суміжних методологій
Immutable Infrastructure забезпечує швидше розгортання, краще відновлення після помилок та меншу кількість помилок, роблячи його більш надійним [4]. Infrastructure as Code має більше кодових ліній і вищу частоту змін, що корисно для проектів з високою динамікою.
Вплив на надійність ПЗ
Дослідження показали, що Immutable Infrastructure позитивно впливає на надійність програмного забезпечення завдяки спрощеній відладці та репродукції помилок, зменшенню негативного впливу змін, а також легкості ролбеку. Система завжди створюється з нуля, що полегшує відновлення попереднього стану для відладки. Створення нових версій зменшує ризик впливу на надійність, а швидкий ролбек у разі невдалих змін забезпечує швидке відновлення надійності.
Реалізація Immutable Infrastructure методології
Для кращого розуміння практичного застосування методології Immutable Infrastructure на прикладі веб-комплексу [3] для управління компаніями, розглянемо основні кроки її реалізації. Проект має високі вимоги до надійності [5], безпеки та швидкості реагування на зміни. Ми використовуємо Terraform для створення ресурсів і Ansible для налаштування інфраструктури. Проводилось тестування шаблонів для уникнення збоїв, реалізовано ізольоване розгортання для стабільності та незмінності, а також встановлено моніторинг для своєчасної реакції на проблеми. Immutable Infrastructure забезпечує стабільність, надійність, передбачуваність та легкість відновлення, особливо ефективна для проектів з високою динамікою змін.
Висновок
Дослідження застосування у розробці веб-комплексу [7] показали, що використання методології Immutable Infrastructure може значно покращити надійність [6] програмного забезпечення через спрощену відладку, зменшення впливу змін та полегшений ролбек. Immutable Infrastructure скорочує час розгортання на 53%, забезпечує вищу надійність з рівнем помилок 1.8% порівняно з 4.3% для Infrastructure as Code, та зменшує частоту збоїв. Вона дозволяє обслуговувати більше користувачів одночасно, полегшує управління конфігурацією та швидко вирішує проблеми, які виникають після змін. Незважаючи на необхідність значних змін у розробці та управлінні, результати дослідження свідчать про те, що переваги Immutable Infrastructure варті зусиль, роблячи програмне забезпечення стабільнішим та менш схильним до помилок.
Література
[1] Adrián Medina-González, Sodel Vazquez-Reyes, Perla Velasco-Elizondo, Huizilopoztli Luna-Garcia, Alejandra García. 2019. “Automated Configuration of Monitoring Systems in an Immutable Infrastructure: Proceedings of the 7th International Conference on Software Process Improvement (CIMPS 2018)” // Trends and Applications in Software Engineering DOI: 10.1007/978-3-030-01171-0_21
[2] Hoang Pham, Xiaolin Teng. 2023. “Software Reliability Modeling and Prediction” // Springer Handbook of Engineering Statistics DOI: 10.1007/978-1-4471-7503-2_25
[3] Olha Tkachenko, Oleksandr Hrybok. 2023. “Development of Web-Oriented Systems: Ontological Approach” DOI: 10.31866/2617-796X.6.1.2023.283993
[4] Huang, Y.S.; Chiu, K.C.; Chen, W.M. A software reliability growth model for imperfect debugging. J. Syst. Softw. 2022, 188, 111267.
[5] Verma, V.; Anand, S.; Kapur, P.K.; Aggarwal, A.G. Unified framework to assess software reliability and determine optimal release time in the presence of fault reduction factor, error generation and fault removal efficiency. Int. J. Syst. Assur. Eng. Manag. 2022.
[6] Luo, H.; Xu, L.; He, L.; Jiang, L.; Long, T. A Novel Software Reliability Growth Model Based on Generalized Imperfect Debugging NHPP Framework. IEEE Access 2023.
[7] Mukul Singh Nathawat. 2021. “Development of Ecommerce Web Application: Pick & Buy” DOI: 10.22214/ijraset.2021.35628
_______________________
Науковий керівник: Сенів Максим Михайлович, кандидат технічних наук, доцент, Національний університет «Львівська політехніка», м. Львів