AI 코딩으로 병목이 된 CI, 개발 속도에 맞춰 재설계함

4 days ago 16

Linear는 연초 이후 테스트 스위트가 거의 4배로 늘어났는데도 PR의 CI 대기 시간을 6분 초과에서 5분 남짓으로 줄이고, 테스트당 러너 사용 시간을 약 절반으로 낮춤 더 빠른 외부 러너와 tsgo 로 전환하고 린트 규칙의 타입 정보 의존성을 제거해, 인프라와 개별 검사 단계의 실행 시간을 단축함 다른 작업을 막는 임계 경로에서 불필요한 체크아웃과 캐시 기록을 제거하고 네트워크 정체에 대응해, 캐시 미스 시 API PR의 필수 검사 시간을 약 1분 줄임 공통 의존성 사전 설치, 필요한 패키지만 설치, 짧은 검사 통합으로 반복 준비 비용을 줄였으며, 작업 통합만으로 월 약 87,000 러너-분을 절감함 테스트 파일 분할과 샤드 확대에 더해 안전한 파일만 격리를 해제해 실행 효율을 높임. 격리 해제는 단일 최적화 중 효과와 정확성 위험이 모두 가장 커, 적용 대상을 명시적으로 제한하고 공유 상태를 정리함 개선 목표와 전체 성과 에이전트로 코드 작성과 출시 속도는 급격히 빨라졌지만, 모든 PR이 거쳐야 하는 CI 검증은 같은 속도로 빨라지지 않아 인프라 비용과 개발자 및 에이전트의 피드백 대기 시간이 늘어남 Linear는 PR의 CI 대기 시간과 러너 사용 시간을 함께 최적화함 연초 이후 테스트 스위트가 거의 4배로 늘었지만, 대기 시간은 6분 초과에서 5분 남짓으로 줄어듦 테스트당 러너 사용 시간은 약 절반으로 감소함 샤드를 추가하면 대기는 줄어도 머신 사용 시간이 늘 수 있었고, 체크아웃 정체도 테스트당 머신 사용 시간을 급증시켰음 개선은 인프라와 도구, 후속 작업을 막는 선행 작업, 반복 준비, 테스트 실행의 네 영역에서 진행함 코드베이스는 주로 TypeScript이지만, 여러 최적화는 다른 언어와 도구 체인에도 적용 가능함 인프라와 도구 교체 GitHub Actions의 기존 실행 환경에서 더 빠른 CPU, 고성능 스토리지, 개선된 캐시 인프라를 갖춘 외부 러너로 워크로드를 옮김 전환 전후 이틀씩 동일 조건으로 비교했을 때 작업 실행 시간이 평균 34% 줄었고, tsc 같은 일부 작업은 52% 감소함 네이티브 TypeScript 컴파일러인 tsgo 로 전환해 tsc 검사 시간의 주간 중앙값을 73% 줄임 타입 검사는 더 이상 병목이 아니게 됨 타입 정보에 의존하던 일부 사용자 정의 린트 규칙을 추상 구문 트리 기반 정적 분석으로 다시 작성함 기존 규칙은 제한을 강제하거나 자동 수정을 적용하기 위해 전체 ...

Read Entire Article