Python 웹 프레임워크 비교(Django, Flask, FastAPI)

주댕이·2024년 5월 8일
1

지인들과 스터디하면서 포폴용 프로젝트를 하나 만들자고 이야기 하던 중, 나는 백엔드 개발을 맡게 되었고, 최근에 Python에 매료되어 이참에 좀더 깊게 파고자 해당 언어로 개발을 하려고 한다.
Python 프레임워크는 다양하게 존재하였지만, 그 중 개발자들이 자주 사용하는 3가지에 좀 더 자세히 알아보고자 글을 작성하게 되었다.


자주 사용하는 3가지의 프레임워크는 다음과 같다.

  • Django
  • Flask
  • FastAPI

Django

특징

Django는 파이썬으로 제작된 오픈소스 웹 프레임워크이며, 쉽고 빠르게 웹사이트를 개발할 수 있다.

장점

  • MVC가 아닌 MTV 패턴

    • View = Template
    • Controller = View
    • Model은 DB에 저장되는 데이터다.
    • Template는 유저에게 보여지는 UI
      View는 데이터를 처리하고 Template에 데이터를 전달
  • 강력한 ORM기능
    DB를 객체처럼 볼 수 있게 해준다.

  • App단위 독립적인 구성

  • 보안
    다양한 공격을 방지할 수 있는 기능들이 이미 구현되어 있다.

  • 변경 사항을 자동으로 반영
    자동으로 .py파일의 변동을 감시하여 변경 내역을 자동으로 반영하여 웹서버를 재시작할 필요가 없다.

단점

  • 파이썬의 단점을 그대로 가져온다.

  • 많은 라이브러리가 있어 좋긴 하지만, 그 기능들 가지고 원하는대로 커스텀을 하기가 힘들다.

  • 실시간에 약하다.


Flask

특징

플라스크는 Micro 웹 프레임워크이다. 여기서 "Micro"는 기능이 부족하다는 걸 의미하는 것이 아니라 "핵심기능만 간결하게 유지하고, 확장가능한 것을 목적으로 한다는 것" 의 의미이며, 단순 하고 미니멀한 디자인이다. 또한 개발자가 원하는 구성 요소를 선택하고 통합할 수 있다.

장점

  • 간결성
    Flask는 가볍고 짧은 코드로 웹 프로그램을 만들 수 있다.

  • 자유도
    Flask는 자유도가 높은 프레임 워크. 최소한의 규칙만있어 개발의 자유도가 다음 프레임워크보다 높다.

  • 유연성
    레고 블록을 작게 조립하는 것처럼 Flask도 작은 기능 하나로도 빠르게 시작할 수 있기 때문에 다양한 기능들을 붙여서 유연하게 작동시킬 수 있게 된다.

  • 라우팅 및 URL 매핑
    Flask는 URL을 Python 코드의 함수나 메서드에 매핑할 수 있는 라우팅 메커니즘을 제공한다.

  • JinJa2 템플릿 엔진 사용가능
    Flask는 JinJa2 문법을 지원하여 동적으로 HTML 코드 작성이 가능하다.

    • JinJa2 템플릿 엔진 : HTML 템플릿 내에 Python 코드를 삽입할 수 있게 함으로써 HTML 페이지를 동적으로 생성할 수 있게 해준다.
  • 확장성(MSA)
    개발자가 다양한 모듈을 사용하여 원하는 대로 확장이 가능하다.

  • 디버깅 기능
    내장된 디버깅 기능을 활용하여 버그를 빠르게 찾을 수 있다.

  • 테스트 지원
    디버깅과 함께 내장된 유닛 테스트 지원으로 테스트 케이스를 쉽게 작성해서 TDD 운용을 보다 쉽고 빠르게 진행할 수 있다.

단점

  • WSGI를 사용하고있어서 한번에 많은 트래픽을 처리하기 어려움

  • 규모가 커질수록 프레임워크에 대한 지식이 많이 필요함

  • 대규모 프로젝트 하기위해 Flask에 대한 사전 지식이 필요하다.

  • WSGI를 사용하고 있어 Async 문제가 생길 수 있다

  • ORM 부족

  • 제한된 자원


FastAPI

특징

표준 Python type hint(python 3.6이상) 을 바탕으로 한, 빠른 API 서버 웹 프레임워크
Flask와 비슷한 구조이나, Async로 작성되어 빠른 성능을 보여준다.

장점

  • Async 동작으로 빠른 성능 보장

  • 가장 빠른 파이썬 웹 프레임워크
    Starlette(Async 프레임워크), Pydandic 기능을 모두 가져 매우 높은 성능과 빠른 프레임워크이다.

  • API 문서 자동 생성
    의존성 주입 위주의 설계를 통한 DB 등에 대한 관리 편리

단점

  • 모르는 것 찾기가 힘들다.
    새로나온 프레임워크로 인하여 자원 부족

  • 적은 라이브러리


Django vs Flask vs FastAPI 비교

3개의 프레임워크 중 어떤 것을 선택하여 사용할지는 아래 표를 보고 선택하면 된다.

profile
주댕이만 백엔드인 개발자

0개의 댓글