Распределённая система сборки для очень больших... репозиториев
Backend

Тезисы

Большая часть кода в Яндекс живёт в огромном монорепозитории (100GiB+ кода в одной ревизии). Заметная часть этого монорепозитория живёт под собственной системой сборки ya make.

Чтобы извлечь из этого максимум пользы, хочется при каждом изменении пересобирать весь код и перепрогонять все тесты, затронутые этими изменениями. А изменений много — на пике частота коммитов достигает 10 шт. в минуту, а PR-проверок — ещё больше.

Чтобы решить эту задачу, в Яндексе разработали распределённую систему исполнения сборки DistBuild. В докладе расскажу, как она устроена, что позволяет ей эффективно исполнять сборки на 1000+ серверов и с какими вызовами сталкиваются её разработчики.

DistBuild — это система распределенного графового исполнения, и я постараюсь осветить общие аспекты построения такого рода систем, чтобы история была не только про Яндекс и не только про DistBuild. Я покажу некоторые развилки как в идеологии, так и в дизайне подобного рода систем. Расскажу немного об исполнении, кэшировании, планировании и координации. Это, в частности, позволит понять, какой класс задач вообще может решаться системами, подобными DistBuild, и о чём надо задуматься, формулируя задачи для распределенных графовых вычислений.


Аудитория

Everyone, backend-developer, devops-engineer, engineers.


Уровень сложности

Middle.

Яндекс

Сергей Прейс

Последние 6 лет активно занимается развитием системы сборки ya make для монорепозитория Яндекса и сейчас отвечает за неё целиком. До этого 12 лет работал в компании Intel в области векторизации в компиляторе Intel, откуда ушёл в должности Principal Engineer. Имеет несколько патентов USPTO и внёс вклад в появление OpenMP для SIMD.

Последние 6 лет активно занимается развитием системы сборки ya make для монорепозитория Яндекса и сейчас отвечает за неё целиком. До этого 12 лет работал в компании Intel в области векторизации в компиляторе Intel, откуда ушёл в должности Principal Engineer. Имеет несколько патентов USPTO и внёс вклад в появление OpenMP для SIMD.

Другие спикеры секции Backend

Еще на тему Backend