피드로 돌아가기
Mastering Your Frontend Build with Bazel: Testing
Dev.toDev.to
Frontend

Bazel 도입을 통한 Monorepo 테스트 격리 및 캐싱 최적화

Mastering Your Frontend Build with Bazel: Testing

Matti Bar-Zeev2026년 4월 11일11intermediate

Context

기존 pnpm 기반의 Monorepo 구조에서 패키지별 Jest 프로세스를 개별 실행함에 따른 캐싱 부재와 병렬 처리 효율 저하 발생. Git 기반의 변경 사항 필터링으로 CI 비용을 절감하는 임시 방편을 사용했으나, 근본적인 빌드 그래프 추적 체계가 결여된 상태임.

Technical Solution

  • Bazel Linux Sandbox 도입을 통한 Implicit Dependency 제거 및 명시적 의존성 선언 강제
  • jest_test 룰의 data 속성을 활용한 테스트 실행 환경의 엄격한 격리 및 정합성 확보
  • test_tag_filters 기반의 와일드카드 타겟(//packages/...) 설계를 통한 단일 명령 기반 통합 테스트 수행
  • Bazel의 Input/Output 트래킹 메커니즘을 활용한 Incremental Build 및 캐싱 최적화
  • LCOV 표준 기반의 bazel coverage@lcov-viewer/cli 연동을 통한 분산 테스트 결과의 단일 리포트 통합

1. 테스트 환경에서 선언되지 않은 의존성이 사용되고 있는지 Sandbox 테스트를 통해 검증할 것

2. Git Diff 기반의 수동 필터링 대신 빌드 그래프 기반의 증분 빌드 시스템 도입을 검토할 것

3. Monorepo 규모 확장 시 개별 프로세스 실행보다 통합 빌드 툴의 병렬 처리와 캐싱 메커니즘을 활용할 것

원문 읽기