API 버전 관리 및 문서화

FastAPI로 AI 프로덕션 배포하기

Matt Eckerle

Software and Data Engineering Leader

API 버전 관리가 필요한 이유

 

  • API 엔드포인트를 메뉴 항목으로
  • 기존 고객 만족 유지
  • 일부 고객은 새 옵션 원함
  • 기존 고객에게 영향 없이 반복 개선

레스토랑

FastAPI로 AI 프로덕션 배포하기

클라우드 AI 작업을 위한 API

from pydantic import BaseModel

class AIJobV1(BaseModel):
    job_name: str
    data: bytes
class AIJobV1(BaseModel):
    job_name: str
    data: bytes
    config: dict

FastAPI 로고 AI 클라우드

FastAPI로 AI 프로덕션 배포하기

버전이 지정된 엔드포인트

from pydantic import BaseModel

class AIJobV1(BaseModel):
    job_name: str
    data: bytes

class AIJobV2(BaseModel): job_name: str data: bytes config: dict
from fastapi import FastAPI

app = FastAPI()

@app.post("/v1/ai-job")
def ai_job_v1(job: AIJobV1):
    ...

@app.post("/v2/ai-job") def ai_job_v2(job: AIJobV2): ...
FastAPI로 AI 프로덕션 배포하기

엔드포인트 버전 업데이트 이유

 

  • 스키마의 중대한 변경
  • 기반 함수 변경
    • 모델 코드 업데이트
    • 모델 학습 데이터셋 업데이트
    • 전처리/후처리 업데이트
FastAPI로 AI 프로덕션 배포하기

선택적 필드를 활용한 반복 개선

 

  • 버전 관리 없이도 반복 개선 가능
  • 선택적 필드를 사용하면 스키마 손상 없이 데이터 추가 가능
from pydantic import BaseModel

class AIJobV1(BaseModel):
    job_name: str
    data: bytes


from typing import Optional class AIJobV1(BaseModel): job_name: str data: bytes config: Optional[dict]
FastAPI로 AI 프로덕션 배포하기

Swagger로 API 문서화하기

 

 

  • API 문서화를 위한 표준 도구
    • 엔드포인트 및 버전 관리
    • OpenAPI 표준 메타데이터 기반

 

Swagger 로고

OpenAPI 로고

FastAPI로 AI 프로덕션 배포하기

Swagger UI

Swagger URL Swagger UI

FastAPI로 AI 프로덕션 배포하기

엔드포인트의 Swagger UI

엔드포인트용 FastAPI Swagger UI

FastAPI로 AI 프로덕션 배포하기

FastAPI의 description 필드 사용

from fastapi import FastAPI

app = FastAPI(
    description="AI Job API"
)

설명 헤더가 있는 FastAPI Swagger UI

FastAPI로 AI 프로덕션 배포하기

연습해 봅시다!

FastAPI로 AI 프로덕션 배포하기

Preparing Video For Download...