FastAPI에서 Pydantic V2 마이그레이션 준비하기
배경
Pydantic V2 베타가 공개되면서 성능 개선(Rust 기반 코어)과 API 변경사항이 발표되었다. 현재 운영 중인 FastAPI 서비스들이 Pydantic에 강하게 의존하고 있어, 정식 출시 전 마이그레이션 포인트를 미리 파악해두기로 했다.
주요 변경사항
1. Config 클래스 방식 변경
기존 방식:
class User(BaseModel):
id: int
name: str
class Config:
orm_mode = True
V2에서는 ConfigDict 사용:
from pydantic import ConfigDict
class User(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
name: str
2. validator 데코레이터 변경
기존:
@validator('email')
def validate_email(cls, v):
if '@' not in v:
raise ValueError('Invalid email')
return v
V2:
@field_validator('email')
def validate_email(cls, v):
if '@' not in v:
raise ValueError('Invalid email')
return v
현재 대응 방안
- 타입 힌트 정확도 높이기: V2는 타입 검증이 더 엄격해진다.
Optional,Union등을 명확히 명시 - orm_mode 사용처 문서화:
from_attributes로 변경될 부분 리스트업 - 커스텀 validator 목록화:
@validator사용처 전수조사
성능 벤치마크
간단한 모델 파싱 테스트 결과 V2가 약 5-10배 빠른 것으로 확인되었다. 대량의 데이터 validation이 필요한 배치 작업에서는 의미있는 개선이 예상된다.
정식 출시는 2023년 초로 예상되지만, 미리 준비해두면 마이그레이션 부담을 줄일 수 있을 것 같다.