Система сборки Ya Make

Язык буткемпа: C++

Мы создаём собственную систему сборки для монорепозитория Яндекса — Ya make. Она работает как локально на Linux, macOS и Windows, так и на кластере распределённой сборки, обеспечивая перестроение локальных изменений за секунды и всего репозитория под несколько платформ за десятки минут.

Кроме непосредственно сборки и тестирования, она также предоставляет команды для пакетирования, экспорта проектов для нескольких IDE и средства анализа зависимостей.

В команде в основном используется C++, но немного кода есть и на Python.

Более детально мы рассказывали о нашей системе сборки на митапе DevTools Party / 21 марта 2023.

Стек

C++ Основной язык программирования с использованием актуальной версии стандарта
Python 3 Интеграционные тесты и язык для написания расширений
ANTLR Описание синтаксиса внутренних DSL

Команда

У нас распределённая команда, состоящая из четырёх разработчиков и одного тимлида.

Работа в команде требует глубокого погружения в проблематику сборочных систем вообще и нашей в частности. Поэтому команда состоит из очень сильных разработчиков, готовых помогать и учить.

А ещё мы умеем работать комфортно в распределённой команде, не устраивая много встреч каждый день.

Особенности

  • Результатами нашего труда ежедневно пользуются тысячи разработчиков Яндекса. Поэтому мы можем сделать их работу проще, комфортнее и эффективнее.
  • Умение придумывать структуры данных и алгоритмы — это то, что у нас точно пригодится.
  • Наши задачи чаще про более глубокое понимание и анализ, чем про быстрое написание кода.
  • В команде открытая атмосфера, а это значит, что если вы захотите проявить инициативу, что-то предложить или обсудить, то все будут готовы к конструктивному диалогу.

Что нужно принять во внимание

  • Как и у многих других инфраструктурных команд, у нас есть дежурства. Мы сами следим за работоспособностью продукта, а также отвечаем на запросы пользователей во внутренней поддержке. Дежурство проходит в рамках рабочего дня. Ночью и по выходным не дежурим, только если ситуация не форс-мажорная. Новых сотрудников на дежурство не отправляем. У вас будет время спокойно освоиться и накопить достаточную экспертизу.
  • У нашего проекта давняя история, поэтому есть legacy, но мы не забываем про рефакторинг и регулярно им занимаемся.
  • У нас кросс-платформенная разработка, поэтому нужно понимать, как всё будет работать на разных системах.
  • Хоть ядро и написано на С++, часть кода на Python. Тем не менее, Python не является обязательным требованием, но будет являться большим преимуществом. Мы рассматриваем людей, которые хотя бы имеют желание доучить Python, и мы готовы с этим помогать.

Вызовы

  • В монорепозитории Яндекса постоянно растёт количество проектов, кода, зависимостей, а это значит, что нам нужно постоянно работать над оптимизацией производительности нашей сборочной системы.
  • Мы постоянно работаем над системой сборки как над продуктом. Поэтому нам нужно улучшать не только производительности, но и usability.

Дополнительные материалы

Доклад на DevTools Party «Сборка и тестирование в монорепозитории: система сборки ya make»:

Предыдущая
Следующая