매우 빠르면서 간결한 코드가 특징인 파이썬 웹 프레임워크이다.
FastAPI는 ASGI(Asynchronous Server Gateway Interface)를 기반으로 하여 비동기 API를 자연스럽게 지원하고, Pydantic을 사용하여 데이터 검증과 직렬화를 처리한다.
비동기
비동기란 특정 코드나 작업이 오래 걸릴 때, 해당 작업이 실행되는 동안 다른 코드를 먼저 실행할 수 있게 하는 방식이다. 이는 I/O 병목현상(Input/Output bottleneck, 컴퓨터 시스템에서 데이터 입출력(I/O) 작업이 처리 속도의 주요 제한 요인이 되어 시스템 성능이 저하되는 상황)이 자주 일어나는 웹 서버에서 특히 유용하며, FastAPI의 빠른 성능의 핵심 요인이다. 이는 ASGI로 인해서 가능하다.
2️⃣-1️⃣ ASGI
비동기 처리를 지원하는 파이썬 웹 서버와 애플리케이션, 프레임워크 간의 표준 인터페이스이다.
FastAPI는 기본적으로 ASGI를 사용하여 비동기 처리를 지원하고, 비동기적인 I/O 작업을 효율적으로 처리한다. uvicorn과 같은 ASGI 서버에서 실행되며, 이를 통해 고성능 웹 애플리케이션을 구축할 수 있다. WebSocket과 같은 실시간 통신도 ASGI 덕분에 가능하다.
2️⃣-2️⃣ Pydantic
Pydantic은 Python에서 데이터 검증 및 직렬화 작업을 처리하는 라이브러리이다. 주로 타입 힌트를 활용하여 데이터의 정확성을 검사하고, JSON과 같은 데이터를 Python 객체로 변환하는 데 사용된다.
장점
빠른 개발 속도
FastAPI는 자동화된 데이터 검증, 문서화, 에러 처리 등을 통해 개발자가 빠르게 API를 개발할 수 있게 돕니다.
높은 성능
비동기 처리를 지원하여 대규모 시스템에서 뛰어난 성능을 발휘하며, 동시 요청을 효율적으로 처리할 수 있다.
자동 문서화
FastAPI는 API 문서를 자동으로 생성하고, Swagger UI를 통해 API를 직접 테스트할 수 있는 기능을 제공한다.
비동기 처리에 대한 학습 곡선
비동기 프로그래밍에 대한 이해가 부족하면 코드 흐름을 제대로 이해하지 못해 문제가 발생할 수 있다.
비동기 라이브러리 사용 필요
비동기 처리를 제대로 활용하려면 비동기 라이브러리를 사용해야 하며, 동기식 라이브러리와 함께 사용할 때 추가 작업이 필요하다.
Python 3.6 이상에서만 지원
FastAPI는 Python 3.6 이상에서만 작동하므로, 구버전 Python을 사용하는 시스템에서는 사용할 수 없다.