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
All views expressed here are solely my own and do not represent those of any affiliated organization.

0개의 댓글