Содержание:
Кеширование — это высокоскоростной уровень хранения. В кеше хранят копии всей информации из баз данных или из их реплик. Благодаря этому пользователь мгновенно получает ответ на свой запрос. Например, когда он обновляет информацию по своим продуктам в приложении банка, запрос отправляется не в базу данных, а в кеш. Если вдруг база перестанет работать, то вся информация есть в кеше: пользователь не почувствует, что в банке случился сбой.
Рассказываем, какой вид кеширования используют в Газпромбанке и какие задачи с помощью него решают. Делаем это вместе с проджект-менеджером Маргаритой Артеменко и куратором по направлению системного анализа Максимом Шейко.
Зачем кешировать?
Кеширование применяют для решения следующих задач, которые стоят перед автоматизированными системами:
- Повышение SLA предоставления ответа клиенту.
- Снижение нагрузки на банковские учетные системы.
Поясним детальнее. Вся информация по клиентам, сотрудникам и отделениям хранится в автоматизированной банковской системе (АБС). Данные, которые запрашивают часто, помещают в отдельное хранилище — кеш. Это помогает быстрее отвечать на популярные запросы пользователей и банковских сотрудников. Например, благодаря кешу банковские операционисты, которые рассматривают клиентские заявки, сразу узнают, как изменились процентные ставки по кредитам.
За день кеш обрабатывает примерно 1 млн запросов и отвечает на них в среднем за 25 миллисекунд. Если бы клиенты мобильного банка обращались напрямую в АБС, то они получали бы информацию медленнее в 20–100 раз в зависимости от типа запрошенных данных и нагрузки на базу.
Какую систему кеширования используют в Газпромбанке?
Газпромбанк использует IMDG (In-Memory Data Grid) — хранилище, которое состоит из механизма синхронизации и платформы для управления базами данных.
Механизм забирает информацию из АБС, создает реплики баз данных и передает их в оперативную память. Благодаря такому алгоритму кеш может получать 3 000 запросов в секунду и обрабатывать их за 0,2 секунды.
Платформа состоит из собственной базы данных и сервера приложений на языке программирования Lua. Это преимущество IMDG: на Lua администратор сам настраивает логику, по которой будет храниться и передаваться информация.
В кеш Газпромбанка из нескольких баз попадает информация:
- о вкладах, картах, счетах и кредитах;
- курсы валют;
- ИНН и КПП филиалов и данные по отделениям банка.
Как работает кеширование?
В кеш актуальная информация попадает двумя способами:
- Через механизм в репликах, который передает новые данные в IMDG. Кеш обращается в базы данных, вычитывает новые и измененные данные через короткие интервалы времени. Этим он обеспечивает быстрое получение изменений, например по остаткам на счетах клиентов.
- Через подписку на топик с изменениями. В этом случае кеш получает актуальные данные от источника мгновенно, как только информация обновилась. Например, клиент банка хочет посмотреть курс валют. Он обновляет страницу в мобильном приложении. Приложение проверяет, изменились ли данные в кеше. Если изменились, пользователь видит на странице новые значения курса.
Данные хранятся в кластерах — группе физических и виртуальных серверов с общей логикой. На серверах расположены узлы с компонентами — базами данных, дополнительным кодом с настроенной логикой и продюсером.
Продюсер формирует ключи для объектов в IMDG, по которым пользователь находит нужные ему данные. Ключ — это набор полей, которые все вместе создают уникальный идентификатор записи. Например, это могут быть пара значений ID системы-источника и ID счета клиента. Узлы дублируют друг друга: если один или несколько узлов откажут, система продолжит работать и не потеряет данные.
Если система работает стабильно, свежие данные попадают из базы АБС в кеш с задержкой не больше нескольких секунд. Если возникнет задержка в репликации данных, допустимо предоставлять информацию с актуальностью:
- 10 секунд, если запрос поступает от сотрудника банка;
- 5 минут, если запрос отправил клиент из мобильного приложения.
То есть, если клиент решит посмотреть актуальную информацию по своим счетам, это не значит, что страница подвиснет на целых 5 минут. Если данные в кеше не успели обновиться до актуальных, запрос пользователя отправится в базу. Нагрузка на базы увеличивается, поэтому информация может прийти с задержкой. Например, страница будет загружаться на несколько секунд дольше.
В Газпромбанке используют автоматический мониторинг IMDG. Он отслеживает время актуальности информации, которая поступает в кеш. Если это время не укладывается в рамки допустимого лага — 10 секунд для запросов банковского сотрудника и 5 минут для пользователя приложения, — то системы получают сообщение, что скорость синхронизации с базами снизилась.
Информация в IMDG поступает из реплик, которые могут немного отставать от основной базы данных АБС. Но в то время, когда проводится много операций, например в зарплатные дни, задержка может возрасти до получаса. Поэтому приложения, которые забирают информацию, проверяют, насколько выросло отставание в реплике, чтобы в случае чего обратиться напрямую в базу.
Кто работает с IMDG в Газпромбанке?
В Газпромбанке сейчас разрабатывают решение, благодаря которому сотрудники и клиенты будут получать всегда актуальные данные без задержек.
Над кешированием работает команда из семи человек. В нее входят product owner, проджект-менеджер, архитекторы, аналитики и тестировщик.
Команда работает трехнедельными спринтами:
- Первые две недели участники ведут задачу, от старта до релиза. Они каждый день встречаются и обсуждают статусы по проекту.
- На третьей неделе команда оценивает релиз, разбирает ошибки и готовится к следующему спринту.
Сейчас команда подключила через кеширование такие сервисы:
- запрос данных по карточным договорам;
- запрос данных по кредитным договорам;
- запрос данных по договорам вкладов, БТС и ОМС;
- поиск клиента по номеру вклада, счета или договора;
- получение актуального курса валют в любой момент.
В перспективе сотрудники Газпромбанка с помощью кеширования смогут быстро получать информацию по платежным операциям клиентов из Payment Hub.