Java-разработчик в команду музыкальных рекомендаций
Summary
ML developer on VK's music recommendations team: improves core recommendation quality, launches new music recommendation scenarios, and runs A/B tests on content consumption data. Core stack includes classical ML algorithms (Matrix Factorizations, CatBoost) and big data tooling (MapReduce/Spark).
Мы строим систему музыкальных рекомендаций внутри VK Музыки. Наша команда отвечает за то, что слушатель видит и слышит первым: персональные плейлисты, миксы, рекомендации на основе артиста, умные подборки под контекст (тренировка, дорога, вечер) и поиск музыки. Мы разрабатываем сервисы кандидат-селекции и ранжирования, которые связывают продуктовую логику с ML-моделями и обслуживают миллионы пользователей в реальном времени.
Задачи
- Мы команда продуктовых рекомендаций в экосистеме VK Музыки. Это высоконагруженная система, которая ежедневно формирует персонализированные подборки для десятков миллионов пользователей: миксы, плейлисты, блоки быстрого доступа, рекомендации артистов и треков
- У нас микросервисная архитектура — наша команда развивает сервисы candidate generation и ranking, от которых зависит качество рекомендаций всей платформы
- Мы проектируем и поддерживаем пайплайны, которые связывают фичи пользователя, контекст прослушивания и ML-модели ранжирования в единый рекомендательный сервис
- Отслеживаем и улучшаем качество рекомендаций через метрики (CTR, listening time, retention) и A/B-эксперименты
- Это не CRUD-продукт. Большая часть задач — про то, как спроектировать сервис, который эффективно и предсказуемо интегрирует ML-модели (LambdaMART / CatBoost / нейросетевые ранкеры) в высоконагруженный production-пайплайн: низкая latency, масштабируемость, устойчивость к деградации моделей, корректная работа с фичами и кандидатами
- При этом мы совмещаем инженерную строгость с продуктовым мышлением: у нас есть прямая обратная связь от пользователей через метрики и эксперименты, и результаты работы быстро отражаются на реальных прослушиваниях
- Мы не пишем код в стол — каждое изменение проверяется экспериментом и идёт от реальных проблем пользователей
Требования
- Умение самостоятельно вести разработку: от проработки идеи и технической декомпозиции до вывода решения в продакшен
- Понимание принципов построения асинхронных микросервисных систем и отказоустойчивой архитектуры под высокую нагрузку
- Уверенное владение Java + Spring, опыт работы с Kubernetes или аналогичной системой оркестрации
- Готовность разбираться в специфике ML-инфраструктуры: как модели ранжирования интегрируются в продакшен-сервисы, какие у них требования к фичам, latency и мониторингу качества
Будет плюсом
- Опыт разработки рекомендательных/поисковых систем
- Понимание принципов ранжирования (feature engineering, candidate generation, re-ranking) и базовое знакомство с ML-моделями (GBDT, эмбеддинги)
- Опыт эксплуатации высоконагруженных систем с real-time инференсом ML-моделей
- Опыт проведения и анализа A/B-экспериментов