← Все вакансии

Разработчик в команду YQL

Наша группа — часть Platform Engineering в Яндексе. Мы разрабатываем YQL, SQL-подобный язык для обработки данных. YQL — основа YQL-сервиса: точки входа для аналитиков и для процессов трансформации данных во всех системах хранения и обработки данных Яндекса, таких как YTsaurus и YDB. YQL позволяет эффективно обрабатывать огромные объёмы данных, предоставляя удобный синтаксис для сложных запросов, включая поддержку PostgreSQL-совместимых конструкций. А благодаря интеграции с Apache Arrow и JIT-компиляции YQL значительно ускоряет вычисления. YQL — ключевая часть инфраструктуры, обеспечивающей анализ данных в Яндексе.

Наш основной язык — C++. Он используется для ядра YQL, включая парсинг с ANTLR и компиляцию через LLVM. На Java разрабатываем REST API сервиса и JDBC-клиент, обеспечивающий интеграцию с внешними системами. На Python — тесты и клиентские библиотеки API, чтобы автоматизировать проверку функциональности.

Работа над YQL потребует от вас понимания формальных грамматик, реляционной алгебры и алгоритмов для работы с графами, а также опыта бэкенд-разработки. Вы будете улучшать кодовую базу, которая частично открыта в опенсорс-проектах YDB и YTsaurus, ускоряя вычисления и повышая стабильность сервиса. Знать все технологии на старте необязательно — но интерес к их освоению очень важен. Приходите к нам, если хотите работать с передовыми инструментами и вносить вклад в инфраструктуру обработки больших данных.

Задачи и обязанности

Разработка и поддержка

Вы будете улучшать парсинг и обработку запросов, оптимизировать виртуальную машину функционального языка, в том числе реализовывать JIT-компиляции через LLVM для ускорения выполнения кода. Также в задачи входит интеграция с Apache Arrow для повышения производительности runtime-вычислений на больших объёмах данных. Это работа над ядром системы, где каждая оптимизация напрямую влияет на скорость и стабильность сервиса.

Ещё вы станете разрабатывать и поддерживать сложные алгоритмы, связанные с реляционной алгеброй и графами, чтобы запросы выполнялись эффективно даже при высокой нагрузке. Среди задач — настройка и улучшение бэкенда YQL, разработка клиентских библиотек и API. Нужно будет анализировать производительность, находить узкие места и предлагать, как их устранить. Это отличная возможность глубоко погрузиться в системное программирование и работу с инфраструктурой больших данных.

Тестирование и отладка

Писать и поддерживать юнит- и интеграционные тесты для существующего и нового кода, покрывать тестами (pytest) ключевые функциональные блоки. Диагностировать и устранять баги, выявленные при тестировании и в продакшен-среде. Оптимизировать тестовую инфраструктуру, чтобы ускорять процесс тестирования и улучшать качество продукта.

Больше о бэкенде в Яндексе — в канале Yandex for Backend

Требования

  • Уверенно владеете C++ и готовы разрабатывать на нём высокопроизводительные системы (например, ядро YQL) с использованием LLVM
  • Понимаете основы системного программирования и интересуетесь оптимизацией кода для повышения скорости запросов и вычислений
  • Имеете базовое представление о формальных грамматиках, реляционной алгебре или алгоритмах для графов либо готовы освоить эти области
  • Не боитесь сложных задач и стремитесь глубоко разобраться в технологиях, таких как Apache Arrow
  • Можете работать с разными частями стека: от бэкенда на C++ до API на Java и тестов на Python, адаптируясь к проекту
  • Готовы анализировать производительность, находить узкие места и предлагать, как их устранить
  • Интересуетесь большими данными и инфраструктурными сервисами, даже если пока не имеете опыта в этой сфере
  • Инициативны, способны самостоятельно находить подходы к решению нетривиальных задач
  • Готовы вносить вклад в наши опенсорс-платформы YDB и YTsaurus и поддерживать стабильность критически важного сервиса
  • Умеете работать с обратной связью, быстро отвечать на вопросы и участвовать в дежурствах по поддержке
  • Не знаете всё сразу — но стремитесь расти и углублять опыт в компиляторах, оптимизациях и обработке данных
Python Java SQL PostgreSQL Pytest
Откликнуться →