backend/FastAPI
FastAPI 특징
hyuntohoon
2023. 3. 27. 02:01
FastAPI의 철학
- High Performance
- Easy to Learn
- Fast to Code
- Ready for Production
FastAPI의 특징
- OpenAPI를 사용한 자동생성되는 API Swagger
- Starlette(https://github.com/encode/starlette) 프레임 워크를 기반으로한 비동기 API 서버 지원
- Pydantic을 사용하여 데이터 밸리데이션 지원
- 성능과 부하 테스트에서 JS 와 GO에서 사용되고 있는 그 어떤 웹 프레임워크와도 비교해도 손색없는 수준
1. ASGI란?
DJANGO, Flask => WSGI( Web Server Gateway Interface) 사용 => 하지만 동기적 작업이 기본, 구조적인 문제로 인해 많은 트래픽으로 인한 문제 발생.
그래서 비동기 작업을 위해 APScheduler 와 같은 백그라운드 Task를 처리해주는 모듈을 사용하거나, Redis-Celery 조합을 사용함.
이렇게 되면 많은 부분에서 관리 포인트가 생성되고, 이는 유지보수를 힘들게 만드는 단점이 생김.
ASGI(Asynchronous Server Gateway Interface) => 비동기 웹 애플리케이션 및 프레임워크와 웹 서버 간의 표준 인터페이스를 제공, 동시성(concurrency)과 비동기 처리를 지원, 또한 웹소켓, HTTP/2 및 기타 웹 프로토콜을 지원
ASGI를 사용하여, FastAPI 안에서 많은 비동기 처리 가능.
2. Pydantic 을 이용한 벨리데이션
Pydantic => Python에서 데이터 유효성 검사(validation)와 데이터 파싱(parsing)을 간편하게 수행할 수 있는 라이브러리 Pydantic은 타입 힌트(type hints)를 활용하여 데이터를 검증하고, 사용자가 정의한 데이터 모델을 생성
이를 통해 코드의 가독성과 안정성이 향상
3. OpenAPI 지원으로 API Swagger 자동생성
Swagger 자동 생성 가능