Рост ИИ-кода увеличил нагрузку Anthropic на CI в 25 раз
За полгода число CI-задач Anthropic выросло в 25 раз, а служба выбора тестов стала отставать. Компания переработала её в масштабируемую систему с очередью событий; выводы основаны на внутреннем опыте одной команды.
Код ускорился — CI стал узким местом
Инженер Anthropic сообщает, что сотрудники в среднем выпускают в восемь раз больше кода за квартал, чем в 2021–2025 годах, а Claude пишет 80% этого кода. Число тестов выросло в десять раз, тогда как штат изменился незначительно. В результате количество CI-задач за шесть месяцев увеличилось в 25 раз.
Система анализа влияния изменений выбирала для каждого pull request нужные тесты по истории прошлых прогонов. Её две части — listener, который записывал результаты, и selector, который использовал историю, — перестали успевать синхронизироваться при множестве параллельных CI-задач. Отставание в 20 минут могло оставить десятки тысяч обновлений неучтёнными. В основном это приводило к запуску устаревших или заведомо нестабильных проверок, а не означало, что код вообще не тестировали.
Очередь событий вместо единственного процесса
Anthropic перестроила сервис вокруг общего хранилища событий. Несколько stateless listener-воркеров могут записывать результат в журнал и завершать работу; отдельный процесс каждые несколько секунд собирает историю по тестам, к которой затем обращается selector. Это устранило прежнее состояние в памяти одного процесса и позволило масштабировать воркеры горизонтально.
Проект занял три недели одного инженера; автор оценивает, что годом ранее он занял бы около квартала. После перехода очередь необработанных событий перестала постоянно расти, хотя распределённая архитектура обходится дороже.
Что команда советует учесть
Автор предлагает проектировать CI с запасом на возможный рост нагрузки примерно в 25 раз за два квартала, хранить состояние вне отдельного процесса и следить, чтобы количество входящих CI-задач соответствовало обработанным. Он также связывает рост нагрузки с более мелкими pull request и работой агентов ночью и по выходным. Это рекомендация из опыта Anthropic, а не универсальный прогноз для каждой команды.