FE Core팀의 CI 속도전: 캐시 전략을 활용한 병렬 빌드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 프론트엔드 개발자, DevOps 엔지니어, CI/CD 파이프라인 최적화 담당자
- 난이도: 중급 (Turborepo, GitHub Workflow Matrix, 캐시 전략 이해 필요)
핵심 요약
- Runner 사양 개선으로 평균 빌드 시간 20분 → 10분대 단축
- GitHub Workflow Matrix 도입으로 병렬 빌드 실행, 캐시 미적중 시 22.5% 시간 절감
- Turborepo dry-run 활용으로 캐시 적중 시 오버헤드 최소화 및 4% 빌드 시간 감소
섹션별 세부 요약
1. 문제 상황 및 배경
- 30개 이상의 독립 프로젝트가 포함된 Turborepo 기반 monorepo 환경에서
pnpm-lock.yaml
변경으로 인한 의존성 편차 발생 - main 브랜치 병합 시 모든 프로젝트 빌드 필요로 20분 이상 소요
- 캐시 미적중 시 워크플로우 30분 이상 대기 및 Error: The operation was canceled 빈번 발생
2. 초기 CI 파이프라인 구조
- Turborepo 원격 캐시 서버(Kubernetes 기반) 운영
dorny/paths-filter@v3
를 활용한 불필요 빌드 최소화
3. 개선 전략 및 구현
- Runner 사양 개선: Ubuntu Runner → Ubuntu-22.04-cores 메모리/코어 확장
- GitHub Workflow Matrix 도입:
```yaml
strategy: matrix: $
fail-fast: false
```
- Turborepo dry-run 활용:
```bash
turbo run build --dry-run
```
- 캐시 상태 사전 점검 → 캐시 미적중 시만 빌드 실행
4. 결과 및 성과
- Matrix+Dry-run 적용 후:
- 캐시 미적중 시: 10m27s → 5m29s (-47.5%)
- 캐시 적중 시: 1m14s → 1m11s (-4%)
- 전체 CI 파이프라인 빌드 시간 84% 단축 (30분대 → 5분대)
결론
- Runner 사양 개선 + GitHub Workflow Matrix 병렬 빌드 + Turborepo dry-run 조합으로 CI 속도 84% 개선
- 캐시 전략을 통해 불필요한 빌드 방지 및 브랜치 보호 정책 단일화 가능
- 프로젝트 규모 증가에도 안정적인 CI 구조 유지 가능 → 지속적인 자동화/최적화 필요