💾 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 비교

/ Flask Django FastAPI
성격 마이크로 프레임워크 풀스택 프레임워크 마이크로 프레임워크
(비동기 지원)
자유도 높음
(구성 직접 선택)
낮음
(미리 정의된 구조)
높음
(구성 자유롭고 타입 힌트 기반)
학습
난이도
쉬움 중간
(구조가 복잡할 수 있음)
중간
(비동기 구조가 낯설 수 있음)
기본 기능 거의 없음 ORM, 인증, 관리자 패널 등 Pydantic, 자동 문서화 제공
성능 보통 보통 매우 빠름
(비동기 기본 지원)
문서화 수동으로 설정 필요 없음 Swagger, Redoc로 자동 문서화
사용 예시 소규모 프로젝트, 단순 API 대규모 프로젝트, 복잡한 웹사이트 고성능 API, 실시간 데이터 처리
(대규모 프로젝트 검증 부족)
비동기
지원
수동 설정 필요 수동 설정 필요 기본 제공
유지보수 프로젝트가 커질수록 복잡도 상승 정의된 구조 덕분에 유지보수 용이 유지보수 간편
(타입 기반 데이터 검증)
그러므로 각각 적합한 프로젝트는,
- Flask는 소규모 프로젝트나 단순한 API 서버를 빠르게 만들고 싶은 경우
- Django는 복잡한 웹 애플리케이션이나 대규모 프로젝트, 보안이나 관리 도구가 필요한 경우
- Fast API는 고성능 비동기 API 서버를 만들고, 자동 문서화와 데이터 검증이 필요한 프로젝트
728x90