0. FastAPI이란?

0. FastAPI이란?

FastAPI


FAST API란?

  • FastAPI는 Python으로 작성된 현대적인 웹 프레임워크로, asyncio를 기반으로 한 ASGI(Asynchronous Server Gateway Interface)를 사용하여 비동기 작업을 통해 고성능과 간단한 코드 작성 방식을 제공합니다.
  • 비동기 작업은 요청이 들어올 때 블로킹되지 않고 여러 작업을 병렬로 처리하므로, I/O 바운드 작업(예: 데이터베이스 쿼리, 외부 API 호출)에 대해 매우 높은 성능을 발휘합니다.
# 예시
from fastapi import FastAPI

app = FastAPI()

@app.get("/async-example")
async def async_example():
    data = await fetch_data_from_api()
    db_result = await fetch_data_from_db()
    return {"api_data": data, "db_result": db_result}
  • FastAPI는 비동기 처리와 함께 Pydantic의 데이터 검증을 활용하여 JSON 데이터의 직렬화 및 역직렬화를 최적화
  • Starlette와 Uvicorn 사용
    • FastAPI는 Starlette을 기반으로 하여 HTTP 및 WebSocket 처리 성능이 뛰어나며, Uvicorn이라는 ASGI 서버로 실행됩니다.
    • Uvicorn은 단일 스레드로도 높은 요청 처리량을 제공하며, 멀티프로세스 옵션을 통해 대규모 서비스에서도 확장 가능합니다
  • Swagger UI 및 ReDoc 같은 UI로 API 문서를 확인하고 테스트가 가능합니다.

FAST API의 역사

FastAPI는 2018년에 Sebastián Ramírez에 의해 처음 발표되었습니다. Flask와 Django와 같은 기존 프레임워크의 제한점을 보완하고, 비동기 프로그래밍의 필요성을 반영하여 설계되었습니다.


FAST API의 특징

FAST API의 장점

  1. 빠른 개발 속도
    자동완성 및 OpenAPI 지원으로 빠르고 효율적인 API 개발이 가능합니다.

    from typing import Union
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def read_root():
        return {"Hello": "World"}
    
    
    @app.get("/items/{item_id}")
    def read_item(item_id: int, q: Union[str, None] = None):
        return {"item_id": item_id, "q": q}
  2. 고성능
    FastAPI는 ASGI를 기반으로 하여 비동기 I/O 작업을 효율적으로 처리하며, Flask와 같은 기존 프레임워크보다 더 높은 성능을 자랑합니다.

  3. 자동 문서 생성
    Swagger UI와 ReDoc을 통해 API 문서를 자동으로 생성합니다.
    Swagger UI

  4. 데이터 검증 및 직렬화
    Pydantic을 활용한 강력한 데이터 검증 기능을 제공합니다. 이를 통해 JSON 데이터를 Python 객체로 안전하게 변환하고, 잘못된 데이터 처리를 방지합니다.

  5. OAuth2 및 보안
    FastAPI는 OAuth2 및 다양한 인증 방식을 기본 지원하여 보안이 중요한 API 개발에 적합합니다.


FAST API의 단점

  1. 학습 자료 부족
    FastAPI는 비교적 새로운 프레임워크로, Django와 Flask에 비해 학습 자료가 제한적입니다.

  2. 코드 복잡성 증가
    FastAPI는 다양한 기능을 제공하지만, 프로젝트 규모가 커질수록 코드 구조가 복잡해질 수 있습니다. 이를 해결하려면 모듈화를 적절히 활용해야 합니다.


Python Framework 비교

기능 FastAPI Flask Django
속도 매우 빠름 보통 보통
비동기 지원 지원 기본 미지원 Django 3.0+부터 제한적으로 지원
문서화 자동 생성 수동 작성 필요 수동 작성 필요
데이터 검증 기본 제공 (Pydantic) 수동 작성 필요 수동 작성 필요
커뮤니티 성장 중 매우 크고 활성화 매우 크고 활성화

출처 : Chat GPT


FastAPI 활용 사례

  • 머신러닝 모델 배포
    FastAPI는 비동기 기능 덕분에 고성능 머신러닝 API를 쉽게 구현할 수 있습니다. 모델 예측 결과를 빠르게 제공하거나 데이터를 실시간으로 처리하는 데 유리합니다.

  • IoT 애플리케이션
    대규모 IoT 기기와의 데이터 통신 및 제어를 위한 API를 개발할 때 이상적입니다.


RSS Feed
마지막 수정일자