Python/Utils

[Python Web] Python Web Framework 비교

yubi5050 2022. 4. 27. 18:39

👉 Python Web Framework 종류

  1. Django - http://www.djangoproject.com/
  2. Flask - http://flask.pocoo.org
  3. FastAPI - https://fastapi.tiangolo.com/

 

👉 Django

 

장점 

  • High-level Framework로 Instagram, Youtube, Spotify 등의 기업에서 활용
  • 기본적인 기능 ~ 프로 개발자들이 개발해 놓은 각종 패키지들까지 모두 포함되어 있음.
  • 보안 / DRF(Django Rest Framework) / ORM / 서드파티와의 연계 등 대부분의 기능이 갖추어져 있어 확장성이 좋음
  • 어드민 패널이 있어 DB에 CRUD를 할 수 있는 공간 존재
  • async orm은 불가능, async view는 가능

 

단점

  • 프레임워크 규모가 큼 
  • 비교적 속도가 빠르지 않음

 

👉 Flask

 

장점

  • Micro Web Framework로 최소한의 웹 개발하는데 주로 사용
  • 다양한 웹 엔진과 붙여서 사용할 수 있고 가볍기도 해서 빠르게 서비스를 런칭해야할 때 사용하면 좋음
    (ex. restAPI, CORS, DB 연동, MVC, Layerd 패턴 등의 기술들을 정해진 틀이아닌 자유롭게 사용 및 다른 언어/프레임워크와 연동 가능)
  • Django : import해서 편리하게 사용 vs Flask : 해당 기능 직접 작성

 

단점

  • ASGI(비동기) 대신 WSGI(동기)를 사용하고 있어 한 번에 많은 트레픽을 처리하기 어려움.
  • Jinja 템플릿 엔진과 Werkzeug WSGI 툴킷에 의존

 

👉 FastAPI

장점

  • 빠른 개발과 고성능을 추구하는 프레임워크, Flask만큼 코드가 간결하고, 성능은 Go Node.js에 견줄만하게 빠름
  • Starlette과 Pydantic을 기반. Starlette를 통한 ASGI지원과 Pydantic의 간편한 유효성(Validation) 검사가 큰 강점
  • OpenAPI문서 자동 생성 / JSON 스키마 / OAuth 2.0등 다양한 표준들이 기반
  • FastAPI는 동시성 상황에서 빠름

 

단점

  • 2019년 탄생으로 약한 생태계
  • 기능 라이브러리의 구현체 부족

 

👉 Full-stack Framework VS Micro Web Framework

📌 Full-stack Framework

  • 웹 개발에 필요한 요소를 모두 갖춘 웹 프레임워크
  • Java Spring, Python Django, Node.js Express, Ruby on Rails


📌 Micro Framwork

  • 개발자가 필요한 라이브러리/패키지를 직접 설치하여 개발
  • Python Flask, Python FastAPI, Ruby Sinatra등

 

👉 참고문헌