목차
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는 기본적으로 동기적 처리를 기반으로 합니다. 즉, 한 번에 하나의 요청을 처리하며, 해당 요청이 완료될 때까지 다른 요청은 대기 상태에 머무르게 됩니다.
- WSGI의 기본 개념
- ASGI는 웹 애플리케이션과 웹 서버 간의 통신을 가능하게 하는 규약으로, 특히 비동기 프로그래밍을 지원하는 웹 애플리케이션에 적합하게 설계되었습니다.
- FastAPI는 ASGI 규격에 따라 개발되었으므로, ASGI를 지원하는 웹 서버와 함께 사용될 수 있습니다.
- ASGI는 Python에서 비동기 웹 서버와 애플리케이션 사이의 인터페이스입니다.
- 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 |