모노레포에서 pnpm 캐시, 이득보다 손해였던 이유
안녕하세요. 이그나이트 FE1팀 한준호입니다. 프론트엔드 개발에서 CI/CD 파이프라인의 성능 최적화는 개발 생산성에 직결되는 중요한 과제입니다. 특히 모노레포 구조에서 여러 앱을 동시에 빌드하는 환경에서는 의존성 설치 시간이 전체 파이프라인 시간의 상당 부분을 차지하게 됩니다. 저희 팀에서는 GitLab CI와 pnpm을 사용하는 모노레포 프로젝트에서 빌드 시간을 단축하기 위해 캐시 전략을 도입했지만, 예상과 다른 결과를 경험했습니다. 이 글에서는 그 과정에서 겪은 시행착오와 교훈을 공유하고자 합니다. 초기 상황: 느린 의존성 설치 문제점 모노레포 구조: 5개의 워크스페이스 프로젝트 의존성 설치 시간: 각 앱당 20-30초 전체 빌드 시간: 의존성 설치만으로도 상당한 시간 소요 기존 GitLab CI 설정 5개 앱이 존재하기 때문에 개별 앱이 빌드될 때 매번 의존성을 처음부터 다운로드받아야 했고, 이는 명백한 비효율이었습니다. 해결 시도: pnpm 캐시 도입 캐시 전략 설계 pnpm의 콘텐츠 주소 지정 스토어(Content-addressable Store) 특성을 활용하여 한번의 pnpm i 만 구동하여 나머지 앱에서는 pnpm-store node_modules 를 캐싱하도록 다음과 같이 스크립트를 작성했습니다. 예상 효과 캐시 적중 시: 의존성 설치 시간 대폭 단축 개발자 경험: 더 빠른 피드백 사이클 빌드 결과
- 한준호한

6