Yota
Yota logo

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

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

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

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

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

Решение

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

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

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

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

scroll‑схема

Profile Aggregation Service

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

Solutions scheme

Enterprise Persistent Storage

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

Solutions scheme

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

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

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

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

Результаты

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

  • 0.2‑3мс

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

  • 3000TPS

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

  • 2‑3 дня

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

Остались вопросы?
Оставьте нам сообщение, и мы обязательно с вами свяжемся!

Другие
истории успеха

Как Tarantool ускоряет сервисы МегаФон
Alfa Bank Logo
Платежный сервис по стандарту PCI DSS на Tarantool
MasterCard Logo

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

Заказать
демонстрацию

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

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

Thanks
Thanks