Yota
cover

Как Yota изменили
архитектуру
с кэшированием
на Tarantool

Yota — мобильный оператор, который активно использует инновационные наработки в работе. Компания первой вышла на российский рынок с LTE, сделала доступным безлимитный 4G-интернет для 78 регионов, одной из первых использовала дроны для доставки SIM-карт.

Scroll

Задача и требования

В 2017 году в Yota появилось понимание, что компании нужно ускорить ответ бэка на запросы мобильного приложения. Открытие приложения могло занимать 5-6 секунд, что заметно для пользователя и портило впечатление о сервисах Yota.

На тот момент в компании применяли service-oriented архитектуру с синхронными запросами, что очень серьезно влияло на быстродействие системы. Тогда же начала набирать популярность микросервисная архитектура. В рамках подхода к ней технические специалисты Yota стали подбирать in-memory решения для организации кэша и, в итоге, остановились на Tarantool.

Решение

icon

За кэшем в Yota — разветвленный IT-ландшафт с парой сотен сервисов. Сервисы разделены на IT-продукты, каждый из которых находится в своей изолированной инфраструктуре. Например, отдельно работает IT-продукт для customer data и IT-продукт, который отвечает за нотификацию клиента. Чтобы не дергать каждый раз IT-продукт на get-запросы для сбора информации, хранятся домены, конфигурируемые в кэше. Плюс команда Yota заложила разветвленную логику инвалидации доменов. То есть, когда происходят события в бэке, например, закончилось время пакета по услугам, то обвязка кэша перехватывает событие и сбрасывает домен этого конкретного клиента.

Сегодня в Yota работают следующие сервисы, которые реализованы на технологии Tarantool.

icon

Главный сервис на Tarantool в Yota — Profile Aggregation Service — персонифицированный кэш для увеличения скорости работы с данными клиента. Сервис собирает данные о профиле из смежных систем и кэширует их. Инвалидирует данные по поступлению внешних сигналов. Для добавления нового профиля нужна только конфигурация.

Enterprise Persistent Storage — доменно-ориентированное постоянное хранилище структур данных, создаваемых ИТ-продуктами. Сервис обеспечивает сохранение, обновление, чтение и удаление данных. За счет этого пользователь, например, может создавать шаблон платежа в мобильном приложении.

icon icon
Scroll

Архитектура
решения

Profile Aggregation Service

Сервис агрегации и шифрования данных по абоненту. При изменении данных со стороны сервисов генерируются асинхронные запросы на инвалидацию собственных данных в кэше. Запросы обрабатываются асинхронно, со стороны бэкенда применяется шардирование данных, для увеличения скорости доступа.

Enterprise Persistent Storage

Доменно-ориентированное хранилище постоянных данных. Обеспечивает CRUD Интерфейс для быстрого чтения, записи, изменения и удаления данных, для которых требуется быстрый доступ. Используется сервисами, в том числе, и для быстрого хранилища временных данных во время выполнения собственных процессов.

Решение

icon

Semaphore Service хранит информацию о блокировках действий в системе. Сервис активно используют для проектирования продуктовой логики и асинхронных взаимодействий.

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

icon

Работу продуктового каталога также перенесли на Tarantool. Раньше конфигурация требовала больших трудозатрат и привлечения разработчиков, сейчас каталог конфигурируется YAML-файлом, его формирует аналитик. Новая архитектура позволила создать гибкий конструктор Yota — когда клиент самостоятельно выбирает необходимое количество минут и гигабайт в пакете. На старой архитектуре такая опция была технически невозможной. Продуктовый каталог услуг Yota конфигурируется yaml-структурой.

Frontends Auth Storage Service (FASS). Сервис авторизации реализует управление токенами клиентов.

icon icon
Scroll

Результаты

Сервисы Yota на Tarantool способны стабильно отрабатывать запросы на чтение данных из кэша в количестве 3000 TPS (transactions per second). За последние годы благодаря архитектурным изменениям выросла скорость модификации: изменения в сервисы стало вносить проще и быстрее. Раньше полноценный релиз с аналитикой, разработкой и тестированием занимал недели. Сейчас — максимум три дня, и то, с учетом тестирования, которое не нужно для типовых задач.

0.2-3мс

Время доступа в сервисах Yota на Tarantool

3 000 TPS

Количество запросов по нагрузочному тестированию, которые Tarantool отрабатывает на чтение данных

2-3 дня

Стали тратить на выпуск релиза с конфигурированием продуктового каталога вместо недели

Получить консультацию

Заказать демо

Спасибо за обращение

Специалисты Tarantool свяжутся
с вами по оставленным контактам