FastAPI vs Flask
파이썬에서 웹 개발을 위해 사용하는 두 가지 프레임워크 FastAPI와 Flask를 간단하게 소개했었다. 얼핏 보기엔 비슷한 기능을 가지고 있지만 사용하는 상황이 다른 것 같아 보였다. 그렇다면 두 프레임워크는 어떤 점에서 차이가 있는지 비교해보고, 어떤 경우 사용하면 좋을지 알아보도록 하자.
FastAPI 포스팅 https://im-so-so.tistory.com/117
Flask 포스팅 https://im-so-so.tistory.com/119
비교하기
FastAPI는 풀스택 프레임워크, Flask는 마이크로 프레임워크
- 풀스택 프레임워크 : 다양한 편리한 기능을 제공(데이터 유효성 자동 검사, 문서화 및 보안, JSON 및 폼 데이터 파싱, API 요청 처리, 웹 소켓 지원 등)
- 마이크로 프레임워크 : 웹 애플리케이션을 구축하는 데 필요한 필수 요소만 제공. 추가 기능을 제공하는 여러 확장 및 플러그인 사용
FastAPI는 API 구축을 위해 설계되었으나, Flask는 웹 애플리케이션 및 API 구축에 사용
- FastAPI는 개발자가 최소한의 코드로 고성능 API를 구성할 수 있도록 지원
- Flask는 높은 수준의 사용자 지정 및 유연성이 필요한 중소 규모의 웹 애플리케이션에 적합
FastAPI는 비동기 코드 및 타입 명시로 인해 Flask보다 빠르다
- FastAPI는 타입 명시(type annotation)를 통해 문서를 생성하고 자동 데이터 유효성 검사를 수행하여 오류 수를 줄이고 성능을 향상시킨다.
- ASGI 서버를 사용하는 FastAPI가 WSGI 서버를 사용하는 Flask에 비해 빠르다.
- CGI : Common Gateway Interface → 요청마다 어플리케이션 프로세스를 다시 실행해야 한다. 파이썬과 같은 스크립트 언어에서 특히 비효율적이다.
- WSGI : Web Server Gateway Interface → 요청에 대한 정보를 callable object 함수나 객체로 처리한다. 비동기적 요청 처리에 약하다.
- ASGI : Asynchronous Server Gateway Interface → 동기성과 비동기성 모두에 대한 표준을 제공한다. 즉, WSGI에 대한 호환성을 가지면서 비동기적 요청 처리 가능한 인터페이스이다. WSGI의 상위호환으로 웹 서버, 프레임워크, 어플리케이션을 연결해주는 표준 인터페이스
WSGI 공식 문서 https://wsgi.readthedocs.io/en/latest/learn.html
ASGI 공식 문서 https://asgi.readthedocs.io/en/latest/
FastAPI는 자동 데이터 검증 및 문서화를 제공하지만, Flask는 수동 검증 및 문서화 필요
- FastAPI의 경우 자동으로 API를 테스트할 수 있는 훌륭하고 깔끔한 사용자 인터페이스(Swagger UI)를 생성한다. /docs 또는 /redoc으로 접근 가능하다.
- Flask는 문서 지원이 있으나 수동으로만 수행 가능하다.
- FastAPI는 자동 데이터 검증 및 포괄적인 문서화가 필요한 프로젝트에 탁월한 선택
- Flask는 단순성과 사용자 정의를 중시
FastAPI보다 더 큰 커뮤니티와 생태계를 가진 Flask
- FastAPI는 최근에 등장했음에도 불구하고 인상적인 성능과 사용자 친화적인 특성 덕분에 빠르게 열성적인 지지를 얻었다. 번창하는 개발자 커뮤니티와 광범위한 타사 라이브러리 및 플러그인을 자랑하고 있다. 탁월한 문서화와 즉시 사용 가능한 리소스를 지원한다.
- Flask에는 대규모 개발자 커뮤니티와 번성하는 생태계가 있어 도움과 지원을 쉽게 얻을 수 있다. 보안 인증을 위한 Flask-Security, 이메일 기능을 위한 Flask-Mail, RESTful API 구축을 위한 Flask-RESTful과 같은 추가 기능을 제공하는 여러 확장 및 플러그인이 있다. 여러 자습서, 설명서 및 지원 리소스를 제공한다.
선택하기
FastAPI와 Flask 중 선택은 프로젝트의 요구 사항에 따라 다르다. 당연한 말이지만 본인의 상황에 알맞는 프레임워크를 선택하는 것을 추천한다. 아래에 앞서 비교한 내용의 요약을 참고하여 프로젝트에 적절한 것을 사용하자.
FastAPI와 Flask는 모두 python으로 웹 애플리케이션 및 API를 구축하기 위한 웹 프레임워크이다. 사용 편의성을 제공하고, 학습 곡선이 작아 시작하기 쉽다.
FastAPI는 개발자에게 최소한의 코드로 고성능 API를 구성할 수 있는 강력한 플랫폼을 제공한다. 속도, 자동 데이터 검증 및 포괄적인 문서화를 우선시하는 API를 생성하는 데 이상적이다. 또한 간소화된 학습 경험과 사용자 친화적인 개발 프로세스를 찾는 사람들에게 탁월한 옵션을 제공한다.
Flask는 높은 수준의 사용자 지정 및 유연성이 필요한 중소 규모의 웹 애플리케이션에 적합하다. 웹 애플리케이션, API 및 마이크로서비스를 구축하는 데 사용할 수 있고, 더 큰 커뮤니티와 생태계를 선호하는 경우에도 좋은 선택이다.
'Python' 카테고리의 다른 글
[python] multiprocessing VS multithreading (0) | 2023.08.28 |
---|---|
[python] asyncio - async, await 사용하기 (0) | 2023.08.24 |
[python] Flask 기초 사용법 (0) | 2023.08.22 |
[python] pydantic 알아보기 (0) | 2023.08.21 |
[python] FastAPI 기초 사용법 (0) | 2023.08.18 |