Python
FastAPI
Uvicorn
Pydantic
FastAPI
-
마이크로 프레임워크
- 마이크로 프레임워크: 필수 기능만 제공하는 경량화된 프레임워크
- 꼭 필요한 기능만 사용해 빠르고 가볍게 개발 가능
- 풀스택 프레임워크(장고)가 항공 모함이라고 한다면, 마이크로 프레임워크는 돛단배
- 추가적으로 필요한 기능은 라이브러리를 붙여 해결
-
빠른 속도
-
비동기 프로그래밍으로 I/O 작업(DB 쿼리, 네트워크 통신)이 많은 애플리케이션에 높은 성능
- 즉, 한 요청이 끝나야 다음 요청을 처리(동기 처리)하는 Django, Flask와 달리, 한 요청이 끝나기 전에 다른 요청을 함께 처리 가능 (비동기 처리)
-
Node.js, Go와 대등할 정도의 높은 성능 (Starlette을 상속 받아 강화시킴)
-
생산성
-
간결한 코드로 쉽게 API 개발
- 빠른 러닝 커브
- 자동 문서화
- 유효성 검사
-
Pydantic과의 integration으로 강력한 데이터 유효성 검사 (type hint로 지원)
- 강력한 IDE Auto Completion
FastAPI with Open API Specification
- Open API Specification
- API schema를 구상할 때 따르길 권장하는 표준
- Linux 재단에서 운영하는 공동 프로젝트
- 모든 HTTP API 스타일을 담진 않지만, 표준을 지켰을 때 RESTful API를 지향할 수 있도록 도움
- 송수신하는 데이터 타입: JSON schema
- FastAPI & Open API Specification
- FastAPI는 Open API Specification을 따름
- Open API schema를 통해 Swagger UI와 ReDoc 문서 자동 생성
Starlette
- FastAPI가 상속하고 있는 경량화된 ASGI 프레임워크
-
파이썬 프레임워크 중 가장 빠르며 고성능 async 서비스를 만들기 적합
- FastAPI는 속도가 빠른 Starlette에 몇가지 기능을 추가한 것
- 타입 힌트를 통한 데이터 유효성 검사
- 직렬화
- 문서 자동화
- 의존성 주입 및 보안 유틸리티 등
Uvicorn
-
uvloop과 httptools를 사용하는 초고속 ASGI 서버
- FastAPI와 Starlette은 Uvicorn 서버 위에서 동작
- FastAPI와 Starlette의 속도가 빠른 이유
Pydantic
- 파이썬 타입 힌트를 사용하여 데이터 유효성 검사를 수행하는 라이브러리
- 핵심 validation logic이 Rust로 작성되어서 매우 빠름
- 확장성이 높고 IDE 지원이 잘됨
- FastAPI에서는 데이터 유효성 검사와 더불어 직렬화 및 API 문서 정의에 사용