Метод выявления архитектурной деградации в распределенных веб-системах на основе динамики структурных метрик
Автор: Пилецкая А.В., Орлов С.П.
Журнал: Инфокоммуникационные технологии @ikt-psuti
Рубрика: Новые информационные технологии
Статья в выпуске: 2 (90) т.23, 2025 года.
Бесплатный доступ
В статье рассматривается проблема архитектурной деградации распределенных веб-приложений, возникающей в условиях интенсивной разработки, CI/CD-процессов и роста технического долга. Предложен формализованный подход к выявлению и мониторингу деградационных процессов на основе анализа динамики структурных метрик архитектуры. Разработана модель, описывающая изменение архитектурного состояния во времени с использованием метрик связности, цикломатической сложности, плотности зависимостей и других количественно наблюдаемых параметров. Введено понятие архитектурной устойчивости, позволяющее оценивать способность системы сохранять структурную целостность при внешних и внутренних изменениях. Для оценки деградации применяется система правил на базе временных рядов метрик, а также предложен индикатор «точки архитектурного сдвига» – момента, после которого восстановление исходной структуры требует существенных усилий. Валидация модели проводится на основе симулированных и реальных данных из CI/CD конвейеров трех веб-систем различной сложности. Показано, что своевременное обнаружение архитектурной деградации позволяет повысить эффективность архитектурного управления, снизить риски отказов и оптимизировать долгосрочные затраты на сопровождение систем. Полученные результаты могут быть использованы для построения архитектурных дашбордов, а также при внедрении интеллектуальных систем поддержки решений в DevOps-среде.
Архитектурная деградация, архитектурное состояние, распределенные веб-приложения, метрики связности
Короткий адрес: https://sciup.org/140313570
IDR: 140313570 | УДК: 004.412 | DOI: 10.18469/ikt.2025.23.2.09
Method for Detecting Architectural Degradation in Distributed Web Systems Based on the Dynamics of Structural Metrics
The article is intended to discuss the problem of architectural degradation of distributed web applications under conditions of intensive development, CI/CD processes, and increasing technical debt volume. A formalized approach to identification and monitoring of degradation processes based on the analysis of the dynamics of structural metrics of the architecture is proposed. A model that describes the change in the architectural state over time using metrics of connectivity, cyclomatic complexity, density of dependencies, and other quantifiable parameters is developed. The concept of architectural resilience is introduced, which allows to assess the ability of a system to maintain structural integrity in the condition of external and internal changes. A system of rules based on time series metrics is used to assess degradation, and an indicator of the «architectural shift point» is proposed, as the moment emphasizing restoring of the original structure, that requires significant efforts. The model is validated based on simulated and real data obtained from the CI/CD pipeline. The model is validated using simulated and real data obtained from CI/CD pipelines of three web systems of varying complexity. It is shown that timely detection of architectural degradation allows to increase the efficiency of architectural management, reduce the risks of failures and optimize long-term costs of system maintenance. The results obtained can be used to design architectural dashboards, as well as in order to implement intelligent decision support systems in a DevOps environment.
Текст научной статьи Метод выявления архитектурной деградации в распределенных веб-системах на основе динамики структурных метрик
Современные распределенные веб-приложения, как правило, развиваются в условиях высокой изменчивости требований, коротких релизных циклов и постоянной эволюции [1] программной архитектуры. Использование CI/CD-практик и микро-сервисного подхода позволяет ускорить доставку функциональности, но одновременно порождает риски постепенной архитектурной деградации – ухудшения структуры системы, ее управляемости и сопровождаемости. В работе Романова В.Ю. [2] был сделан обзор и анализ объектно-ориентированных метрик.
Под архитектурной деградацией понимается накопление неблагоприятных изменений в архитектуре программной системы, приводящих к росту объема технического долга, усложнению связей между компонентами, нарушению модульности и снижению устойчивости при дальнейших изменениях [3]. Эти изменения, как правило, не фиксируются в явном виде и не сопровождаются сбоями, но со временем приводят к затруднениям в развитии, увеличению стоимости поддержки и снижению степени надежности.
На практике деградация архитектуры выявляется интуитивно или вручную, и зачастую лишь в моменты критических отказов или при необхо- димости масштабной реорганизации. Отсутствие формальных и автоматизированных подходов к мониторингу архитектурных трансформаций ограничивает возможности своевременного вмешательства и архитектурного контроля [4; 5].
В данной работе предлагается рассмотреть подход к выявлению архитектурной деградации на основе анализа динамики структурных метрик, таких как связность, плотность зависимостей, степень вложенности модулей и цикло-матическая сложность. Эти метрики позволяют численно описывать состояние архитектуры и отслеживать его изменение во времени. Применение архитектурных паттернов в построении чистой архитектуры веб-приложений играет ключевую роль в обеспечении гибкости, модульности и масштабируемости систем. Чистая архитектура основывается на разделении системы на слои с четко определенными обязанностями, что позволяет эффективно управлять зависимостями и минимизировать их влияние на изменения. Среди популярных архитектурных паттернов можно выделить MVC, Flux и паттерны инверсии зависимостей, которые помогают изолировать бизнес-логику от инфраструктурных деталей и внешних систем. Благодаря четкому разграничению логики и данных, разработчики могут легко тестировать, поддерживать и адаптировать
приложение к новым требованиям. Применение этих подходов приобретает особую важность в условиях постоянно меняющихся технологий и быстро растущих требований к веб-приложениям, позволяя системам оставаться актуальными и производительными на протяжении длительного времени [6]. Целью настоящего исследования является разработка формализованной модели наблюдения за архитектурным состоянием распределенных веб-систем, позволяющей выявлять признаки деградации и определить точки архитектурного сдвига – моменты перехода к неустойчивым состояниям [7]. Критерии устойчивости системы базируются на оценке динамики внутренних параметров, что позволяет предсказывать момент потери стабильности [8].
Научная новизна работы заключается:
– в построении метамодели архитектурной деградации на основе временных рядов метрик;
– в введении количественных показателей архитектурной устойчивости;
– в экспериментальной валидации модели на реальных данных CI/CD-процессов.
Практическая значимость заключается в возможности внедрения полученных методов в системы архитектурного мониторинга, в архитектурные интерактивные аналитические панели (дашборды), а также в системы поддержки архитектурных решений. Успешное проектирование программных систем определяется большим количеством факторов. В статье [9] кратко рассмотрено понятие архитектуры программного обеспечения, а также целях введения данного понятия в процесс разработки. Кроме того, в работах [10–12] анализируются критерии для оценки качества построенной архитектуры. По мере того, как современные системы, требующие больших вычислительных мощностей, становятся все более масштабными, возникает необходимость в разработке схем обнаружения сбоев, которые помогут предотвратить дорогостоящие простои системы. Перспективным направлением в создании таких схем является использование легкодоступных измерений характеристик производительности системы, таких как среднее количество обработанных запросов и размер очереди в единицу времени [13–15].
Структурные метрики и архитектурная деградация
Архитектурная деградация представляет собой постепенное ухудшение архитектуры программной системы в процессе ее жизненного цикла. В отличие от явных ошибок или сбоев, деградация носит кумулятивный характер и проявляется через:
– рост сложности и связанности модулей;
– снижение модульности и повторное использование кода;
– усложнение тестирования и сопровождения;
– замедление внесения изменений;
– снижение надежности системы при масштабировании.
Причинами деградации могут выступать: неконтролируемое расширение функциональности, частые изменения бизнес-логики, непродуманные архитектурные решения, устаревшие зависимости, а также отсутствие мониторинга архитектурного состояния.
Для своевременного обнаружения подобных тенденций необходимо количественное представление архитектуры и ее изменений, что достигается с помощью структурных метрик. Структурные метрики позволяют численно оценить архитектуру программной системы. Метрики, наиболее применимые в контексте веб-приложений, представлены в таблице 1.
Таблица 1. Структурные метрики
|
Метрика |
Описание |
|
CBO (Coupling Between Objects) |
Количество зависимостей между модулями/классами |
|
LCOM (Lack of Cohesion in Methods) |
Уровень связности внутри модуля |
|
CC (Cyclomatic Complexity) |
Количество линейно-независимых путей в коде |
|
DIT (Depth of Inheritance Tree) |
Глубина иерархии наследования |
|
Fan-in/Fan-out |
Количество входящих и исходящих зависимостей |
|
Dependency Density (DD) |
Отношение числа связей к количеству модулей |
|
Architecture Volatility (AV) |
Частота изменений архитектурных модулей во времени |
Эти метрики могут быть агрегированы на уровне подсистем, компонентов, сервисов и всей системы в целом. Они используются для построения архитектурных профилей системы в разные моменты времени.
Для выявления архитектурной деградации важно не только значение метрик в отдельный момент времени, но и динамика их изменения. Среди ключевых признаков деградации можно обозначить следующие:
– монотонный рост связности (CBO, DD);
– возрастающая сложность (CC);
– ухудшение связи между отдельными частями программного обеспечения (снижение когезии, LCOM);
– нестабильные участки архитектуры с высокой частотой изменений архитектурных модулей во времени.
Для анализа этих тенденций предлагается рассматривать метрики как временные ряды, собранные на базе регулярных измерений. Это позволяет выделить участки с ускоренным ростом нестабильности и точечно интерпретировать архитектурные риски.
Модель наблюдения и формализация архитектурного состояния
Для проведения количественного анализа деградации необходимо представить архитектуру веб-приложения как динамическую систему, состояние которой изменяется под воздействием внутренних и внешних факторов: коммитов, деплоев, миграций данных, модификаций зависимостей.
Обозначим архитектурное состояние системы в момент времени t как вектор:
A ( t ) = { т1 ( t ) , - , m i ( t ) , - , m n ( t ) } , где m i ( t ) - значение i- той структурной метрики в момент времени t;
n – число используемых метрик.
Эти значения могут собираться из инструментов статистического анализа кода, например, SonarQube.
Для формального анализа деградации введем понятие архитектурной устойчивости S ( t ) как функции от производных метрик:
S ( t ) = 1 - n X ' = ,
dm ( t )
dt
Чем выше скорость изменения метрик, тем ниже устойчивость системы. Значение S (t)e[0,1] интерпретируется как степень сохранности структуры. Приняты следующие оценки:
S > 0,9 - архитектура стабильна;
0,7 < S < 0,9 - нормальное состояние;
0,4 < S < 0,7 - начало деградации;
0,4 < S - архитектура не стабильна, риск нарушения функционирования.
Для практического применения производные берутся как разность метрик по временным шагам:
Введем понятие точки архитектурного сдвига t * , при которой суммарная норма изменений превышает порог s :
X n =J mi ( t * ) - m ( t * -Л t )l > s . (1)
Это означает, что архитектура перешла в иное качественное состояние, и продолжение работы без реструктуризации приведет к росту технического долга. Порог s может быть эмпирически определен на основе истории проекта или установленных SLA на архитектурное качество.
Алгоритм мониторинга состояния архитектуры строится по следующей схеме:
-
– сбор метрик при каждом CI-билде (автоматический сбор метрик при каждом запуске сборочного процесса);
-
- построение вектора состояния A ( t ) ;
-
- оценка устойчивости S ( t ) ;
– выявление точек сдвига t * , по выражению (1), если S < S min .
Экспериментальное исследование
Экспериментальная часть направлена на проверку применимости предложенной модели архитектурного мониторинга в условиях протекания реальных CI/CD-процессов. Основные задачи:
-
– собрать метрики архитектуры в динамике;
-
– оценить устойчивость архитектуры на протяжении нескольких спринтов;
-
– выявить участки с признаками деградации;
– сопоставить эти участки с реальными архитектурными изменениями и трудностями сопровождения.
Для этого была реализована система сбора и анализа архитектурных метрик с периодичностью один раз в сутки на протяжении 60 дней.
Эксперимент проводился на трех действующих веб-проектах (таблица 2).
dmi ( t ) dt
= т ( t )- mi ( t -д t ) ,
i = 1, n .
Во всех системах были включены автоматические сборы метрик: CBO, CC, LCOM, DD, AV.
Таблица 2. Исследуемые системы
|
Система |
Технологии |
Особенности |
|
ServiceHub |
Node.js, React, PostgreSQL |
Микросервисная архитектура, высокая частота релизов |
|
Edu |
Django, Vue.js |
Монолит с активной модульной декомпозицией |
|
MetricsBoard |
Go, TypeScript |
Легковесный веб-инструмент, тестовая среда |
Рисунок 1. Динамика архитектурных метрик и устойчивости
Результаты эксперимента приведены на рисунке 1.
В интервале [день 24–30] наблюдался резкий рост связности и сложности кода (CBO, CC). Устойчивость S(t) опустилась ниже 0,6 и была зафиксирована точка архитектурного сдвига.
Событие совпало с введением новых API-интеграций и расширением бизнес-логики без пересмотра архитектуры. В проекте Edu наблюдался медленный рост показателей AV и DD, связанный с накоплением нестабильных модулей. На 45-й день был проведен частичный рефакторинг, после чего устойчивость повысилась. Эксперимент показал, что:
– метрики могут использоваться как надежные индикаторы ухудшения архитектуры;
– временные ряды метрик дают основу для построения архитектурных сигналов;
– интеграция в CI/CD позволяет выявлять деградацию до появления критических дефектов.
Таким образом, предлагаемая модель мониторинга позволяет выстроить раннее предупреждение о деградации, что особенно важно для распределенных и масштабируемых веб-систем.
Заключение
В настоящей работе предложен формализованный подход к выявлению архитектурной деградации в распределенных веб-системах на основе анализа динамики структурных метрик. Архитектура представляется как динамическое состояние, описываемое вектором наблюдаемых метрик, таких как CBO, CC, LCOM, плотность зависимостей и архитектурная изменчивость.
Это позволяет отслеживать эволюцию архитектуры в контексте CI/CD-практик.
Была введена метрика архитектурной устойчивости S ( t ) , отражающая степень стабильности архитектурной структуры. Также определено понятие точки архитектурного сдвига – момента резкого ухудшения метрик, указывающего на необходимость вмешательства со стороны архитекторов и инженеров.
Экспериментальное исследование, проведенное на трех реальных веб-системах, подтвердило применимость предложенной модели для выявления признаков деградации. Построенные графики показали, что значительное снижение устойчивости связано с определенными событиями:
– не координированными архитектурными изменениями;
– увеличением плотности зависимостей;
– ростом сложности кода.
На основе получаемых графиков можно выстраивать автоматизированные оповещения и архитектурные отчеты.
Основные выводы:
-
1. Процесс архитектурной деградации может быть формально описан через совокупность метрик и отслеживаться во времени.
-
2. Вектор метрик позволяет представить архитектурное состояние как объект наблюдения.
-
3. Метрика устойчивости эффективно фиксирует моменты структурной нестабильности.
-
4. Интеграция модели в CI/CD процессы повышает качество сопровождения и управляемость архитектуры.
Предложенный подход может быть использован при построении архитектурных дашбордов, в системах анализа технического долга, а также как компонент в интеллектуальных подсистемах управления архитектурой программной системы.