# rb10508_test CI/CD 빌드 시간 단축 **날짜**: 2025-07-23 **작업자**: happybell80 & Claude ## 오후 1시 00분 ### CI/CD 빌드 시간 지연 문제 발견 **증상**: - 첫 빌드: 5분 소요 - 이후 빌드: 30초 소요 - pip install 단계에서 대부분의 시간 소비 **원인 분석**: 1. Docker 캐시 미사용 시 전체 재빌드 2. requirements.txt의 대용량 패키지들 - torch>=2.0.0 (2GB 이상) - sentence-transformers>=2.2.0 - chromadb>=0.4.0 - langchain>=0.1.0 ## 오후 1시 10분 ### 사용하지 않는 의존성 분석 **분석 방법**: - grep으로 실제 import 확인 - 코드베이스 전체 검색 **발견된 미사용 패키지**: 1. **큰 패키지 (제거 시 가장 효과적)**: - torch (2GB+) - 전혀 사용 안함 - sentence-transformers - 사용 안함 - alembic - DB 마이그레이션 사용 안함 2. **Google 관련 (전부 미사용)**: - google-auth - google-auth-oauthlib - google-auth-httplib2 - google-api-python-client 3. **기타 미사용**: - openai (langchain-openai로 충분) - pymupdf - email-validator - passlib[bcrypt] - python-jose[cryptography] - pyjwt ## 오후 1시 20분 ### 의존성 정리 **작업 내용**: - requirements.txt에서 미사용 패키지 제거 - 총 13개 패키지 제거 **결과**: - pip install 시간 예상: 3분 → 30초 이하 ## 오후 1시 30분 ### Docker 빌드 최적화 **재확인된 문제**: - Dockerfile에 `--no-cache-dir` 옵션 사용 - 매번 모든 패키지 새로 다운로드 - 54초 소요 (전체 빌드의 83%) **해결 방안 구현**: ### 1. pip 캐시 활성화 ```dockerfile # 기존 RUN pip install --no-cache-dir --upgrade -r requirements.txt # 변경 RUN --mount=type=cache,target=/root/.cache/pip \ pip install --upgrade -r requirements.txt ``` ### 2. 베이스 이미지 전략 **Dockerfile.base 생성**: - 모든 의존성 사전 설치 - 베이스 이미지로 재사용 **Dockerfile.optimized 생성**: - 베이스 이미지 활용 - 코드만 복사하여 빠른 빌드 **build-base.sh 스크립트**: - 베이스 이미지 빌드 자동화 - 버전 관리 및 태깅 ## 교훈 1. **의존성 관리의 중요성** - 사용하지 않는 패키지는 즉시 제거 - 특히 ML/AI 패키지는 용량이 크므로 주의 - 정기적인 의존성 감사 필요 2. **Docker 최적화 전략** - `--no-cache-dir`는 CI/CD에서 피하기 - 베이스 이미지 전략으로 빌드 시간 대폭 단축 - BuildKit 캐시 마운트 활용 3. **CI/CD 성능 개선** - 첫 빌드 5분 → 30초로 90% 단축 가능 - 베이스 이미지 업데이트는 requirements.txt 변경 시에만 ## 다음 단계 1. 서버에서 베이스 이미지 빌드 및 푸시 2. CI/CD 파일에서 Dockerfile.optimized 사용하도록 변경 3. 성능 측정 및 모니터링