본문 바로가기
Web/FastAPI

FastAPI 이론

by 컴돈AI 2023. 12. 19.

목차

    FastAPI란

    • FastAPI는 빠른 웹 API를 구축하기 위한 Python 웹 프레임워크입니다. FastAPI는 ASGI(Asynchronous Server Gateway Interface) 규격에 따라 개발되었으므로, ASGI를 지원하는 웹 서버(Uvicorn, Hypercorn, Daphne 등)와 함께 사용될 수 있습니다.

    FastAPI 특징

    • 비동기 프로그래밍 지원
      • FastAPI는 Python의 비동기 프로그래밍 기능을 지원합니다.
      • 이는 효율적인 I/O 작업을 가능하게 하며, 더 많은 요청을 더 빠르게 처리할 수 있도록 해줍니다.
      • 다른 웹 프레임워크인 Flask와 Django도 비동기 프로그래밍을 지원하기 위해 점차 발전하고 있지만, FastAPI는 처음부터 비동기를 전면에 내세우며 설계된것이기때문에 비동기 프로그래밍에 특화되었습니다.
    • 타입 힌트와 자동 문서화
      • Python 3.6 이상의 타입 힌트를 사용하여 API를 정의합니다.
      • 이를 통해 자동으로 API 문서를 생성하고, 요청과 응답에 대한 데이터 검증을 할 수 있습니다.
    • 성능
      • FastAPI는 Starlette(비동기 웹 프레임워크)와 Pydantic(데이터 검증 라이브러리)을 기반으로 구축되어 있으며, 매우 빠른 성능을 제공합니다.
    • 간결함과 용이성
      • API를 구축하는데 필요한 코드 양이 적으며, 명료하고 이해하기 쉽습니다.

    웹 애플리케이션과 웹 서버

    • 웹 애플리케이션
      • 웹 애플리케이션은 사용자와 상호작용하는 웹 기반 프로그램입니다. 사용자의 요청에 따라 특정 작업을 수행하고, 결과를 웹 페이지 형태로 사용자에게 전달합니다.
      • FastAPI, Flask, Django 등의 프레임워크를 사용하여 구축된 애플리케이션이 웹 애플리케이션입니다. 웹 애플리케이션은 요청을 받아 처리하고 ,HTML, CSS, JavaScript 등을 이용해 사용자 인터페이스를 구성합니다. 또한 백엔드 로직을 실행하고 데이터를 관리합니다.
    • 웹 서버
      • 웹 서버는 인터넷을 통해 웹 페이지나 파일을 사용자의 브라우저로 전송하는 소프트웨어 또는 하드웨어 입니다.
      • FastAPI와 함께 사용되는 일반적인 ASGI 서버로는 Uvicorn, Hypercorn, Daphne 등이 있습니다. Uvicorn은 FastAPI 공식 문서에서 추천하는 가벼우면서도 빠른 ASGI 서버입니다. (파이썬은 WSGI나 ASGI 서버입니다.)
      • 다른 전통적인 웹 서버의 종류로는 Apache, Nginx,  Microsoft Internet Information Services (IIS) 등이 있습니다.

    ASGI(Asynchronous Server Gateway Interface)

    • ASGI의 정의
      • ASGI는 Python에서 비동기 웹 서버와 애플리케이션 사이의 인터페이스입니다.
        • ASGI는 FastAPI와 같은 웹 애플리케이션과 Uvicorn 같은 웹 서버 사이에서 동작하는 인터페이스 역할을 합니다.
      • WSGI(Web Server Gateway Interface)의 후속으로, 비동기 프로그래밍을 지원합니다.
        • WSGI의 기본 개념
          • WSGI는 파이썬에서 웹 서버와 웹 애플리케이션 사이의 인터페이스입니다. 즉 중간자 역할을 합니다. 이를 통해 웹 서버는 다양한 웹 애플리케이션과 연동할 수 있고, 웹 애플리케이션은 다양한 웹 서버에서 실행될 수 있습니다.  WSGI는 기본적으로 동기적 처리를 기반으로 합니다. 즉, 한 번에 하나의 요청을 처리하며, 해당 요청이 완료될 때까지 다른 요청은 대기 상태에 머무르게 됩니다.
      • ASGI는 웹 애플리케이션과 웹 서버 간의 통신을 가능하게 하는 규약으로, 특히 비동기 프로그래밍을 지원하는 웹 애플리케이션에 적합하게 설계되었습니다.
        • FastAPI는 ASGI 규격에 따라 개발되었으므로, ASGI를 지원하는 웹 서버와 함께 사용될 수 있습니다.
    • ASGI의 역할
      • 비동기 처리를 통해 웹 애플리케이션의 성능을 향상시킬 수 있도록 설계되었습니다.
      • Python의 비동기 기능을 활용하여, 동시에 여러 요청을 처리할 수 있도록 설계되었습니다. 이는 특히 실시간 데이터 처리, 대규모 트래픽 처리, WebSocket 통신 등에 유용합니다.

     

     

     

     

     

    'Web > FastAPI' 카테고리의 다른 글

    FastAPI vs APIRouter  (1) 2023.12.20
    FastAPI 기초  (0) 2023.12.19
    Visual Studio Code Python 초기 설정 (가상환경, Linter, Formatter, pip, .gitignore)  (0) 2023.12.15