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 — доменно-ориентированное
постоянное хранилище структур данных, создаваемых ИТ-продуктами. Сервис
обеспечивает сохранение, обновление, чтение и удаление данных.
За счет этого пользователь, например, может создавать шаблон
платежа в мобильном приложении.
Сервис агрегации и шифрования данных по абоненту. При изменении данных со стороны сервисов генерируются асинхронные запросы на инвалидацию собственных данных в кэше. Запросы обрабатываются асинхронно, со стороны бекенда применяется шардирование данных, для увеличения скорости доступа.
Доменно-ориентированное хранилище постоянных данных. Обеспечивает CRUD Интерфейс для быстрого чтения, записи, изменения и удаления данных, для которых требуется быстрый доступ. Используется сервисами в том числе и для быстрого хранилища временных данных во время выполнения собственных процессов.
Semaphore Service хранит информацию о блокировках действий
в системе. Сервис активно используют для проектирования продуктовой
логики и асинхронных взаимодействий.
На Tarantool перенесли интерактивный справочник. В нем
хранятся справочники портированных в Yota номеров клиентов, коды
регионов. Он синхронизируется по расписанию с Центральной
базой перенесенных номеров, ежедневно обновляя данные. Справочник
предоставляет быструю информацию для мобильного приложения, для сайта
и для бэка.
Работу продуктового каталога также перенесли на Tarantool. Раньше
конфигурация требовала больших трудозатрат и привлечения
разработчиков, сейчас каталог конфигурируется YAML-файлом, его формирует
аналитик. Новая архитектура позволила создать гибкий конструктор
Yota — когда клиент самостоятельно выбирает необходимое
количество минут и гигабайт в пакете. На старой
архитектуре такая опция была технически невозможной.Продуктовый каталог
услуг Yota конфигурируется yaml-структурой.
Frontends Auth Storage Service (FASS). Сервис авторизации реализует
управление токенами клиентов.
Сервисы Yota на Tarantool способны стабильно отрабатывать запросы на чтение данных из кэша в количестве 3000 TPS (transactions per second). За последние годы благодаря архитектурным изменениям выросла скорость модификации: изменения в сервисы стало вносить проще и быстрее. Раньше полноценный релиз с аналитикой, разработкой и тестированием занимал недели. Сейчас — максимум три дня, и то, с учетом тестирования, которое не нужно для типовых задач.
время доступа в сервисах Yota на Tarantool
количество запросов по нагрузочному тестированию, которые Tarantool отрабатывает на чтение данных
стали тратить на выпуск релиза с конфигурированием продуктового каталога вместо недели
Специалисты Tarantool свяжутся с вами по оставленным контактам