Мы развиваем поисковый саджест, 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-изменения влияют на продуктовые метрики.
Мы предлагаем
Формат работы
Уровень
График работы
Поиск
Поиск понимает смысл поисковых запросов при помощи нейросетей, мы используем обширный граф знаний и компьютерное зрение, развиваем рекомендательную систему, детектируем спам и другой вредоносный контент.