Новая Яндекс.Музыка. Бэкенд — Александр Гутман

27

description

Недавно мы запустили полностью переработанную версию Яндекс.Музыки. Раньше сервис был просто большим каталогом музыки, а теперь он построен вокруг интересов пользователя. Запуск новой версии потребовал переработки всех компонентов сервиса. Я расскажу, как мы писали бекенд для новой Яндекс.Музыки и как вообще он устроен, что пришлось поменять в API и архитектуре сервиса при переделке, что мы сделали нового и как всё это запускали. Также вы узнаете, как на сервисе работают рекомендации и радио.

Transcript of Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Page 1: Новая Яндекс.Музыка. Бэкенд — Александр Гутман
Page 2: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Новая Яндекс.Музыка. Бекенд.

Александр Гутман

Page 3: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Новая музыка

〉Мы переделали сервис

〉Раньше – каталог музыки

〉Теперь – рекомендации

〉Теперь – личная фонотека

3

Page 4: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Вдруг вам интересно

〉java 8, spring, jetty

〉MySQL, MongoDB, Cassandra, Elliptics, ZooKeeper

〉17+ млн треков

〉6 млн посетителей в неделю

4

Page 5: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Архитектура

5

mongoDB CassandraMySQLElliptics

Про пользователейПро контентmp3, jpeg

WebFace

Генерация «статики»

API

Загрузка контента

Page 6: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Старое API

〉Пользовательские данные отдельно, контент отдельно

〉XML

〉API для контента когда-то было статикой

〉Разное API для мобильного и веба

6

get-playlist?id=15

track-ids=1,2,5

Face

get-tracks?track-ids=1,2,5

<tracks><track>...

Web

Page 7: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Новое API

〉Единое для пользовательских данных и контента

〉JSON

〉Общее у мобильного и веба

7

Web+Face

playlists/15

{tracks: [...

Page 8: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Изменения в архитектуре

8

v1 v2 v3

Client

FaceWeb

Client

FaceWebWeb

Client

Face

Page 9: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Почему они сразу так не сделали?

9

Page 10: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Почему они сразу так не сделали?

10

Page 11: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Почему мы сразу так не сделали

11

v1 v2 v3

Client

FaceWeb

Client

FaceWebWeb

Client

Face

Page 12: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Почему мы сразу так не сделали

〉Face: Xmx30G

〉Web: много мусора

〉Что же делать?

〉Кто знает?

12

Page 13: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Почему мы сразу так не сделали

〉Face: Xmx30G

〉Web: много мусора

〉Вынесли кеши в offheap

〉Раздаем статику торрентами

13

Page 14: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Что нового

〉Фид

〉Фонотека

〉Персональное радио

14

Page 15: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Рекомендации

〉Используем лайки, дислайки, плейлисты, проигрывания, скипы

〉Применяем матричное разложение

〉Применяем Матрикснет

〉Дообучаемся в реальном времени

15

Page 16: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Сложности

〉Разнородный фидбек

〉Явного негативного фидбека мало

〉Неявного негативного фидбека тоже мало!

〉Сложно найти офлайновую метрику

〉Онлайновую метрику найти тоже сложно!

16

Page 17: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Сложности 2

〉Фидбек про треки, а рекомендовать нужно альбомы и артистов

〉Фидбек запаздывает (а нужен в контексте)

17

Page 18: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Фид

〉Последовательность событий про музыку

〉Хронология: события привязаны к дням

〉У всех событий есть объяснения

18

Page 19: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Фид 2

〉Строится в момент запроса

〉Делает вид, что существует независимо от визитов пользователя

〉Тяжелые части готовятся заранее (кандидаты для рекомендаций, портрет пользователя)

〉Набор правил разной степени интеллектуальности

19

Page 20: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Абсолютно неинтеллектуальное правило

20

Page 21: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Ранжирование рекомендатором

21

Page 22: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Интеллектуальное правило

22

Page 23: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Как запустить фид

〉Правила настраиваются вручную

〉Мы экспериментировали на команде музыки

〉Потом на сотрудниках Яндекса

〉Потом на специальных внешних людях

〉Потом на случайных внешних людях

23

Page 24: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Как запустить музыку

〉A/B-тестирование

〉Эксперименты

〉Сбор данных о действиях пользователя

〉Аналитика и правильные метрики

24

Page 25: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Выводы

〉Лучше сразу сделать все правильно

〉Радикальный редизайн – это не очень страшно

〉Измеряйте пользу любый изменений

25

Page 26: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

Ответы

26

Page 27: Новая Яндекс.Музыка. Бэкенд — Александр Гутман

27

Александр Гутман

Группа технологий работы с большими данными

Контакты

@gutmanoid+7 (926) 369 96 83

[email protected]