Большая часть кода в Яндекс живёт в огромном монорепозитории (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.