инженер-программист, Qase Inc, РФ, г. Москва
БЭКТЕСТИНГ И МОДЕЛИРОВАНИЕ ВЫСОКОНАГРУЖЕННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ
АННОТАЦИЯ
Современные высоконагруженные системы требуют алгоритмических, модельных подходов и учета хаоса в системе, поэтому бэктестинг является для этого эффективным инструментом. Цель статьи – системный анализ аспектов бэктестинга в риск-управлении высоконагруженными системами и разработка математической модели для идентификации пороговых, риск-значений. Используются методы анализа-синтеза, идентификации, моделирования, дифференциальных уравнений и оптимального управления. Рассмотрены системные и предметные цели бэктестинга. Основные результаты работы: 1) сравнительный анализ различных подходов к бэктестингу и его возможностей; 2) приведена структура высоконагруженной системы, требования к ее инфраструктуре и этапы проектирования системы; 3) предложена формализация (модель) высоконагруженной системы в виде синтаксического кортежа. Акцентировано направление дальнейшего исследования модели и применения гибких моделей, а также возможность практического использования.
ABSTRACT
Modern high-load systems require algorithmic, model-based approaches and accounting for chaos in the system, so backtesting is an effective tool for this. The purpose of the article is a systematic analysis of backtesting aspects in risk management of high-load systems and the development of a mathematical model for identifying threshold, risk values. Methods of analysis-synthesis, identification, modeling, differential equations and optimal control are used. Systemic and substantive goals of backtesting are considered. Main results of the work:
1) comparative analysis of various approaches to backtesting and its capabilities;
2) the structure of the high-load system, the requirements for its infrastructure and the stages of system design are given;
3) a formalization (model) of a high-load system in the form of a syntactic tuple is proposed. The direction of further research of the model and application of flexible models is emphasized, as well as the possibility of practical use.
Ключевые слова: бэктестинг, высоконагруженная система, моделирование, устойчивость, идентификация
Keywords: backtesting, high-load system, modeling, stability, identification
Введение
«Высоконагруженные системы» (HLS, HighLoad Systems) – программно-технологические системы для обслуживания запросов мощных пользовательских групп и кластеров серверов (в принципе, одного сервера). Примеры HLS – Amazon, TikTok, Yandex, Netflix и др.
В современных высоконагруженных и волатильных системах (например, финансовых) и необходимости алгоритмических (модельных) подходов к управлению хаос-системами, бэктестинг стал эффективным инструментарием. Он позволяет проверить эффективность модели и подхода при нехватке данных, привлекая компьютерное моделирование и минимизируя риски.
Корректный бэктестинг потребует качества данных, критериев оценки точности (релевантности).
Целью работы является системный анализ теоретико-практических аспектов бэктестинга применительно к высоконагруженным системам и разработка соответствующей структуры и описания системы.
Материалы и методы исследования
Качество тестирования модели можно проверить прямым методом (тестированием), например, с помощью подготовленных заранее тестов и критериев оценки адекватности (релевантности) модели. Но в последнее время, в связи с развитием хаос-моделирования, используется обратное тестирование или бэктестинг (backtesting), «тестирование с использованием предыстории».
Задачи бэктестинга системно отличны от задач риск-управления по качеству (точности, полноте), учету потенциальных рисков и механизмам стресс-тестирования, учета предыстории рисков и др. Поэтому необходимо итерационное, обратное тестирование, в частности:
1) оценка точности, производительности, гипотез модели и др.;
2) идентификация параметров системы (процесса), устойчивости и др.
Особенно эффективно бэктестирование в риск-менеджменте, в частности, управлении рыночным риском VaR (Value at Risk) [1, с.2042] или рисковой стоимостью, стоимостью риск-ситуации.
Бэктестинг может продемонстрировать неадекватность и негибкость модели, недостаточность проведенного прямого тестирования или использованных тестов, данных. Например, он поможет оценить VaR для фондового рынка, рыночные флуктуации и другие важные индикаторы финансового риск-менеджмента.
Эффективность бэктестинга проявляется в анализе трендов, например, на основе метода скользящих средних.
При использовании экспоненциально взвешенной скользящей средней EWMA (Exponentially Weighted Moving Average) волатильность можно оценить
,
где
– коэффициент взвешивания (например, 0,95),
– волатильность текущего момента n,
– процентное изменение цены текущего дня.
Есть и автоматизированное реагирование (SOAR), позволяющее системе стать независимой от пиковых нагрузок, кризисов.
Бэктестинг проводится с использованием различных подходов:
1) до достижения устойчивости (волатильности) модели;
2) до достижения критического уровня сбоев, неустойчивости модели;
3) до достижения первого сбоя (неустойчивости) модели;
4) по разработанному плану, набору тестов и классификации модели (например, на группы «неустойчивые», «устойчивые» или «красная», «желтая», «зеленая» группа);
5) по заданному критерию (функционалу) адекватности, устойчивости, например, проценту сбоев во всем проведенном тестировании и др.
Из сказанного выше можно заключить, что методы бэктестирования недостаточно формализуемы (т.е. для верификации не годятся).
Применение бэктестинга не всегда эффективно и может ввести в заблуждение, так как реальные микроэкономические условия не всегда адекватно воспроизводимы. Качество и репрезентативность данных предыстории и используемая модель прогноза (тестирования) – главные факторы успеха бэктестинга.
В высоконагруженных финансовых системах бэктестинг должен дополняться форвард-тестингом с учетом адаптации к условиям реального рынка. Бэк- и форвард-тестинг являются ключевыми этапами имитации торговой стратегии, но принципиально различны по методам, целям и оценкам достоверности результатов. Например, бэктестинг помогает отсекать прямые убыточные стратегии и находить потенциально подходящие, а форвард-тестинг выявляет скрытые в истории.
Высокие нагрузки приводят к длительной обработке запросов с возможной потерей данных и рисками отказов системы. Необходимо тщательно проектировать и моделировать архитектуру инфологической системы, управлять данными, применять кеширование и масштабирование, обеспечить эффективный поиск с помощью высоконагруженных приложений [2, с.153]. Например, кеширование снизит нагрузку с ключевого сервиса запросов и распределит запросы по микросервисам.
В высоконагруженной информационно-логической системе или системе, в которой тысячи-миллионы пользователей и запросов, важен релевантный выбор процедуры балансировки. Основной ее целью является обеспечение гарантированного и обеспеченного ресурсами отклика системы, предотвращение нежелательной перегрузки потоков, ресурсов требуемых вычислительной системой.
Высоконагруженные системы часто называют еще data-intensive systems, имея в виду нагруженность по данным, системы мониторинговые и аналитические, распределенные [3, с.79].
Нагружение рассматриваемо как нагружение по данным (метаданным), инструментарию, доступу, требованиям и др.
На рисунке 1 приведена структура высоконагруженной системы.
/Kolpakov.files/image005.png)
/Kolpakov.files/image006.png)
/Kolpakov.files/image007.png)
Рисунок 1. Структура и задачи высоконагруженной системы
Чтобы стать устойчивым, «носителю» HLS следует иметь инфраструктуру:
1) значительного потенциала мощности;
2) независимого аудита системы;
3) динамически и адаптивно оптимизируемую для бизнес-процессов;
4) непрерывного мониторинга;
5) нагрузочного тестирования, сценарного бэктестинга;
6) соблюдающую принципы горизонтального масштабирования, отказоустойчивости, распределенного доступа, микросервисной архитектуры и др.
Есть международный индекс APDEX (Application Performance inDEX) производительности приложений, который связан с долей «довольных» пользователей.
Пример. Логистическая компания «Деловые Линии» провела нагрузочное тестирование около 10000 пользователей и показала максимум APDEX, равный 0,99.
Решения для HLS должны быть оперативно масштабируемые, высокопроизводительные.
Высоконагруженная система как сложная система имеет динамически развивающуюся пользовательскую базу. Часто в ней наблюдается динамический хаос, поэтом может потребоваться хаос-моделирование [4, с.118].
Балансировка потребуется крупным организациям, например, телекоммуникационным, банковским [5, с.80] и др.
Эта процедура должна соответствовать архитектуре системы: централизованной (монолитной) или распределенной (сервис-ориентированной) [6, с.348]. Важно учитывать и выстраивать релевантную стратегию миграции кода из централизованной архитектуры в распределенную, например, микросервисную [7, с.66].
В микросервисной архитектуре приложение формируется из небольших и автономных сервисов, которые решают конкретные бизнес-задачи. В событийно-ориентированной архитектуре каждая компонента системы является актором, обменивающийся событиями, например, управления, контроля или обработки [8, c.648].
В HLS следует использовать кэширование, например, фиксируя временно в ОП ответ на запрос, что снимет нагрузку при ответе на подобный запрос. Здесь «обратный» подход важен.
Пример. Код нужно писать, чтобы была обратная совместимость: «сверху – вниз», в частности, чтобы обрабатывались данные старого и нового формата, без переименования полей. Для этого используемы, например, внутренние облака (как в Яндекс) и контейнеры.
Проектирование систем класса HLS – процесс поэтапный.
Масштабируемость системы определяется масштабируемостью самого «слабого» (уязвимого) его элемента, подсистемы [9, с.38].
Аппаратно-техническая поддержка HLS формируется из оборудования (hardware) класса:
1) совместного пользования (shared);
2) выделенного (dedicated);
3) совместно-размещенного (co-located);
4) собственного хостинга (self-hosting).
При высокой нагруженности данными приложения (DIA, Data-Intensive Applications [10, с.50]), следует отслеживать непрерывно требуемый уровень функциональности – хранения, использования, модификации, поиска, фильтрации и др., а также параметры связанности, размерности, актуальности, частоты обращений (обновлений) и др.
Здесь необходимо привлекать как принципы каскадной (водопадной, waterfall) методологии, так итерационной (Agile, Scrum), открытых кодов и библиотек, фреймворков (Google, Amazon и др.).
Используются паттерны (шаблоны) архитектур:
1) сервис-ориентированной;
2) асинхронной;
3) конвейерной;
4) отложенных вычислений;
5) «толстого» клиента;
6) шардинга;
7) кластеризации;
8) хаос-моделирования (хаос-тестирования);
9) параллельности;
10) кэширования и др.
Популярен шаблон EDA (Event Driven Architecture) распределенной и асинхронной архитектуры с высокой масштабируемостью, достаточной гибкостью.
Микросервисом публикуется событие, например, заказ, а другие микросервисы ведут подписку на него (если необходимо, интересно).
Важно выделять и балансировать нагрузки, моделировать и прогнозировать высоконагруженные системы.
Мониторинг поведения высоконагруженной системы учитывает взаимосвязи событий, в том числе, нештатные, а также требует автоматизации (интеллектуализации), минимизации рисков несанкционированного доступа к выводам и данным мониторинга. Внутренний аудит с использованием риск-менеджмента воздействий на HLS необходим из-за усиления нечеткости в HLS, неэффективности политики безопасности, некомпетентности персонала, волновых атак с ростом амплитуды и др.
Для каждой архитектуры задаем свой балансировщик нагрузки и определяем набор доступных для него нагрузок или свой эволюционный оператор нагрузки.
Например, для серверной системы можно это сделать с помощью PID (Process ID, уникальный идентификатор активного процесса) [11, с.230].
Высоконагруженную систему можно формализовать моделью, кортежом вида:
HLS=<Ar, Pr, Rl, Sc, Mn, Cs, Ct, Rd, Mt>,
где Ar – состояние доступа (availability), Pr – состояние производительности (performance), Rl – состояние надежности (reliability), Sc – состояние масштабируемости (scalability), Mn – состояние управляемости (manageability), Cs – состояние стоимости (cost), Ct – состояние согласованности (consistency), Rd – состояние избыточности (redundancy), Mt – состояние сопровождаемости (maintainability).
Каждый фактор состояния может влиять на другой, например, повышение производительности (мощности серверной системы) может повысить управляемость и стоимость.
В такой системе, для запроса к информационной системе можно применять специальные алгоритмы балансировки.
Управление высоконагруженной системой, особенно, адаптивное базируется на учете потенциала нагружения или эффекта «насыщения» системы в области допустимого управления. Такие задачи рассматривались в работе [12, с.75].
Аналогично поступим для
– системного ресурса (информационно-логического) в момент времени t и вектора факторов
. Вектор
– вектор управляющих воздействий.
Рассмотрим простой динамический вариант
, для которого управление
и модель имеет вид:
/Kolpakov.files/image013.png)
/Kolpakov.files/image014.png)
где
– точка «нагружения».
Задача управления: минимизировать по
функционал
) учитывая траекторию, если, например, как в задаче О. Больца,
,
где g(u,t) – заданная функция.
Если g=0, получаем задачу Лагранжа.
Эффективность алгоритма балансировки зависит от реальных условий, в частности, производительности сервера (серверной системы), периода обработки запроса, но, особенно, от загруженности серверов.
Заключение
Проведенный анализ бэктестинга и стратегий риск-управления в высоконагруженных системах позволяет оценивать эффективность различных подходов к оценке устойчивости, надежности системы, ее чувствительность к изменениям среды.
Предложенный подход к моделированию таких систем позволит оценить потенциал нагружения (устойчивости) системы.
Это имеет практическое значение в риск-менеджменте, при выявлении уязвимостей системы с помощью бэктестинга.
Перспективно дальнейшее исследование интегральных моделей и применение гибких моделей.
Список литературы:
- Su Q., Qin Z., Peng L., Qin G. Efficiently backtesting conditional Value-at-Risk and conditional Expected Shortfall / Q. Su, Z. Qin, L. Peng, G. Qin // J. of the American Statistical Association. – 2021. – Vol. 116. – No. 536. – P. 2041–2052.
- Смирнов Н. А., Червяков Л. М., Бычкова Н. А. Повышение эффективности поисковых запросов высоконагруженных приложений / Н. А. Смирнов, Л. М. Червяков, Н. А. Бычкова // Известия Тульского госуниверситета. Технические науки. – 2025. – Вып. 2. – С. 152-158. DOI: 10.24412/2071-6168-2025-2-152-153
- Casale G., Ardagna D., Artac M., et al / G. Casale, D. Ardagna, M. Artac, et al. Dice: quality-driven development. In: «Proceedings of the 7th International Workshop on Modeling in Software Engineering». IEEE Press. – 2015. – P.78-83.
- Li Y., Wang L. Chaos in a duopoly model of technological innovation with bounded rationality based on constant conjectural variation / Y. Li, L. Wang // Chaos, Solution and Fractals. – 2019. – No.120. – P. 116-126. DOI: 10.1016/j.chaos.2018.11.038
- Рудометкин В. А. Проектирование высоконагруженных систем / В. А. Рудометкин // Труды ИСП РАН. – 2020. – Т. 32. – Вып. 6. – С. 79-86. DOI10.15514/ISPRAS–2020–32(6)–6
- Архипцев Е. Д., Мокрецов Н. С. Методы балансировки нагрузки в информационных системах / E. Д. Архипцев, Н. С. Мокрецов // Известия ВУЗов. Сер: Приборостроение. – 2024. – Т.67. – №4. – С. 345–351. DOI:10.17586/0021-3454-2024-67-4-345-351.
- Радостаев Д. К., Никитина Е. Ю. Стратегия миграции программного кода из монолитной архитектуры в микросервисы / Д. К. Радостаев, Е. Ю. Никитина // Вестник Пермского университета. Сер: Математика. Механика. Информатика. – 2021. – Вып. 2(53). – С. 65–68. DOI: 10.17072/1993-0550-2021-2-65-68
- Татарникова Т. М., Архипцев Е. Д., Кармановский Н. С. Определение размера кластера и числа реплик высоконагруженных систем / Т. М. Татарникова, Е. Д. Архипцев, Н. С. Кармановский // Известия вузов. Приборостроение. – 2023. – Т. 66. – № 8. – С. 646-651. DOI: 10/17586/0021-3454-2023-66-8-646-651
- Амиров С. Н. Особенности разработки высоконагруженных систем / С. Н. Амиров // Intern. Journal of Open Information Technologies. –2020. –Vol. 8. – No.8. – Р. 37-45.
- Филисов Д. А. Архитектура высоконагруженных приложений / Д. А. Филисов // Universum: техн. науки. Эл. науч. журн. – 2023. – №10(115). – С.49-54. URL: https://7universum.com/ru/tech/archive/item/16138
- Malavika R., Volarmathi M. L. Adaptive Server Load Balancing in SDN Using PID Neural Network Controller / R. Malavika, M. L. Volarmathi // Computer Systems Science & Engineering. – 2022. – Vol.42. – No.1. – P. 229–245. DOI: 10.32604/csse.2022.020947
- Казиев В. М. Казиев К. В. Эволюционные модели с насыщением / В. М. Казиев, К. В. Казиев / Труды 13-ой межвузовской конференции «Математическое моделирование и краевые задачи». – Самара. – 2003. –C. 75-77.