9월 21일 리니어 엔지니어 무피즈 암자드가 올린 글로, 테스트 묶음이 올해 초 대비 거의 4배가 됐고 지금도 주당 2,000개씩 늘고 있는데 대기는 6분 넘던 데서 5분 남짓으로 내려갔고 손대지 않았으면 오늘 11분이 됐을 거라고 적었어요. 가장 크게 먹힌 것은 vitest 의 파일별 격리를 안전한 파일에만 주석으로 표시해 끄고 워커 안에서 모듈 상태를 공유하게 한 것으로, 월 비용의 약 17% 를 아꼈고 가장 느린 샤드가 300~379초에서 195초로 내려갔어요. 검사 7개를 작업 2개로 합쳐 월 러너 사용 시간 87,000분(전체 CI 사용량의 11.8%)을 아꼈고, node_modules 캐시는 복원에 28초가 드는 것보다 걸러서 설치하는 7.5초가 빨라 아예 버렸다고 밝혔어요.
용어 풀이
- CI
- 코드를 올릴 때마다 자동으로 빌드·테스트를 돌려 보는 검증 단계. Continuous Integration.
- 샤드
- 테스트 묶음을 여러 갈래로 쪼개 동시에 돌릴 때의 한 갈래.
- vitest
- 자바스크립트·타입스크립트 프로젝트에서 널리 쓰는 테스트 실행 도구.
- node_modules
- 자바스크립트 프로젝트가 내려받은 의존 패키지가 쌓이는 폴더.
운영자 인사이트
샤드를 늘리기 전에 샤드마다 치르는 설치·체크아웃 시간부터 재 보세요. 리니어도 설치를 44% 줄이고 나서야 샤드를 4개에서 8개로 올렸고, 그 전에 늘렸으면 설치에만 15~19분을 썼을 거라고 적었어요. 격리를 끄는 최적화를 넣는다면 어느 파일이 안전한지 주석으로 명시하고 에이전트 스킬에도 같은 제약을 적어야 생성되는 테스트가 규칙을 지켜요. 다만 해커뉴스에서는 파이프라인을 조이기 전에 쓸모없는 AI 테스트부터 솎으라는 반론이 컸어요.
여러 관점으로 보기
- 해커뉴스 반론과 다른 처방 댓글 381개 가운데 상당수는 CI 가 느려진 진짜 원인이 AI 가 찍어 내는 쓸모없는 테스트라며 파이프라인을 조이기 전에 테스트를 솎으라고 했고, Bazel 같은 내용 기반 캐시나 큰 자체 서버로 옮기라는 처방도 나왔으며, 글쓴이는 실행 시간 기준으로 부하를 나누자는 제안에 「해 봤지만 늘어나는 복잡도만큼의 이득은 없었다」고 답했어요. Hacker News
- 최적화의 실제 설정값 리니어가 가장 큰 효과를 본 격리 끄기는 vitest 설정의 isolate 옵션이고, 공식 문서는 이걸 끄면 테스트가 서로의 모듈 상태에 영향을 줄 수 있다고 적어 뒀어요. Vitest