Моніторинг + навантажувальне тестування = прогнозування та відсутність збоїв

ІТ-департаменту ВТБ кілька разів доводилося стикатися з позаштатними ситуаціями в роботі систем, коли навантаження на них багаторазово зростало. Тому виникла потреба розробити і випробувати модель, яка передбачала б пікове навантаження на критичні системи. Для цього IT-фахівці банку налаштували моніторинг, проаналізували дані та навчилися автоматизувати прогнози. Які інструменти допомогли спрогнозувати навантаження і чи вдалося їх оптимізувати роботу, ми розповімо в невеликій статті.

Моніторинг + навантажувальне тестування = прогнозування та відсутність збоїв

Проблеми з високонавантаженими сервісами виникають практично у всіх галузях, але фінансової сфери вони критичні. У годину X всі бойові одиниці повинні бути напоготові, а тому потрібно знати заздалегідь, що може статися і навіть визначати день, коли підскочить навантаження, і які системи з ним зіткнуться. Зі збоями потрібно боротися і запобігати їх, тому необхідність впровадження системи прогнозної аналітики навіть не обговорювалася. Потрібно було модернізувати системи з урахуванням даних моніторингу.

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

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

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

Отримавши перший позитивний результат, ми перейшли до автоматизації прогнозування. На свою чергу чекав ще десяток критичних ділянок.

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

У ВТБ запровадили систему моніторингу компанії MicroFocus. Звідти ми взяли збір даних для прогнозування, системи зберігання та системи генерації звітів. По суті, моніторинг уже був, залишалося лише додати метрики, модуль передбачення та створити нові звіти. Підтримує це рішення зовнішній підрядник "Техносерв", тому основні роботи з реалізації проекту лягли на його фахівців, але модель ми будували самостійно. Систему прогнозування зробили на основі Prophet – цей відкритий продукт розроблений у Facebook. Він простий у використанні та легко інтегрується із встановленими у нас засобами комплексного моніторингу та Vertica. Грубо кажучи, система аналізує графік завантаження та на основі рядів Фур'є робить його екстраполяцію. Є також можливість додавати деякі коефіцієнти щодня, взяті з нашої моделі. Метрики знімаються без участі людини, раз на тиждень прогноз автоматично перераховується, нові звіти надсилаються адресатам. 

Такий підхід виявляє основні циклічності, наприклад, річні, місячні, квартальні та тижневі. Виплата зарплат та авансів, періоди відпусток, свята та розпродажі – все це впливає на кількість звернень до систем. З'ясувалося, наприклад, деякі цикли накладаються друг на друга, а основне навантаження (75%) на системи дає Центральний федеральний округ. Юридичні та фізичні особи поводяться по-різному. Якщо навантаження від «фізиків» відносно рівномірно розподілене по днях тижня (це дуже багато невеликих транзакцій), то у компаній 99,9% припадає на робочий час, причому транзакції можуть бути короткими, а можуть оброблятися протягом декількох хвилин і навіть годин.

Моніторинг + навантажувальне тестування = прогнозування та відсутність збоїв

З отриманих даних визначаються тривалі тренди. Нова система виявила, що люди масово йдуть у ДПВ. Це всім відомо, але таких масштабів ми не очікували і спочатку в них не повірили: кількість звернень до офісів банку надзвичайно швидко знижується, і на стільки ж зростає кількість дистанційних транзакцій. Відповідно, навантаження на системи теж зростає і зростатиме далі. Наразі ми прогнозуємо навантаження до лютого 2020 року. Нормальні дні виходить передбачити з похибкою 3%, а пікові — з похибкою 10%. Це добрий результат.

Підводні камені

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

нові виклики

Поставлене в лоб завдання з передбачення піків було вирішено: пов'язаних з перевантаженням збоїв у банку не було з травня цього року, і нова система прогнозування зіграла в цьому не останню роль. Так, її виявилося недостатньо, і тепер банк хоче зрозуміти, наскільки небезпечні йому піки. Нам потрібні прогнози з використанням метрик від тесту навантаження, і приблизно для 30% критичних систем це вже працює, інші в процесі отримання прогнозів. На наступному етапі ми збираємося прогнозувати навантаження на системи не в бізнес-транзакціях, а в термінах IT-інфраструктури, тобто опустимося на нижчий шар. Крім того, нам потрібно повністю автоматизувати збір метрик та побудову прогнозів на їх основі, щоб не займатися вивантаженнями. У цьому немає нічого видатного — ми просто схрещуємо моніторинг та навантажувальне тестування відповідно до найкращих світових практик.

Джерело: habr.com

Додати коментар або відгук