📦 Dev Dependency 개념 및 활용 가이드
🧾 Dev Dependency란?
개발을 진행하면서 설치한 패키지에 --group=dev 옵션을 사용했습니다. 이 dev 그룹은 개발 환경에서만 필요한 종속성을 의미합니다.
📌 pyproject.toml 예시
[tool.poetry.dependencies]
python = "^3.13"
fastapi = "^0.115.6"
uvicorn = "^0.32.1"
[tool.poetry.group.dev.dependencies]
black = "24.10.0"
ruff = "0.8.2"
mypy = "1.13.0"
pytest = "8.3.4"
coverage = "^7.6.9"
pytest-asyncio = "^0.25.0"
🔍 종속성의 두 가지 유형
- 런타임 종속성
- 서버가 실행되는 동안 반드시 필요한 패키지
- 예: fastapi, uvicorn, pydantic
- 개발 종속성 (dev)
- 개발, 테스트, 포매팅, 정적 검사 등에만 사용됨
- 예: black, ruff, pytest, mypy, coverage
group=dev은 해당 종속성이 실제 서비스 실행 중에는 필요하지 않다는 뜻입니다.
🚀 왜 분리해서 관리할까?
- ✅ 프로덕션 환경의 가벼움 유지
- 불필요한 패키지 설치 시간 단축
- 컨테이너 이미지 사이즈 감소 → 배포 속도 및 저장소 비용 절감
- ✅ 보안성 향상
- 최소한의 패키지만 포함되므로 보안 이슈 범위 축소
🐳 Docker 환경에서 특히 유용
- 매번 Docker 이미지를 새로 빌드할 때 이미지 사이즈가 작아짐
- EC2보다는 Kubernetes 기반의 무중단 배포 환경에서 큰 효과
- 배포 속도 및 비용 측면에서도 장점
🧪 Dev dependency 없이 설치하는 방법
poetry install --no-root --only main
- --no-root: 해당 프로젝트를 패키지로 인식하지 않고 앱으로 취급
- --only main: dev 그룹 제외, 실행에 필요한 종속성만 설치
📘 참고: https://python-poetry.org/docs/cli/#options-2
✅ Recap
- ✅ dev 종속성은 개발 중에만 필요한 도구들을 포함
- ✅ 실제 서버 운영 시에는 사용되지 않음 → 설치 생략 가능
- ✅ Docker/Kubernetes 환경에서는 이미지 최적화에 핵심
- ✅ --only main으로 필수 종속성만 설치 가능
프로젝트의 효율성과 배포 속도를 높이고 싶다면 dev dependency 관리를 꼭 실천하세요.
'Fastapi' 카테고리의 다른 글
Chapter 2-5 테스트 스크립트 작성 가이드 (0) | 2025.05.23 |
---|---|
Chapter 2-4 자동화 테스트가 필요한 이유 (0) | 2025.05.23 |
Chapter 2-2 Coverage 설치 및 테스트 커버리지 가이드 (0) | 2025.05.23 |
Chapter 2-1 Pytest 설치 및 단위 테스트 입문 가이드 (0) | 2025.05.23 |
Chapter 1-6 Mypy 설치 및 정적 타입 검사 가이드 (0) | 2025.05.23 |