CMS 모노레포 개선기: 빌드 시간 단축부터 번들 최적화까지
데브옵스
CMS 모노레포 개선기: 빌드 시간 단축부터 번들 최적화까지
두줄요약
모노레포 CMS의 빌드 파이프라인을 개선해 배포 시간을 14분에서 8분으로 줄였습니다. 병렬 빌드, 캐시 최적화, 안정성 보강과 번들 최적화까지 함께 다뤘습니다.
문제 상황
- 10여 개 Next.js 앱을 하나의 모노레포와 Spring Boot JAR에 묶어 운영하는 통합CMS 구조
- 배포마다 전체 앱을 순차 빌드해야 해서 약 14분의 대기 시간 발생
- 앱 추가와 함께 빌드 시간 증가가 예상되는 상황
원인 분석
- TurboRepo concurrency=1 설정으로 앱 빌드가 직렬 실행
- 빌드 컨텍스트에 불필요한 파일이 많아 준비 시간이 증가
- Docker 이미지 누적과 메모리 부족으로 간헐적 빌드 실패 발생
해결 방법
- .dockerignore 정비와 이전 빌드 이미지 캐시 재활용으로 빌드 준비 시간 단축
- TurboRepo 병렬 빌드와 캐시 입력/출력 설정 최적화로 불필요한 재빌드 감소
- 실패 시 concurrency=1로 재시도하고 디스크·메모리 사전 점검으로 안정성 보강
적용해볼 점
- 빌드 병목을 먼저 측정해 순차 실행과 캐시 설정을 점검하는 접근
- 병렬화 시 메모리 상한과 재시도 전략을 함께 설계하는 필요성
- 번들 최적화는 공유 패키지와 자주 쓰는 의존성부터 우선 검토하는 방식
