Мы развиваем поисковый саджест, 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-изменения влияют на продуктовые метрики.