Разработчик в группу системы распределённой сборки

Moscow, Saint Petersburg, NovosibirskC++, PythonInternal services, Search portalSpecialist, Leading specialist
Программисты Яндекса создают тысячи коммитов и пулл-реквестов в день. Основная часть кода находится в общем репозитории. Поддерживать огромную кодовую базу и одновременно обеспечивать высокую производительность большого числа разработчиков — это серьёзная задача.
Чтобы общий репозиторий использовался максимально эффективно, мы применяем методологию trunk-based development и для любого проекта строим всё необходимое из исходного кода (и это реально большой объём кода). Чтобы сделать это быстро, мы разрабатываем, развиваем и используем собственную эффективную систему распределённой сборки.
Система распределённой сборки, которую мы разрабатываем, позволяет использовать нашу систему сборки распределённо на сотнях мощных серверов. Репозиторий быстро растёт и развивается, и система распределённой сборки должна масштабироваться соответственно. Повысить скорость и стабильность — один из вызовов, стоящих перед нами прямо сейчас. Мы работаем над улучшениями в механизме гарантий RAM/CPU для отдельных нод, шедулингом с учётом статистики потребления ресурсов нодами, распределённым кешированием результатов сборки и тестирования, механизмами приоритизации и квотирования, использованием облачных мощностей. Всё это делается, чтобы более аккуратно и правильно распределить нагрузку и увеличить ресурсы кластера.
Система распределённой сборки — один из ключевых компонентов Автосборки, за которую мы также отвечаем. Автосборка — это комплекс из нескольких взаимодействующих между собой систем, которые совместно образуют pipeline. Он обеспечивает запуск на каждое изменение кода всех сборок, затронутых изменением, и тестов под несколько платформ. В pipeline планируется сделать множество больших рефакторингов, которые должны заметно ускорить Автосборку. От скорости Автосборки зависит производительность тысяч разработчиков Яндекса.

Мы ждем, что вы:

  • хотите и умеете писать код продуктового качества на C++ и Go;
  • знаете эффективные структуры данных и алгоритмы для работы с большими данными;
  • позитивно мыслите и хотите развиваться.

Вам предстоит:

  • решать интересные алгоритмические и прикладные задачи;
  • участвовать в проектировании наших систем;
  • взаимодействовать со смежными командами и с пользователями.

Большими плюсами будут:

  • знание C++;
  • понимание принципов сборки программ из исходного кода;
  • опыт разработки распределённых и высоконагруженных систем.
Общая вакансия в Отдел технологий разработки: https://yandex.ru/jobs/vacancies/dev/technology_dev/
Подробнее про задачи отдела вы можете почитать в статье "Какие технологии Яндекс строит для команд разработки?".