- 최근 AI 개발의 트렌드로 인해 본격적으로 파이썬 학습 및 사용을 시작했고, 이제는 그 생태계에 큰 만족을 느끼고 있음
- Python은 과거보다 훨씬 빠르고 현대적인 언어로 발전했고, Cython을 통한 성능 향상 등 급격한 발전을 체감함
- uv, ruff, pytest, Pydantic 등 최신 개발 도구와 라이브러리를 본인의 워크플로우에 적극 도입하여 개발 생산성을 높이고 있음
- 프로덕션 환경과 Jupyter 노트북/스크립트 기반 개발 간의 차이를 줄이기 위한 프로젝트 구조 및 자동화 방안도 적용
- GitHub Actions, Docker 등을 활용해 CI/CD, 테스트, 인프라 관리를 효율적으로 구축함
I’m Switching to Python and Actually Liking It 요약
왜 파이썬으로 전향했는가
- AI 중심의 개발 환경에서는 Python이 사실상의 표준 언어로 자리잡고 있음
- 과거에는 단순한 스크립트 작성에만 사용했지만, 최근에는 RAG, 에이전트, 생성형 AI 등의 “실전용 앱”을 만들기 위해 진지하게 사용하게 되었음
- 그 과정에서 Python 생태계가 과거에 비해 매우 진화했다는 사실을 체감하게 되었음
Python의 강점 3가지
- 풍부한 라이브러리와 도구 생태계: 데이터 처리, 분석, 웹, AI에 특화
- Cython 등으로 인한 성능 개선: 컴파일 기반 최적화 가능
- 개선된 문법 가독성:
__init__,__new__같은 레거시 문법은 감춰지고, 더 직관적인 문법 제공
프로젝트 구조 (Monorepo 기반)
- 백엔드와 프론트엔드를 통합하는 모노레포 구조를 선호함
- 코드 관리 효율성, 검색 용이성, 단순화된 배포 및 테스트 파이프라인 등을 이유로 단일 저장소를 선택함
- 과도하게 프로젝트를 여러 저장소로 분리하는 것은 오버 엔지니어링의 신호라고 판단함
- 전형적인 프로젝트 구조 예시는 다음과 같음
project/ ├── .github/ : GitHub Actions 등 CI/CD 워크플로우 ├── .vscode/ : VSCode 환경 설정 ├── docs/ : MkDocs 기반 정적 문서 및 사이트 ├── project-api/ : FastAPI 백엔드 및 데이터/노트북/툴/소스코드/테스트 포함 ├── project-ui/ : React/Next.js 프론트엔드 ├── docker-compose.yml (통합 실행) └── Makefile 등 자동화 스크립트 - API 서버에서 처리된 데이터를 프론트엔드가 HTTP 요청으로 가져오는 방식으로 책임 분리
- 프론트엔드는 무거운 데이터 처리를 금지하고 파이썬 기반 백엔드 API에 HTTP 요청을 위임함
- 각 파이썬 모듈 디렉터리는
__init__.py로 명확히 지정함 project-api내부에는src/app,notebooks,tools,tests폴더를 분리해 구성
주요 도구 및 설정
-
uv
- Astral에서 제공하는 최신 파이썬 패키지 매니저 및 빌드 도구
- 의존성 관리, 가상환경 생성, 프로젝트 초기화 등 대부분의 작업을 빠르게 처리함
pyproject.toml이 핵심 설정 파일로, 모든 메타데이터 및 의존성 정보가 통합됨uv init,uv add,uv sync명령어로 빠르게 프로젝트 환경 구성 가능
-
ruff
- 초고속 파이썬 린터 및 코드 포매터
isort,flake8,autoflake등을 통합한 도구ruff check,ruff format으로 린팅 및 자동 수정- PEP 8 코딩 스타일 가이드 기본 지원
-
ty
- Astral이 만든 Python용 정적 타입 검사기
typing과 조합해 정적 분석, 초기 버그 방지에 효과적- 초기 개발 단계임에도 안정적으로 사용할 만한 수준임
-
pytest
- 단위테스트 및 확장 가능한 테스트 환경을 제공하는 대표적인 파이썬 테스트 프레임워크
- 간단한 파일 네이밍 규칙과 명령어 한 줄로 바로 통합 테스트 가능함
test_*.py로 테스트 구성 후uv run pytest로 실행
- 간결한 문법, 풍부한 플러그인 생태계
-
Pydantic
- 데이터 검증 및 환경 설정 관리 라이브러리
.env환경변수 기반 설정 로딩 및 타입 검증BaseSettings클래스를 통해 API 키나 DB URL 등을 안전하게 관리
-
MkDocs
- 파이썬 프로젝트의 정적 웹사이트 및 문서 생성을 간편하게 지원
- 오픈소스 프로젝트 스타일의 미려한 디자인 빠른 적용 가능
- GitHub Pages 연동도 용이
-
FastAPI
- 빠른 RESTful API 구축 프레임워크
- 자동 검증 및 문서화, 빠른 성능, 쉬운 Pydantic 통합 장점
- Starlette 및 Pydantic 기반으로 높은 타입 안정성과 성능 제공
-
Dataclasses
- 파이썬 표준 기능으로 데이터 중심 클래스를 간편하게 정의할 수 있음
- 특별 메소드 자동 생성으로 보일러플레이트 코드 대폭 감소
버전 관리 및 자동화
-
GitHub Actions
project-api와project-ui각각에 대해 별도 CI 파이프라인 구성- 다양한 OS에서 CI 파이프라인 구축에 최적화된 워크플로우 제공
- 도커 기반 테스트 환경으로 프로덕션과 동일한 환경에서 테스트 시행 가능
-
Dependabot
- 자동 의존성 최신화 및 보안 패치 관리를 자동화함
-
Gitleaks
- 민감 정보(비밀번호, API 키 등) 유출 방지 도구로 git 커밋 전에 보안 검사를 수행함
-
Pre-commit Hooks
- 커밋 전 자동 린팅, 포매팅, 보안 검사를 위한 도구임
- ruff, gitleaks 등과 함께 사용해 코드 일관성과 품질 유지
인프라 자동화
-
Make
make test,make infrastructure-up등의 명령어로 일관된 개발 워크플로우 지원- 프로젝트 루트와
project-api에 각각 Makefile 존재
-
Docker & Docker Compose
project-api,project-ui각각을 컨테이너로 분리 실행docker compose up --build -d한 줄로 전체 앱 실행 가능Dockerfile에는 uv 설치, FastAPI 앱 실행 명령어 포함
마무리
- 위와 같이 최신 파이썬 개발 환경에서는 효율적이고 견고한 프로덕션 워크플로우를 구성할 수 있음
- AI, 데이터, 웹 개발 등 다양한 영역에 걸쳐 파이썬 생태계의 성장과 도구 발전으로부터 많은 이점을 경험 가능
- 모노레포 구조, 자동화 도구, 린터 및 타입 검사기, 즉각적인 테스트 환경, 문서화, 인프라 오케스트레이션까지 하나의 통합된 개발 문화를 구현할 수 있음