Мы развиваем поисковый саджест, spellchecker и классификацию запросов — сервисы, которые используются почти во всех продуктах VK: Видео, Музыке, Дзене и других направлениях.
Это часть поиска, с которой пользователь сталкивается ещё до выдачи. Когда человек начинает вводить запрос и видит подсказки — работает саджест. Когда система исправляет опечатку и помогает не потерять нужный смысл — в обработке участвует spellchecker. Когда запрос нужно разобрать, нормализовать, выделить в нём важные части и подготовить для дальнейшего поиска — за это отвечает QParser.
Наши сервисы работают под высокой нагрузкой: на каждый из ключевых компонентов приходится порядка 20 000 rps, всё это развёрнуто в нескольких дата-центрах и находится на критичном пользовательском пути. Поэтому для нас важны не только скорость разработки, но и надёжность, наблюдаемость, аккуратная эксплуатация и возможность быстро разобраться в проблемах, если что-то пошло не так.
Сейчас мы ищем backend-инженера уровня middle-senior, который поможет развивать runtime-сервисы команды. Основной рабочий язык — C++: на нём написана значительная часть кода, с которым предстоит работать каждый день. Помимо C++, в стеке есть Python, Java, YQL и внутренние инструменты вокруг данных, мониторинга и эксплуатации.
Нам нужен человек, которому интересно не просто закрывать отдельные задачи, а брать ответственность за важные backend-компоненты: понимать, как они устроены, развивать их, делать полезные изменения и следить за тем, чтобы сервисы уверенно жили в проде.
Задачи
- Развивать runtime-сервисы и офлайн-процессы саджеста, spellchecker и QParser: писать production-код, дорабатывать существующую логику, реализовывать новые продуктовые и технические фичи
- Брать в ответственность критичные части backend-логики: понимать, как они работают в проде, какие у них ограничения, где есть риски и что нужно улучшить
- Участвовать в процессе планирования направлений развития наших сервисов
- Участвовать в эксплуатации сервисов, развивать инструменты и подходы: деплой, мониторинги, алерты, диагностика проблем, разбор инцидентов и деградаций
- Работать на стыке с другими частями стека: Python-скрипты, YQL для офлайн-процессов и подготовки данных, Java-компоненты, интеграции с внутренней инфраструктурой
- Взаимодействовать с продуктами и смежными командами: помогать подключать поисковые сценарии, разбираться в требованиях и доводить продуктовые запросы до результата
- По желанию и по мере необходимости участвовать в интеграции ML-решений в runtime-сервисы: помогать доводить модели и связанные с ними изменения до production-состояния
Требования
- У вас есть уверенный опыт backend-разработки на уровне middle-senior
- Вы хорошо знаете C++ и готовы использовать его как основной рабочий язык
- Умеете писать production-код и разбираться в уже существующей кодовой базе, быстро погружаться в незнакомую систему, читать чужой код, находить связи между компонентами
- Есть опыт разработки, поддержки и эксплуатации backend-сервисов в проде
- Понимаете, как устроены надёжные сервисы: latency, отказоустойчивость, мониторинг, алертинг, диагностика, деплой и откаты
- Готовы брать ответственность за критичные компоненты, а не только закрывать отдельные задачи
- Не боитесь работать с разными частями стека: Python, Java, YQL, внутренние инструменты, инфраструктура и офлайн-процессы
Будет плюсом
- Опыт работы с highload или low-latency сервисами
- Опыт в поиске, саджесте, spellchecker, query understanding, ranking или других поисковых системах
- Опыт эксплуатации критичных production-сервисов
- Опыт работы с мониторингом и алертингом: Grafana, VictoriaMetrics или похожими инструментами
- Опыт работы с YT/YTsaurus, YQL или другими системами обработки больших данных
- Опыт разработки на Java или Python
- Опыт интеграции ML-решений в backend-сервисы
- Опыт проведения A/B-тестов. Понимание методологии и того, как backend-изменения влияют на продуктовые метрики
Мы предлагаем
Формат работы
Уровень
График работы
Поиск
Поиск понимает смысл поисковых запросов при помощи нейросетей, мы используем обширный граф знаний и компьютерное зрение, развиваем рекомендательную систему, детектируем спам и другой вредоносный контент.