FastAPI에서 Pydantic V2 마이그레이션 준비

배경

Pydantic V2 베타가 릴리스되면서 Rust 기반의 성능 개선이 화제다. 현재 운영 중인 FastAPI 서비스가 Pydantic V1에 의존하고 있어, 마이그레이션 영향도를 사전 조사했다.

주요 변경사항

1. 성능 개선

Rust 기반 pydantic-core 덕분에 validation 속도가 5-50배 빨라졌다고 한다. 벤치마크 결과 실제로 JSON parsing이 체감될 정도로 빨라졌다.

2. Config 클래스 변경

기존 방식:

class User(BaseModel):
    name: str
    
    class Config:
        orm_mode = True

새로운 방식:

class User(BaseModel):
    model_config = ConfigDict(from_attributes=True)
    name: str

orm_modefrom_attributes로 변경되었다. SQLAlchemy 모델 연동 코드를 전부 수정해야 한다.

3. validator 데코레이터 변경

기존:

@validator('email')
def validate_email(cls, v):
    return v.lower()

신규:

@field_validator('email')
def validate_email(cls, v):
    return v.lower()

마이그레이션 전략

  1. 테스트 커버리지 확보: 현재 70% 수준인 테스트를 90% 이상으로 올렸다
  2. 의존성 체크: pydantic<2.0 고정 후 서드파티 라이브러리 호환성 확인
  3. 단계적 적용: 신규 모듈부터 V2 적용, 레거시는 천천히 마이그레이션

FastAPI 자체도 Pydantic V2 완전 지원까지 시간이 필요할 것으로 보여 당장은 V1 유지가 현실적이다.

결론

성능 개선은 매력적이지만 Breaking Changes가 많아 신중한 접근이 필요하다. 일단 스테이징 환경에서 테스트를 진행하고, 메이저 버전 업그레이드는 2-3개월 후로 계획했다.