FastAPI

calico·2025년 10월 20일

Computer Science

목록 보기
36/51

https://fastapi.tiangolo.com/ko/

1. FastAPI란?


  • FastAPI는 Python 기반의 고성능 웹 프레임워크로, API 서버를 빠르게 개발할 수 있도록 설계되었습니다.
  • 주요 특징

    • 빠른 성능: Starlette(ASGI)와 Pydantic을 기반으로 하여 매우 빠른 요청 처리 속도를 제공

    • 자동 문서화: Swagger UI와 ReDoc을 통한 API 문서 자동 생성

    • 타입 힌트 기반 개발: Python의 타입 힌트를 활용해 데이터 검증 및 직렬화 자동 처리

    • 비동기 지원: async/await 문법을 통한 비동기 처리 가능



2. 실무 활용 포인트


1) 빠른 API 개발


  • 자동 문서화 덕분에 프론트엔드/백엔드 협업 시 API 스펙 공유가 용이

  • 데이터 검증 로직을 별도로 작성할 필요 없이 Pydantic 모델로 처리 가능



2) 비동기 처리


  • 외부 API 호출, DB 쿼리 등 I/O 작업이 많은 서비스에서 성능 향상

  • 예: 채팅 서버, 실시간 데이터 처리 API



3) 마이크로서비스 구조에 적합


  • 경량 프레임워크라서 컨테이너(Docker) 배포에 유리

  • API Gateway와 함께 사용하기 좋음



3. 기본 예시 코드


from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# 데이터 모델 정의
class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None

# GET 요청 예시
@app.get("/")
def read_root():
    return {"message": "Hello FastAPI"}

# Path Parameter 예시
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

# POST 요청 예시
@app.post("/items/")
def create_item(item: Item):
    return {"item": item}

실행 방법


uvicorn main:app --reload
  • main:appmain.py 파일의 app 객체

  • --reload → 코드 변경 시 자동 재시작



4. 장단점


장점

  • 개발 속도 빠름

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

  • 비동기 지원으로 성능 ↑

  • 타입 기반 데이터 검증

단점

  • Django처럼 ORM, Admin 등 풀스택 기능은 없음

  • 대규모 프로젝트에서는 구조 설계 필요

  • ASGI 기반이므로 WSGI 환경과 호환성 제한



5. 주의사항


  • 데이터 검증: Pydantic 모델을 적극 활용하되, 복잡한 검증 로직은 별도 함수로 관리

  • 비동기 처리: DB 드라이버나 외부 API 라이브러리가 비동기를 지원하는지 확인 필요

  • 배포 환경: 프로덕션에서는 uvicorn 단독 실행보다 gunicorn + uvicorn workers 조합 권장


실무에서는 FastAPI를 API Gateway 뒤에서 마이크로서비스로 운영하거나, 서버리스 환경(AWS Lambda, Azure Functions)에서 경량 API로 활용하는 경우가 많습니다.



profile
개인 블로그

0개의 댓글