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

Большая часть кода в Яндекс живёт в огромном монорепозитории (100GiB+ кода в одной ревизии). Заметная часть этого монорепозитория живёт под собственной системой сборки ya make. Чтобы извлечь из этого максимум пользы, хочется при каждом изменении пересобирать весь код и перепрогонять все тесты, затронутые этими изменениями. А изменений много — на пике частота коммитов достигает 10 шт. в минуту, а PR-проверок — ещё больше. Чтобы решить эту задачу, в Яндексе разработали распределённую систему исполнения сборки DistBuild. В докладе расскажу, как она устроена, что позволяет ей эффективно исполнять сборки на 1000+ серверов и с какими вызовами сталкиваются её разработчики. DistBuild — это система распределенного графового исполнения, и я постараюсь осветить общие аспекты построения такого рода систем, чтобы история была не только про Яндекс и не только про DistBuild. Я покажу некоторые развилки как в идеологии, так и в дизайне подобного рода систем. Расскажу немного об исполнении, кэшировании, планировании и координации. Это, в частности, позволит понять, какой класс задач вообще может решаться системами, подобными DistBuild, и о чём надо задуматься, формулируя задачи для распределенных графовых вычислений. Сайт – https://codefest.ru Презентация – https://disk.yandex.ru/i/B0uhx4H5jIKXyQ

Иконка канала CodeFest Russia
68 подписчиков
12+
11 просмотров
2 года назад
12+
11 просмотров
2 года назад

Большая часть кода в Яндекс живёт в огромном монорепозитории (100GiB+ кода в одной ревизии). Заметная часть этого монорепозитория живёт под собственной системой сборки ya make. Чтобы извлечь из этого максимум пользы, хочется при каждом изменении пересобирать весь код и перепрогонять все тесты, затронутые этими изменениями. А изменений много — на пике частота коммитов достигает 10 шт. в минуту, а PR-проверок — ещё больше. Чтобы решить эту задачу, в Яндексе разработали распределённую систему исполнения сборки DistBuild. В докладе расскажу, как она устроена, что позволяет ей эффективно исполнять сборки на 1000+ серверов и с какими вызовами сталкиваются её разработчики. DistBuild — это система распределенного графового исполнения, и я постараюсь осветить общие аспекты построения такого рода систем, чтобы история была не только про Яндекс и не только про DistBuild. Я покажу некоторые развилки как в идеологии, так и в дизайне подобного рода систем. Расскажу немного об исполнении, кэшировании, планировании и координации. Это, в частности, позволит понять, какой класс задач вообще может решаться системами, подобными DistBuild, и о чём надо задуматься, формулируя задачи для распределенных графовых вычислений. Сайт – https://codefest.ru Презентация – https://disk.yandex.ru/i/B0uhx4H5jIKXyQ

, чтобы оставлять комментарии