Мониторинг + нагрузочное тестирование = прогнозирование и отсутствие сбоев

IT-департаменту ВТБ несколько раз приходилось сталкиваться с нештатными ситуациями в работе систем, когда нагрузка на них многократно возрастала. Поэтому появилась необходимость разработать и опробовать модель, которая предсказывала бы пиковую нагрузку на критичные системы. Для этого IT-специалисты банка настроили мониторинг, проанализировали данные и научились автоматизировать прогнозы. Какие инструменты помогли спрогнозировать нагрузку и получилось ли с их помощью оптимизировать работу, мы расскажем в небольшой статье.

b84d497f418f150e1cadeefa985dee7c.jpg
Проблемы с высоконагруженными сервисами возникают практически во всех отраслях, но для финансовой сферы они критичны. В час X все боевые единицы должны быть наготове, а потому требовалось знать заранее, что может случиться и даже определять день, когда подскочит нагрузка, и какие системы с ней столкнутся. Со сбоями нужно бороться и предотвращать их, поэтому необходимость внедрения системы прогнозной аналитики даже не обсуждалась. Нужно было модернизировать системы на основе данных мониторинга.

Аналитика на коленке


Зарплатный проект — один из самых чувствительных в случае сбоя. Он же наиболее понятен для прогнозирования, поэтому начать решили с него. Из-за высокой связности в моменты пиковых нагрузок могли испытывать проблемы и другие подсистемы, включая дистанционное банковское обслуживание (ДБО). Например, клиенты, обрадованные SMS о поступлении денег, начинали активно ими пользоваться. Нагрузка при этом могла подскакивать более чем на порядок. 

Первую модель для прогноза создавали вручную. Мы взяли выгрузку за последний год и посчитали, в какие дни ожидаются максимальные пики: например, 1-го, 15-го и 25-го числа, а также в последние дни месяца. Эта модель требовала серьезных трудозатрат и не давала точного прогноза. Тем не менее она выявила узкие места, куда нужно было добавить «железа», и позволила оптимизировать процесс перечисления денег, договорившись с якорными клиентами: чтобы не давать зарплату «залпом», транзакции из разных регионов разнесли по времени. Теперь мы обрабатываем их частями, которые IT-инфраструктура банка способна «прожевать» без сбоев.

Получив первый положительный результат, мы перешли к автоматизации прогнозирования.Своей очереди ждал еще десяток критичных участков.

Комплексный подход


В ВТБ внедрили систему мониторинга компании MicroFocus. Оттуда мы взяли сбор данных для прогнозирования, систему хранения и систему генерации отчетов. По сути, мониторинг уже был, оставалось только добавить метрики, модуль предсказания и создать новые отчеты. Поддерживает это решение внешний подрядчик «Техносерв», поэтому основные работы по реализации проекта легли на его специалистов, но модель мы строили самостоятельно. Систему прогнозирования сделали на основе Prophet — этот открытый продукт разработан в Facebook. Он прост в использовании и легко интегрируется с установленными у нас средствами комплексного мониторинга и Vertica. Грубо говоря, система анализирует график загрузки и на основе рядов Фурье делает его экстраполяцию. Есть также возможность добавлять некие коэффициенты по дням, взятые из нашей модели. Метрики снимаются без участия человека, раз в неделю прогноз автоматически пересчитывается, новые отчеты рассылаются адресатам. 

Такой подход выявляет основные цикличности, например, годовые, месячные, квартальные и недельные. Выплата зарплат и авансов, периоды отпусков, праздники и распродажи — все это влияет на количество обращений к системам. Выяснилось, например, что некоторые циклы накладываются друг на друга, а основную нагрузку (75%) на системы дает Центральный федеральный округ. Юридические и физические лица ведут себя по-разному. Если нагрузка от «физиков» относительно равномерно распределена по дням недели (это очень много небольших транзакций), то у компаний 99,9% приходится на рабочее время, притом транзакции могут быть короткими, а могут обрабатываться в течение нескольких минут и даже часов.

70e6ef0108827fad2870f63aa380e575.jpg

На основании полученных данных определяются длительные тренды. Новая система выявила, что люди массово уходят в ДБО. Это всем известно, но таких масштабов мы не ожидали и поначалу в них не поверили: количество обращений в офисы банка чрезвычайно быстро снижается, и ровно на столько же растет количество дистанционных транзакций. Соответственно, нагрузка на системы тоже растет и будет расти дальше. Сейчас мы прогнозируем нагрузку до февраля 2020 года. Нормальные дни получается предсказать с погрешностью в 3%, а пиковые — с погрешностью в 10%. Это хороший результат.

Подводные камни


Без трудностей, как водится, не обошлось. Механизм экстраполяции с использованием рядов Фурье плохо переходит через ноль — мы знаем, что в выходные юридические лица генерируют мало транзакций, но модуль предсказания выдает далекие от нуля значения. Можно было поправить их принудительно, но костыли — не наш метод. Кроме того, пришлось решить проблему безболезненного съема данных с систем-источников. Регулярный сбор информации требует серьезных вычислительных ресурсов, поэтому мы построили быстрые кэши с использованием репликации, получаем бизнес-данные уже с реплик. Отсутствие дополнительной нагрузки на мастер-системы в таких случаях — блокирующее требование.

Новые вызовы


Поставленная в лоб задача по предсказанию пиков была решена: связанных с перегрузкой сбоев в банке не было с мая этого года, и новая система прогнозирования сыграла в этом не последнюю роль. Да, ее оказалось недостаточно, и теперь банк хочет понять, насколько опасны для него пики. Нам нужны прогнозы с использованием метрик от нагрузочного тестирования, и примерно для 30% критичных систем это уже работает, остальные в процессе получения прогнозов. На следующем этапе мы собираемся прогнозировать нагрузку на системы не в бизнес–транзакциях, а в терминах IT-инфраструктуры, т. е. опустимся на слой ниже. Кроме того, нам нужно полностью автоматизировать сбор метрик и построение прогнозов на их основе, чтобы не заниматься выгрузками. В этом нет ничего выдающегося — мы просто скрещиваем мониторинг и нагрузочное тестирование в соответствии с лучшими мировыми практиками.

© Habrahabr.ru