Разработчик в команду 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 и поддерживать стабильность критически важного сервиса
- Умеете работать с обратной связью, быстро отвечать на вопросы и участвовать в дежурствах по поддержке
- Не знаете всё сразу — но стремитесь расти и углублять опыт в компиляторах, оптимизациях и обработке данных