💾 Backend/FastAPI
Fast API 기본 개념 정리
hjinn0813
2024. 10. 11. 17:33
728x90
Python으로 API를 구축하는 프레임워크에는 Flask, Django라는 양대산맥 외에 Fast API도 있다.
백엔드 기술은 잘 모르는 햇병아리 FE 개발자여도 Flask와 Django는 워낙 유명해서 알고 있었는데, Fast API는 이번에 처음 알게 되었다. Fast API가 무엇이고 어떻게 API를 만드는지 기본적인 개념을 알아야 나중에 프론트엔드 측에서 API를 불러올 때 도움이 될 것 같아서, 어제 Flask와 Django에 이어 오늘은 Fast API에 대해 정리해본다.✍
https://hjinn0813.tistory.com/128
Flask, Django 기본 개념 정리 및 비교
Python으로 API 만들어서 제공하는 기능을 구현하려면 Flask 혹은 Django를 사용할 수 있다.
hjinn0813.tistory.com
Fast API
API 서버를 만들기 위한 Python 기반의 최신 웹 프레임워크.
비동기(Asynchronous) 처리를 기본으로 지원하며, 빠른 성능과 간결한 코드 작성을 목표로 한다.
특히, Python 타입 힌트와 Pydantic을 통해 자동으로 요청과 응답 데이터의 유효성을 검사할 수 있다.
Fast API 특징
- 비동기 지원: async/await 구문을 기본적으로 지원해 비동기 요청 처리가 매우 쉽다.
- 고성능: 비동기 처리를 기본적으로 지원하여, 성능이 매우 빠르다.
- 타입 힌트 기반: Python의 타입 힌트를 기반으로 API 요청과 응답의 데이터 검증을 자동으로 수행하기 때문에, 개발자의 실수를 줄이고 코드의 안전성을 높여준다.
- 자동 문서화: API를 작성하면 자동으로 Swagger UI와 Redoc을 통해 API 문서를 생성한다.
- Pydantic과 연동: Pydantic을 사용해 데이터 모델링과 유효성 검사를 간단하게 할 수 있다.
💡 용어 설명
- 타입 힌트 : 동적 타이핑 언어인 Python의 코드 가독성과 안전성을 높이기 위해 Python 3.5 버전부터 생긴 기능.
타입스크립트처럼 변수나 함수의 인자, 반환값에 타입을 명시하는 방법이지만 강제성은 없다. (타입 체크 안 함)
- Swagger UI : RESTful API의 문서를 자동으로 생성하여 시각화하는 도구.
사용자가 실제로 API를 테스트해보며 API의 동작을 쉽게 이해하고 확인할 수 있는 기능을 제공한다.
- Redoc : API 문서를 자동으로 생성하고 시각화해주는 도구.
주로 Swagger/OpenAPI 사양에 기반하여 문서를 생성한다.
대규모 API 문서에 적합하게 설계되었으며, 깔끔하고 직관적인 UI로 API 문서의 탐색이 쉽다.
- Pydantic : Python의 타입 힌트를 활용해 데이터 유효성 검사와 타입 변환을 자동으로 처리하는 라이브러리.
Fast API 같은 프레임워크에서 데이터 처리에 사용된다.
Fast API 사용 예시
- 고성능 API가 필요한 경우: 실시간 데이터 처리, 성능이 중요한 대규모 API 서버 구축에 적합하다.
- 비동기 처리가 필요한 경우: 여러 요청을 동시에 처리해야 하는 시스템에서 비동기 지원이 중요한 경우 유리하다.
- 자동화된 문서화가 필요한 경우: 개발과 동시에 API 문서를 자동으로 생성해야 하는 상황에서 매우 유용하다.
- 데이터 검증이 중요한 경우: Python 타입 힌트로 데이터 유효성 검증을 자동화할 수 있어 실수 방지와 유지보수에 유리하다.
Fast API 장단점
장점 | - 비동기 처리로 인한 빠른 성능: 특히 높은 트래픽을 처리하는 API에서 강력한 성능을 발휘한다. - 자동 문서화: Swagger와 Redoc으로 API 문서를 자동으로 생성하여 개발과 테스트가 편리하다. - 간결한 코드: 타입 힌트를 사용해 명확하고 간결한 코드를 작성할 수 있다. - 빠른 개발 속도: 데이터 검증과 문서화가 자동화되어 개발 시간을 크게 단축할 수 있다. - 대규모 트래픽 처리: 비동기 방식으로 트래픽이 많은 환경에서 안정적으로 작동한다. |
단점 | - 학습 곡선: 비동기 프로그래밍을 처음 접하는 개발자에게는 개념이 어려울 수 있다. - 작은 생태계: Django에 비해 생태계가 크지 않아서, 다양한 패키지나 플러그인이 존재하지 않는다. - 대규모 프로젝트에 대한 검증 부족: Django처럼 대규모 웹 애플리케이션을 위한 다양한 기능을 제공하지 않기 때문에, 대형 프로젝트에는 적합하지 않을 수 있다. |
Fast API로 API 만들기 예시 코드 (by chatGPT)
from fastapi import FastAPI
app = FastAPI()
@app.get("/api/data")
async def get_data():
return {"orders": 150, "sales": 345000}
Flask, Django, Fast API 비교
/ | |||
성격 | 마이크로 프레임워크 | 풀스택 프레임워크 | 마이크로 프레임워크 (비동기 지원) |
자유도 | 높음 (구성 직접 선택) |
낮음 (미리 정의된 구조) |
높음 (구성 자유롭고 타입 힌트 기반) |
학습 난이도 |
쉬움 | 중간 (구조가 복잡할 수 있음) |
중간 (비동기 구조가 낯설 수 있음) |
기본 기능 | 거의 없음 | ORM, 인증, 관리자 패널 등 | Pydantic, 자동 문서화 제공 |
성능 | 보통 | 보통 | 매우 빠름 (비동기 기본 지원) |
문서화 | 수동으로 설정 필요 | 없음 | Swagger, Redoc로 자동 문서화 |
사용 예시 | 소규모 프로젝트, 단순 API | 대규모 프로젝트, 복잡한 웹사이트 | 고성능 API, 실시간 데이터 처리 (대규모 프로젝트 검증 부족) |
비동기 지원 |
수동 설정 필요 | 수동 설정 필요 | 기본 제공 |
유지보수 | 프로젝트가 커질수록 복잡도 상승 | 정의된 구조 덕분에 유지보수 용이 | 유지보수 간편 (타입 기반 데이터 검증) |
그러므로 각각 적합한 프로젝트는,
- Flask는 소규모 프로젝트나 단순한 API 서버를 빠르게 만들고 싶은 경우
- Django는 복잡한 웹 애플리케이션이나 대규모 프로젝트, 보안이나 관리 도구가 필요한 경우
- Fast API는 고성능 비동기 API 서버를 만들고, 자동 문서화와 데이터 검증이 필요한 프로젝트
728x90