Dział IT VTB wielokrotnie napotykał sytuacje awaryjne w pracy systemów, kiedy obciążenie na nie znacznie wzrastało. Dlatego pojawiła się potrzeba opracowania i przetestowania modelu, który przewidywałby szczytowe obciążenie krytycznych systemów. W tym celu specjaliści IT banku skonfigurowali monitorowanie, przeanalizowali dane i nauczyli się automatyzować prognozy. Jakie narzędzia pomogły w przewidywaniu obciążenia i czy udało się dzięki nim zoptymalizować pracę, opowiemy w krótkim artykule.

Problemy z wysokoobciążonymi serwisami występują praktycznie we wszystkich branżach, ale w finansowej są one krytyczne. W godzinie X wszystkie jednostki operacyjne muszą być gotowe, dlatego konieczne było wcześniejsze przewidzenie, co może się zdarzyć, a nawet określenie dnia, kiedy wzrośnie obciążenie i które systemy się z nim zmierzą. Należy walczyć z awariami i je zapobiegać, dlatego konieczność wdrożenia systemu analityki prognozującej nie była nawet przedmiotem dyskusji. Trzeba było zmodernizować systemy w oparciu o dane z monitoringu.
Analiza zrobiona na szybko
Projekt płacowy to jeden z najbardziej wrażliwych w przypadku awarii. Jest również najbardziej zrozumiały do prognozowania, dlatego zdecydowano się zacząć od niego. Z powodu wysokiej powiązania w momentach szczytowego obciążenia mogły mieć problemy także inne podsystemy, w tym zdalne usługi bankowe (DBO). Na przykład klienci, którzy otrzymali SMS o wpływie pieniędzy, zaczynali aktywnie z nich korzystać. Obciążenie w tym czasie mogło wzrosnąć o więcej niż rząd wielkości.
Pierwszy model prognozy stworzyliśmy ręcznie. Wzięliśmy dane za ostatni rok i policzyliśmy, w jakie dni spodziewane są maksymalne szczyty: na przykład 1., 15. i 25. dnia miesiąca, a także w ostatnich dniach miesiąca. Model ten wymagał poważnych nakładów pracy i nie dawał dokładnych prognoz. Niemniej jednak ujawnił wąskie gardła, w które należało dodać 'sprzęt', i pozwolił zoptymalizować proces przesyłania pieniędzy, umawiając się z kluczowymi klientami: aby nie wypłacać pensji 'jednym rzutem', transakcje z różnych regionów rozłożono w czasie. Teraz przetwarzamy je partiami, które infrastruktura IT banku jest w stanie 'przetrawić' bez awarii.
Otrzymując pierwszy pozytywny wynik, przeszliśmy do automatyzacji prognozowania. Czekało jeszcze dziesięć krytycznych obszarów.
Zintegrowane podejście
W VTB wdrożono system monitorowania firmy MicroFocus. Stamtąd wzięliśmy zbieranie danych do prognozowania, system przechowywania i system generowania raportów. W zasadzie monitoring już istniał, wystarczyło dodać metryki, moduł przewidywania i stworzyć nowe raporty. To rozwiązanie wspiera zewnętrzny kontrahent „Technoserv”, więc główne prace nad realizacją projektu spoczęły na jego specjalistach, ale model budowaliśmy samodzielnie. System prognozowania zrealizowano na bazie Prophet — ten otwarty produkt został opracowany w Facebooku. Jest prosty w użyciu i łatwo integruje się z posiadanymi przez nas narzędziami monitorowania kompleksowego oraz Vertica. Mówiąc w uproszczeniu, system analizuje krzywą obciążenia i na podstawie szeregów Fouriera dokonuje jej ekstrapolacji. Istnieje również możliwość dodawania pewnych współczynników na podstawie dni, wziętych z naszego modelu. Metryki są zbierane bez udziału człowieka, raz w tygodniu prognoza automatycznie jest przeliczana, a nowe raporty są wysyłane do odbiorców.
Takie podejście ujawnia główne cykle, na przykład roczne, miesięczne, kwartalne i tygodniowe. Wypłata wynagrodzeń i zaliczek, okresy urlopowe, święta i wyprzedaże — wszystko to wpływa na liczbę zapytań do systemów. Ustalono na przykład, że niektóre cykle nakładają się na siebie, a główny ciężar (75%) na systemy spoczywa na Centralnym Obwodzie Federalnym. Osoby prawne i fizyczne zachowują się inaczej. Jeśli obciążenie od „fizycznych” jest stosunkowo równomiernie rozłożone w ciągu tygodnia (to bardzo wiele małych transakcji), to w przypadku firm 99,9% przypada na godziny pracy, przy czym transakcje mogą być krótkie lub trwać kilka minut, a nawet godzin.

Na podstawie zebranych danych określane są długoterminowe trendy. Nowy system ujawnia, że ludzie masowo przenoszą się do DBO. To wszystkim wiadomo, ale nie spodziewaliśmy się takiej skali i na początku w to nie wierzyliśmy: liczba wizyt w bankowych oddziałach drastycznie szybko maleje, a ilość zdalnych transakcji rośnie w tym samym tempie. Odpowiednio, obciążenie systemów także wzrasta i będzie rosło dalej. Obecnie prognozujemy obciążenie do lutego 2020 roku. W normalnych dniach udaje się przewidzieć z błędem do 3%, a w szczytowych — z błędem do 10%. To dobry wynik.
Pułapki
Bez trudności, jak to zwykle bywa, się nie obyło. Mechanizm ekstrapolacji z wykorzystaniem szeregów Fouriera nieprzyjemnie przechodzi przez zero — wiemy, że w weekendy osoby prawne generują mało transakcji, ale moduł przewidywania podaje wartości dalekie od zera. Można by je poprawić wymuszenie, ale wolałem nie stosować takich łatek. Ponadto trzeba było rozwiązać problem bezbolesnego pobierania danych z systemów źródłowych. Regularne zbieranie informacji wymaga poważnych zasobów obliczeniowych, dlatego zbudowaliśmy szybkie cache z użyciem replikacji, otrzymując dane biznesowe już z replik. Brak dodatkowego obciążenia dla głównych systemów w takich przypadkach to kluczowy wymóg.
Nowe wyzwania
Postawione jasno zadanie przewidywania szczytów zostało rozwiązane: od maja tego roku nie było żadnych awarii związanych z przeciążeniem w banku, a nowy system prognozowania odegrał w tym niebagatelną rolę. Tak, okazało się, że to niewystarczające, a teraz bank chce zrozumieć, jak niebezpieczne są dla niego szczyty. Potrzebujemy prognoz z wykorzystaniem metryk z testów obciążeniowych, a dla około 30% krytycznych systemów już to działa, reszta jest w trakcie pozyskiwania prognoz. W następnym etapie zamierzamy prognozować obciążenie systemów nie w biznesowych transakcjach, ale w kategoriach infrastruktury IT, tzn. zejdziemy na niższy poziom. Ponadto musimy w pełni zautomatyzować zbieranie metryk i budowanie prognoz na ich podstawie, aby nie zajmować się ich eksportem. Nie ma w tym nic nadzwyczajnego — po prostu łączymy monitorowanie i testowanie obciążeniowe zgodnie z najlepszymi światowymi praktykami.
Źródło: habr.com
