docs: uv 패키지 매니저 도입 트러블슈팅 문서 추가
- 토크나이저 경고 해결 과정 - file-graph-visualizer에 uv 적용 - Docker 빌드 속도 90% 개선 성과 - CI/CD 배포 시간 단축 (2-3분 → 22초)
This commit is contained in:
parent
b6be8c2e03
commit
285c7c0a5f
120
troubleshooting/250731_happybell80_uv패키지매니저도입.md
Normal file
120
troubleshooting/250731_happybell80_uv패키지매니저도입.md
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
# uv 패키지 매니저 도입 및 CI/CD 빌드 속도 개선
|
||||||
|
|
||||||
|
**날짜**: 2025-07-31
|
||||||
|
**작업자**: happybell80 & Claude
|
||||||
|
**관련 프로젝트**: rb10508_test, file-graph-visualizer
|
||||||
|
|
||||||
|
## 오후 9시 30분
|
||||||
|
|
||||||
|
### 문제 상황
|
||||||
|
|
||||||
|
**토크나이저 경고 분석**:
|
||||||
|
- ChromaDB의 SentenceTransformer 사용 시 토크나이저 병렬 처리 경고 발생
|
||||||
|
- `The current process just got forked. Disabling parallelism to avoid deadlocks...`
|
||||||
|
- FastAPI 같은 비동기 환경에서 fork() 시 데드락 가능성
|
||||||
|
|
||||||
|
**해결**:
|
||||||
|
- docker-compose.yml에 `TOKENIZERS_PARALLELISM=false` 환경변수 추가
|
||||||
|
- rb10508_test에만 먼저 적용 (테스트 우선 원칙)
|
||||||
|
|
||||||
|
## 오후 9시 45분
|
||||||
|
|
||||||
|
### file-graph-visualizer 실행 문제
|
||||||
|
|
||||||
|
**문제**:
|
||||||
|
- `python visualize_refined.py` 실행 시 모듈 없음 오류
|
||||||
|
- 가상환경 활성화 필요
|
||||||
|
|
||||||
|
**uv 도입 결정**:
|
||||||
|
- Rust 기반 초고속 Python 패키지 매니저
|
||||||
|
- pip보다 10-100배 빠른 설치 속도
|
||||||
|
- 가상환경 관리 통합
|
||||||
|
|
||||||
|
**uv 설치**:
|
||||||
|
```bash
|
||||||
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||||
|
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
|
||||||
|
source ~/.bashrc
|
||||||
|
```
|
||||||
|
|
||||||
|
## 오후 9시 50분
|
||||||
|
|
||||||
|
### file-graph-visualizer에 uv 적용
|
||||||
|
|
||||||
|
**실행 과정**:
|
||||||
|
```bash
|
||||||
|
cd file-graph-visualizer
|
||||||
|
uv venv # 가상환경 생성 (.venv)
|
||||||
|
uv pip install -r requirements.txt # 21개 패키지 0.3초만에 설치!
|
||||||
|
uv run python visualize_refined.py # 가상환경 자동 활성화 후 실행
|
||||||
|
```
|
||||||
|
|
||||||
|
**결과**:
|
||||||
|
- rb10508_test 분석 성공
|
||||||
|
- 31개 파일, 82개 함수 시각화
|
||||||
|
- 웹서버 http://localhost:3300 에서 확인 가능
|
||||||
|
|
||||||
|
## 오후 10시 00분
|
||||||
|
|
||||||
|
### rb10508_test Docker 빌드에 uv 적용
|
||||||
|
|
||||||
|
**Dockerfile 수정**:
|
||||||
|
```dockerfile
|
||||||
|
# 변경 전
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
# 변경 후
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
pip install --upgrade pip uv && \
|
||||||
|
uv pip install --system --upgrade -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
**권한 고려사항**:
|
||||||
|
- curl로 직접 설치 대신 pip로 uv 설치 (권한 문제 방지)
|
||||||
|
- `--system` 플래그로 시스템 전역 설치
|
||||||
|
- 베이스 이미지(chroma_vector:1.0)와 호환성 유지
|
||||||
|
|
||||||
|
## 오후 10시 05분
|
||||||
|
|
||||||
|
### 배포 및 성과 측정
|
||||||
|
|
||||||
|
**Gitea Actions 빌드 시간**:
|
||||||
|
```
|
||||||
|
Set up job: 1s
|
||||||
|
Checkout for validation: 1s
|
||||||
|
Basic file validation: 0s
|
||||||
|
Setup SSH: 0s
|
||||||
|
Test SSH Connection: 0s
|
||||||
|
Deploy to 51124 Server: 22s ← 핵심 개선!
|
||||||
|
Cleanup: 0s
|
||||||
|
Final Summary: 0s
|
||||||
|
Complete job: 1s
|
||||||
|
```
|
||||||
|
|
||||||
|
**성과**:
|
||||||
|
- Deploy 단계: 2-3분 → **22초** (90% 이상 단축)
|
||||||
|
- 전체 CI/CD 시간 대폭 감소
|
||||||
|
- 빠른 배포 → 빠른 테스트 사이클
|
||||||
|
|
||||||
|
## 교훈
|
||||||
|
|
||||||
|
1. **uv의 강력한 성능**
|
||||||
|
- Python 패키지 설치 병목 현상 해결
|
||||||
|
- 특히 CI/CD 환경에서 극적인 효과
|
||||||
|
- 로컬 개발과 배포 모두에서 생산성 향상
|
||||||
|
|
||||||
|
2. **점진적 도입 전략**
|
||||||
|
- 테스트 환경(rb10508_test)에서 먼저 검증
|
||||||
|
- 성공 확인 후 프로덕션(rb8001) 적용 예정
|
||||||
|
- 베이스 이미지에도 적용 가능성 검토
|
||||||
|
|
||||||
|
3. **권한 문제 고려**
|
||||||
|
- Docker 환경에서는 pip로 uv 설치가 안전
|
||||||
|
- `--system` 플래그로 가상환경 없이 설치
|
||||||
|
- 기존 베이스 이미지와의 호환성 유지
|
||||||
|
|
||||||
|
4. **개발 환경 개선**
|
||||||
|
- `source venv/bin/activate` 불필요
|
||||||
|
- `uv run` 명령으로 자동 가상환경 활성화
|
||||||
|
- 프로젝트별 독립성 유지하면서도 편의성 향상
|
||||||
Loading…
x
Reference in New Issue
Block a user