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

Программисты Яндекса создают тысячи коммитов и пулл-реквестов в день. Основная часть кода находится в общем репозитории. Поддерживать огромную кодовую базу и одновременно обеспечивать высокую производительность большого числа разработчиков — это серьёзная задача.

Чтобы общий репозиторий использовался максимально эффективно, мы применяем методологию trunk-based development и для любого проекта строим всё необходимое из исходного кода (и это реально большой объём кода). Чтобы сделать это быстро, мы разрабатываем, развиваем и используем собственную эффективную систему распределённой сборки.

Система распределённой сборки, которую мы разрабатываем, позволяет использовать нашу систему сборки распределённо на сотнях мощных серверов. Репозиторий быстро растёт и развивается, и система распределённой сборки должна масштабироваться соответственно. Повысить скорость и стабильность — один из вызовов, стоящих перед нами прямо сейчас. Мы работаем над улучшениями в механизме гарантий RAM/CPU для отдельных нод, шедулингом с учётом статистики потребления ресурсов нодами, распределённым кешированием результатов сборки и тестирования, механизмами приоритизации и квотирования, использованием облачных мощностей. Всё это делается, чтобы более аккуратно и правильно распределить нагрузку и увеличить ресурсы кластера.

Система распределённой сборки — один из ключевых компонентов Автосборки, за которую мы также отвечаем. Автосборка — это комплекс из нескольких взаимодействующих между собой систем, которые совместно образуют pipeline. Он обеспечивает запуск на каждое изменение кода всех сборок, затронутых изменением, и тестов под несколько платформ. В pipeline планируется сделать множество больших рефакторингов, которые должны заметно ускорить Автосборку. От скорости Автосборки зависит производительность тысяч разработчиков Яндекса.

Общая вакансия в Отдел технологий разработки: https://yandex.ru/jobs/vacancies/dev/technology_dev/

Подробнее про задачи отдела вы можете почитать в статье "Какие технологии Яндекс строит для команд разработки?"

Какие задачи вас ждут

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

Мы ждём, что вы

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

Будет плюсом, если вы

  • знаете C++;
  • понимаете принципы сборки программ из исходного кода;
  • имеете опыт разработки распределённых и высоконагруженных систем.
Спасибо за отклик!

Мы свяжемся с вами в течение недели.

Fri Feb 09 2024 12:47:58 GMT+0300 (Moscow Standard Time)