파이썬으로 전향하고 실제로 즐기게 된 경험

7 hours ago 2

  • 최근 AI 개발의 트렌드로 인해 본격적으로 파이썬 학습 및 사용을 시작함
  • 데이터 처리, 생태계 발전, 성능 향상 등 파이썬 언어와 도구 체계의 급격한 발전을 체감함
  • uv, ruff, pytest, Pydantic 등 최신 개발 도구와 라이브러리를 본인의 워크플로우에 적극 도입함
  • 프로덕션 환경과 Jupyter 노트북/스크립트 기반 개발 간의 차이를 줄이기 위한 프로젝트 구조 및 자동화 방안을 적용함
  • GitHub Actions, Docker 등을 활용해 CI/CD, 테스트, 인프라 관리를 효율적으로 구축함

파이썬으로의 전향 배경

  • 최근 6개월 동안 AI 붐에 힘입어 파이썬 프로그래밍에 더욱 몰입하게 된 경험임
  • 예전에는 파이썬을 간단한 스크립트 용도로만 사용했으나, AI 애플리케이션(RAG, 에이전트, 생성형 AI 툴 등) 개발 필요성으로 본격적으로 도입함
  • 파이썬은 인간 친화적인 문법과 범용적인 Unix 호환성, 그리고 VSCode 등 현대 에디터와의 통합으로 인해 실용성이 크게 향상됨

파이썬 생태계의 성장 및 도구 발전

  • 데이터 처리 및 분석을 위한 풍부한 라이브러리와 툴 생태계가 마련됨
  • Cython 등 정적 컴파일러의 지원으로 성능도 크게 개선
  • 과거의 난해한 문법 요소들(예: __init__, __new__ 등)은 대부분 감춰졌거나 현대적인 문법으로 대체됨
  • 여러 도구 및 환경설정의 변화를 직접 경험하면서 파이썬에 대한 애착과 긍정적 인식을 갖게 됨

파이썬 프로젝트 구조

  • 백엔드와 프론트엔드를 통합하는 모노레포 구조를 선호함

    • 코드 관리 효율성, 검색 용이성, 단순화된 배포 및 테스트 파이프라인 등을 이유로 단일 저장소를 선택함
    • 과도하게 프로젝트를 여러 저장소로 분리하는 것은 오버 엔지니어링의 신호라고 판단함
  • 전형적인 프로젝트 구조 예시는 다음과 같음

    • .github: GitHub Actions 등 CI/CD 워크플로우
    • .vscode: VSCode 환경 설정
    • docs: MkDocs 기반 정적 문서 및 사이트
    • project-api: 백엔드 및 데이터/노트북/툴/소스코드/테스트 포함
    • project-ui: 프론트엔드(React, Next.js 등)
    • 리포지토리 루트에 Makefile, docker-compose.yml, .pre-commit-config.yaml 등 핵심 관리 파일 포함
  • 프론트엔드는 무거운 데이터 처리를 금지하고 파이썬 기반 백엔드 API에 HTTP 요청을 위임함

  • 각 파이썬 모듈 디렉터리는 __init__.py로 명확히 지정함

주요 파이썬 개발 도구

uv

  • Astral에서 제공하는 최신 파이썬 패키지 매니저 및 빌드 도구
  • 의존성 관리, 가상환경 생성, 프로젝트 초기화 등 대부분의 작업을 빠르게 처리함
  • pyproject.toml이 핵심 설정 파일로, 모든 메타데이터 및 의존성 정보가 통합됨

ruff

  • 초고속 파이썬 린터 및 코드 포매터로, isort, flake8, autoflake 기능을 통합 제공함
  • PEP 8 코딩 스타일 가이드 기본 지원

ty

  • Astral에서 개발 중인 정적 타입 검사기로, typing 모듈과 연계하여 타입 오류를 사전에 탐지함
  • 초기 개발 단계임에도 안정적으로 사용할 만한 수준임

pytest

  • 단위테스트 및 확장 가능한 테스트 환경을 제공하는 대표적인 파이썬 테스트 프레임워크
  • 간단한 파일 네이밍 규칙과 명령어 한 줄로 바로 통합 테스트 가능함

Pydantic

  • 데이터 검증 및 환경 설정 관리 라이브러리
  • application의 다양한 설정값을 타입 기반으로 선언하고, 자동으로 환경 변수나 .env 파일에서 값을 읽어서 검증함

MkDocs

  • 파이썬 프로젝트의 정적 웹사이트 및 문서 생성을 간편하게 지원
  • 오픈소스 프로젝트 스타일의 미려한 디자인 빠른 적용 가능함

FastAPI

  • RESTful API 개발을 위한 프레임워크로, 자동 검증 및 문서화, 빠른 성능, 쉬운 Pydantic 통합 장점이 있음
  • Starlette 및 Pydantic 기반으로 높은 타입 안정성과 성능 제공

Dataclasses

  • 파이썬 표준 기능으로 데이터 중심 클래스를 간편하게 정의할 수 있음
  • 특별 메소드 자동 생성으로 보일러플레이트 코드 대폭 감소

버전 관리 및 자동화

GitHub Actions

  • 다양한 OS에서 CI 파이프라인 구축에 최적화된 워크플로우 제공
  • 도커 기반 테스트 환경으로 프로덕션과 동일한 환경에서 테스트 시행 가능

Dependabot

  • 자동 의존성 최신화 및 보안 패치 관리를 자동화함

Gitleaks

  • 민감 정보(비밀번호, API 키 등) 유출 방지 도구로 git 커밋 전에 보안 검사를 수행함

Pre-commit Hooks

  • 커밋 전 자동 린팅, 포매팅, 보안 검사를 위한 도구임
  • ruff, gitleaks 등과 함께 사용해 코드 일관성과 품질 유지

인프라 및 CI/CD 환경 관리

Make

  • 반복적인 개발·배포 명령을 단축키처럼 정의할 수 있음
  • API 및 인프라 레벨에서 Makefile 분리 관리(예: make test, make infrastructure-up)

Docker & Docker Compose

  • 컨테이너 기반 패키징 및 멀티 서비스 오케스트레이션 제공
  • Dockerfile에서 의존성 설치·코드 복사·서비스 기동 방식 명확히 정의
  • docker-compose.yml로 여러 서비스를 네트워크로 연결하고 환경변수, 볼륨 등을 통합 관리

마무리

위와 같이 최신 파이썬 개발 환경에서는 효율적이고 견고한 프로덕션 워크플로우를 구성할 수 있음
AI, 데이터, 웹 개발 등 다양한 영역에 걸쳐 파이썬 생태계의 성장과 도구 발전으로부터 많은 이점을 경험할 수 있음
모노레포 구조, 자동화 도구, 린터 및 타입 검사기, 즉각적인 테스트 환경, 문서화, 인프라 오케스트레이션까지 하나의 통합된 개발 문화를 구현할 수 있음

Read Entire Article