Flask 기반 HTTP API 서버와 FastAPI

calico·2025년 10월 20일

Computer Science

목록 보기
38/51

1. Flask 기반 HTTP API 서버와 FastAPI 기본 구조 비교


항목FlaskFastAPI
기반WSGI(Web Server Gateway Interface)ASGI(Asynchronous Server Gateway Interface)
성능동기 처리 중심, 비동기 지원 제한비동기 처리 지원(async/await), 고성능
문서화자동 문서화 없음 → Swagger 등 직접 설정 필요Swagger UI, ReDoc 자동 생성
데이터 검증수동 처리 (request 데이터 직접 검증)Pydantic 기반 자동 검증
학습 곡선간단, 직관적Python 타입 힌트 이해 필요
생태계오래된 프레임워크, 라이브러리 풍부최신 프레임워크, 빠르게 성장 중
배포Gunicorn, uWSGI 등 WSGI 서버Uvicorn, Hypercorn 등 ASGI 서버



2. 코드 비교 예시


Flask 버전


from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/predict", methods=["POST"])
def predict():
    data = request.get_json()
    result = model.predict(data["features"])
    return jsonify({"prediction": result})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)
  • 장점: 직관적, 빠르게 시작 가능

  • 단점: 데이터 검증, 문서화, 비동기 처리 직접 구현 필요



FastAPI 버전


from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class PredictRequest(BaseModel):
    features: list[float]

class PredictResponse(BaseModel):
    prediction: float

@app.post("/predict", response_model=PredictResponse)
async def predict(req: PredictRequest):
    result = model.predict(req.features)
    return {"prediction": result}

  • 장점

    • PredictRequest로 데이터 자동 검증

    • /docs 접속 시 Swagger UI 자동 생성

    • 비동기 처리(async def)로 성능 향상 가능

  • 단점

    • 타입 힌트와 Pydantic 모델 작성 필요 → 초기 진입 장벽



3. 실무 관점 장단점


Flask


장점

  • 오래된 프레임워크 → 레퍼런스와 예제 풍부

  • 간단한 API 서버에 적합

  • 기존 레거시 시스템과 호환성 높음

단점

  • 비동기 처리 어려움 → 대규모 트래픽에 한계

  • 자동 문서화 없음 → API 명세 관리 부담

  • 데이터 검증 로직을 직접 작성해야 함



FastAPI


장점

  • 비동기 지원 → 외부 API 호출, DB I/O 성능 향상

  • 자동 문서화 → 협업 효율 ↑

  • 타입 기반 데이터 검증 → 안정성 ↑

  • 최신 Python 문법 적극 활용

단점

  • 상대적으로 생태계가 신생 → 일부 라이브러리 호환성 이슈 가능

  • 타입 힌트와 Pydantic 모델 작성이 번거로울 수 있음



4. 선택 가이드


  • 소규모, 간단한 API → Flask
    (빠른 개발, 학습 곡선 낮음)

  • 대규모, 비동기 처리 필요, 협업 문서화 중요 → FastAPI
    (성능, 유지보수, 자동 문서화)



실무 팁


현재 Flask로 작성된 머신러닝 API를 FastAPI로 변환하면

  1. 성능 향상: 비동기 처리로 응답 속도 개선

  2. 문서 자동화: /docs로 API 스펙 공유

  3. 데이터 안정성: 잘못된 요청 데이터 자동 차단



profile
개인 블로그

0개의 댓글