FastAPI에서 Pydantic V2 마이그레이션 준비
배경
Pydantic V2 베타가 2월에 공개되었다. 팀 프로젝트에서 FastAPI를 사용 중이라 마이그레이션 영향도를 미리 파악해두기로 했다.
주요 변경사항
1. 성능 개선
Rust 기반 pydantic-core로 재작성되어 5-50배 빠르다고 한다. 벤치마크를 돌려보니 실제로 validation 속도가 체감될 정도였다.
2. Config 클래스 변경
기존 방식:
class User(BaseModel):
name: str
class Config:
orm_mode = True
V2 방식:
class User(BaseModel):
model_config = ConfigDict(from_attributes=True)
name: str
orm_mode가 from_attributes로 변경되었다.
3. Validator 데코레이터
# V1
@validator('email')
def validate_email(cls, v):
return v
# V2
@field_validator('email')
def validate_email(cls, v):
return v
@validator가 @field_validator로 명확해졌다.
당장 할 일
V2 정식 출시까지는 시간이 있으니 현재 코드베이스를 V1 최신 패턴으로 정리하기로 했다. deprecated된 __fields__ 접근을 model_fields로 변경하고, validator 로직을 단순화했다.
마이그레이션 가이드가 나오면 별도 브랜치에서 테스트 예정이다. 다행히 FastAPI 측에서도 호환성 유지를 약속했다.