Chapter 2-3 Dev Dependency 개념 및 활용 가이드(의존성 관리)

2025. 5. 23. 10:32·Fastapi

📦 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"

🔍 종속성의 두 가지 유형

  1. 런타임 종속성
    • 서버가 실행되는 동안 반드시 필요한 패키지
    • 예: fastapi, uvicorn, pydantic
  2. 개발 종속성 (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
'Fastapi' 카테고리의 다른 글
  • Chapter 2-5 테스트 스크립트 작성 가이드
  • Chapter 2-4 자동화 테스트가 필요한 이유
  • Chapter 2-2 Coverage 설치 및 테스트 커버리지 가이드
  • Chapter 2-1 Pytest 설치 및 단위 테스트 입문 가이드
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (794) N
      • Python (32)
      • 프로젝트 (113)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154) N
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    youngprofessionals
    travel ban
    livebroadcast
    trumpmuskclash
    global politics
    urbantrends
    gpterror
    btsjungkook
    chatgpterror
    self-growth
    hotcoffeecase
    chinanightlife
    뷔
    remittance
    RM
    smartphonedurability
    btsreunion
    life reflection
    homebartrend
    basalcellcarcinoma
    titaniumcase
    btsdischarge
    btscomeback
    lawsuitculture
    classaction
    americaparty
    americanlaw
    college reunions
    newpoliticalparty
    bts
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 2-3 Dev Dependency 개념 및 활용 가이드(의존성 관리)
상단으로

티스토리툴바