strelka.svgНазад к кейсам

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

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

Компания

ООО "Скартел"

Отрасль

Телеком

Представитель

Техническая команда проекта

Подключенные сервисы

Основные результаты

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

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

В 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 — доменно-ориентированное постоянное хранилище структур данных, создаваемых ИТ-продуктами. Сервис обеспечивает сохранение, обновление, чтение и удаление данных. За счет этого пользователь, например, может создавать шаблон платежа в мобильном приложении.

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

**Profile Aggregation Service** Сервис агрегации и шифрования данных по абоненту. При изменении данных со стороны сервисов генерируются асинхронные запросы на инвалидацию собственных данных в кэше. Запросы обрабатываются асинхронно, со стороны бэкенда применяется шардирование данных, для увеличения скорости доступа. **Enterprise Persistent Storage** Доменно-ориентированное хранилище постоянных данных. Обеспечивает CRUD Интерфейс для быстрого чтения, записи, изменения и удаления данных, для которых требуется быстрый доступ. Используется сервисами, в том числе, и для быстрого хранилища временных данных во время выполнения собственных процессов.

Решение

Semaphore Service хранит информацию о блокировках действий в системе. Сервис активно используют для проектирования продуктовой логики и асинхронных взаимодействий. На Tarantool перенесли интерактивный справочник. В нем хранятся справочники портированных в Yota номеров клиентов, коды регионов. Он синхронизируется по расписанию с Центральной базой перенесенных номеров, ежедневно обновляя данные. Справочник предоставляет быструю информацию для мобильного приложения, для сайта и для бэка. Работу продуктового каталога также перенесли на Tarantool. Раньше конфигурация требовала больших трудозатрат и привлечения разработчиков, сейчас каталог конфигурируется YAML-файлом, его формирует аналитик. Новая архитектура позволила создать гибкий конструктор Yota — когда клиент самостоятельно выбирает необходимое количество минут и гигабайт в пакете. На старой архитектуре такая опция была технически невозможной. Продуктовый каталог услуг Yota конфигурируется yaml-структурой. Frontends Auth Storage Service (FASS). Сервис авторизации реализует управление токенами клиентов.

Остались вопросы?

Расскажите о задачах вашего проекта, и мы составим для вас решение на Tarantool
81.png
11 июня 2025 г.
1
Ссылка скопирована