- 최근 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, 데이터, 웹 개발 등 다양한 영역에 걸쳐 파이썬 생태계의 성장과 도구 발전으로부터 많은 이점을 경험할 수 있음
모노레포 구조, 자동화 도구, 린터 및 타입 검사기, 즉각적인 테스트 환경, 문서화, 인프라 오케스트레이션까지 하나의 통합된 개발 문화를 구현할 수 있음