
Проблемы с высоконагруженными сервисами возникают практически во всех отраслях, но для финансовой сферы они критичны. В час X все боевые единицы должны быть наготове, а потому требовалось знать заранее, что может случиться и даже определять день, когда подскочит нагрузка, и какие системы с ней столкнутся. Со сбоями нужно бороться и предотвращать их, поэтому необходимость внедрения системы прогнозной аналитики даже не обсуждалась. Нужно было модернизировать системы на основе данных мониторинга.
Аналитика на коленке
Зарплатный проект — один из самых чувствительных в случае сбоя. Он же наиболее понятен для прогнозирования, поэтому начать решили с него. Из-за высокой связности в моменты пиковых нагрузок могли испытывать проблемы и другие подсистемы, включая дистанционное банковское обслуживание (ДБО). Например, клиенты, обрадованные SMS о поступлении денег, начинали активно ими пользоваться. Нагрузка при этом могла подскакивать более чем на порядок.
Первую модель для прогноза создавали вручную. Мы взяли выгрузку за последний год и посчитали, в какие дни ожидаются максимальные пики: например, 1-го, 15-го и 25-го числа, а также в последние дни месяца. Эта модель требовала серьезных трудозатрат и не давала точного прогноза. Тем не менее она выявила узкие места, куда нужно было добавить «железа», и позволила оптимизировать процесс перечисления денег, договорившись с якорными клиентами: чтобы не давать зарплату «залпом», транзакции из разных регионов разнесли по времени. Теперь мы обрабатываем их частями, которые IT-инфраструктура банка способна «прожевать» без сбоев.
Получив первый положительный результат, мы перешли к автоматизации прогнозирования.Своей очереди ждал еще десяток критичных участков.
Комплексный подход
В ВТБ внедрили систему мониторинга компании MicroFocus. Оттуда мы взяли сбор данных для прогнозирования, систему хранения и систему генерации отчетов. По сути, мониторинг уже был, оставалось только добавить метрики, модуль предсказания и создать новые отчеты. Поддерживает это решение внешний подрядчик «Техносерв», поэтому основные работы по реализации проекта легли на его специалистов, но модель мы строили самостоятельно. Систему прогнозирования сделали на основе Prophet — этот открытый продукт разработан в Facebook. Он прост в использовании и легко интегрируется с установленными у нас средствами комплексного мониторинга и Vertica. Грубо говоря, система анализирует график загрузки и на основе рядов Фурье делает его экстраполяцию. Есть также возможность добавлять некие коэффициенты по дням, взятые из нашей модели. Метрики снимаются без участия человека, раз в неделю прогноз автоматически пересчитывается, новые отчеты рассылаются адресатам.
Такой подход выявляет основные цикличности, например, годовые, месячные, квартальные и недельные. Выплата зарплат и авансов, периоды отпусков, праздники и распродажи — все это влияет на количество обращений к системам. Выяснилось, например, что некоторые циклы накладываются друг на друга, а основную нагрузку (75%) на системы дает Центральный федеральный округ. Юридические и физические лица ведут себя по-разному. Если нагрузка от «физиков» относительно равномерно распределена по дням недели (это очень много небольших транзакций), то у компаний 99,9% приходится на рабочее время, притом транзакции могут быть короткими, а могут обрабатываться в течение нескольких минут и даже часов.

На основании полученных данных определяются длительные тренды. Новая система выявила, что люди массово уходят в ДБО. Это всем известно, но таких масштабов мы не ожидали и поначалу в них не поверили: количество обращений в офисы банка чрезвычайно быстро снижается, и ровно на столько же растет количество дистанционных транзакций. Соответственно, нагрузка на системы тоже растет и будет расти дальше. Сейчас мы прогнозируем нагрузку до февраля 2020 года. Нормальные дни получается предсказать с погрешностью в 3%, а пиковые — с погрешностью в 10%. Это хороший результат.
Подводные камни
Без трудностей, как водится, не обошлось. Механизм экстраполяции с использованием рядов Фурье плохо переходит через ноль — мы знаем, что в выходные юридические лица генерируют мало транзакций, но модуль предсказания выдает далекие от нуля значения. Можно было поправить их принудительно, но костыли — не наш метод. Кроме того, пришлось решить проблему безболезненного съема данных с систем-источников. Регулярный сбор информации требует серьезных вычислительных ресурсов, поэтому мы построили быстрые кэши с использованием репликации, получаем бизнес-данные уже с реплик. Отсутствие дополнительной нагрузки на мастер-системы в таких случаях — блокирующее требование.
Новые вызовы
Поставленная в лоб задача по предсказанию пиков была решена: связанных с перегрузкой сбоев в банке не было с мая этого года, и новая система прогнозирования сыграла в этом не последнюю роль. Да, ее оказалось недостаточно, и теперь банк хочет понять, насколько опасны для него пики. Нам нужны прогнозы с использованием метрик от нагрузочного тестирования, и примерно для 30% критичных систем это уже работает, остальные в процессе получения прогнозов. На следующем этапе мы собираемся прогнозировать нагрузку на системы не в бизнес–транзакциях, а в терминах IT-инфраструктуры, т. е. опустимся на слой ниже. Кроме того, нам нужно полностью автоматизировать сбор метрик и построение прогнозов на их основе, чтобы не заниматься выгрузками. В этом нет ничего выдающегося — мы просто скрещиваем мониторинг и нагрузочное тестирование в соответствии с лучшими мировыми практиками.
Комментарии (5)
pyrk2142
19.10.2019 00:34+2IT-департаменту ВТБ несколько раз приходилось сталкиваться с нештатными ситуациями в работе систем, когда нагрузка на них многократно возрастала.
ВТБ умеет мастерски создавать себе сложности, потом с ними бороться, но так, чтобы клиенты страдали. Например, недавняя шикарная попытка отжать мили и бонусы у клиентов, люди побежали тратить, к концу месяца в bonus.vtb.ru почти не осталось доступных товаров, бронирование отелей и авиабилетов почти лежало, сайт тоже, люди пытались купить хоть что-то, чтобы сохранить мили. Сотрудники смогли только признать проблемы, ни извинений, ни компенсаций (хотя о каких компенсациях может идти речь, это же российский банк, лол), ничего.
И меньше, чем через месяц, выходит статья от «мастеров по нагрузке». Перед клиентами не стыдно, понятное дело, но самоуважение у инженеров должно быть, чтобы такое не писать.
olehorg
19.10.2019 13:07детская уверенность что тьі можешь что-то прогнозировать с точностью до 3% и оптимизация ресурсов под свои прогнозы делает вас беззащитными перед любым черным лебедем.
ggo
21.10.2019 09:58Сложилось впечатление, что люди с которых спрашивают за наличие мощностей, совершенно никак не общаются с людьми, которые занимаются бизнесом.
Соответственно первые никак не могут получить из рук вторых тренды по основным направлениям бизнеса (типа количество активных карт, среднее кол-во онлайн операции по картам за период, кол-во активных пользователей интернет-банкинга и т.д.) И не могут спрогнозировать потребности по мощностям. Чтобы выкрутиться, анализируют те тренды, которые у них есть, т.е. тренды потребления мощностей по бизнес-направлениям. Это конечно лучше чем ничего, но при таком подходе всегда придется догонять, либо держать избыток мощностей. Либо все-таки начать общаться первым и вторым.
keydon2
Не пробовали использовать нейросети для прогноза?