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



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

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


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

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

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

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


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

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



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

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


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

Новые вызовы


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

Комментарии (5)


  1. keydon2
    18.10.2019 17:51

    Не пробовали использовать нейросети для прогноза?


  1. pyrk2142
    19.10.2019 00:34
    +2

    IT-департаменту ВТБ несколько раз приходилось сталкиваться с нештатными ситуациями в работе систем, когда нагрузка на них многократно возрастала.
    ВТБ умеет мастерски создавать себе сложности, потом с ними бороться, но так, чтобы клиенты страдали. Например, недавняя шикарная попытка отжать мили и бонусы у клиентов, люди побежали тратить, к концу месяца в bonus.vtb.ru почти не осталось доступных товаров, бронирование отелей и авиабилетов почти лежало, сайт тоже, люди пытались купить хоть что-то, чтобы сохранить мили. Сотрудники смогли только признать проблемы, ни извинений, ни компенсаций (хотя о каких компенсациях может идти речь, это же российский банк, лол), ничего.

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


    1. trueMoRoZ
      19.10.2019 06:57

      пишет маркетолог, наверное)


  1. olehorg
    19.10.2019 13:07

    детская уверенность что тьі можешь что-то прогнозировать с точностью до 3% и оптимизация ресурсов под свои прогнозы делает вас беззащитными перед любым черным лебедем.


  1. ggo
    21.10.2019 09:58

    Сложилось впечатление, что люди с которых спрашивают за наличие мощностей, совершенно никак не общаются с людьми, которые занимаются бизнесом.
    Соответственно первые никак не могут получить из рук вторых тренды по основным направлениям бизнеса (типа количество активных карт, среднее кол-во онлайн операции по картам за период, кол-во активных пользователей интернет-банкинга и т.д.) И не могут спрогнозировать потребности по мощностям. Чтобы выкрутиться, анализируют те тренды, которые у них есть, т.е. тренды потребления мощностей по бизнес-направлениям. Это конечно лучше чем ничего, но при таком подходе всегда придется догонять, либо держать избыток мощностей. Либо все-таки начать общаться первым и вторым.