DOCS/journey/troubleshooting/250723_happybell80_CI빌드시간단축.md
Claude-51124 22557e7132 docs: 오래된 트러블슈팅 아카이브 및 구조 정리
- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동
- book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서)
- 빈 폴더 제거 (journey/assets/*)
2025-11-17 14:06:05 +09:00

2.8 KiB

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 캐시 활성화

# 기존
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. 성능 측정 및 모니터링