Duplicate

파이썬 웹 프레임워크(Django, Flask, FastAPI)

Django

전체 웹 애플리케이션 개발 / 강력한 보안 기능 필요 / 학습 곡선 높아도 상관 X
파이썬에서 가장 많이 사용되는 웹 프레임워크 중 하나

장점

전체 웹 애플리케이션을 개발하기 위한 모든 기능 포함 (Fullstack Framework)
강력한 보안 기능, 사용자 인증, 데이터베이스 ORM, 관리자 패널 등 포함
강력한 템플릿 엔진 제공 → 프론트엔드, 백엔드 효율적 분리

단점

기능이 많고 복잡 → 학습 곡선이 높을 수 있음
클라이언트) 사이드 렌더링에 대한 지원 상대적으로 약함
Template을 내장하고 있는 MVT Pattern 지원 → Restful API 통신을 하는 modern FE 시대에 적합 X
RDMS와 높은 결합성 → NoSQL 적용 어려움

Django REST Framework

Django에서 부족한 Restful API 통신 위해 만들어짐
Automatic API documentation 시초
View 계층에서 get, post, put, delete로 method 작성 → 같은 이름의 HTTP Method를 사용하는 Restful API의 Endpoint가 됨
창시자: Tom Christie → FastAPI의 base인 Starlette와 Uvicorn 만듦

Flask

작은 규모의 웹 애플리케이션 개발 / 유연한 개발 필요 / 개발 속도와 성능 중시

장점

Django보다 더 가볍고 간결한 웹 프레임워크 → 성능과 속도 빠름
필요한 기능만 최소한의 구조로 제공 → 개발자가 원하는 대로 유연하게 개발 가능
마이크로 프레임워크로 분류 (micro)
컨트롤러, 라우팅, 템플릿 엔진, 데이터베이스 연동 등 기본 기능 제공
NoSQL을 main Storage System으로 쓸 수 있음
Django에서 제공하는 기능이 필요 X 애플리케이션 개발 시 사용 / 필요한 것 plugin ~> 추가

단점

Django에 비해 기능이 상대적으로 적음
전체 웹 애플리케이션 개발하기에 제약 있을 수 있음
클라이언트) 사이드 렌더링에 대한 지원 제한적

FastAPI

비동기 처리 필요 / 높은 성능과 효율성 요구 / API 개발 중점

장점

최근에 출시된 비동기 웹 프레임워크
빠른 속도와 효율성(동시에 많은 요청 처리) 강조
Python 3.7 이상의 버전에서 동작
타입 힌팅, 자동 문서화 기능(Swagger) 제공 → 개발자가 신속하게 API 작성할 수 있도록 도와줌
Starlette(Python Web Framework) 기반 → 웹 애플리케이션 개발에 필요한 모든 기능 갖추고 있음

단점

비동기 처리 방식에 익숙하지 않은 개발자 → 학습 곡선 높을 수 있음
Django, Flask와 비교해 상대적으로 커뮤니티가 작고 생태계가 발전 중인 단계

Django vs. FastAPI

장점

단점