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와 비교해 상대적으로 커뮤니티가 작고 생태계가 발전 중인 단계