Django, Flask, FastAPI 간단 비교

gyuhoney·2024년 10월 16일

Web

목록 보기
2/2

오늘은 간단하게 Python 기반 프레임워크를 비교해 보았습니다.
공부를 해가며 느낀점과 실제 다뤄보면서 느낀 점들도 같이 적었습니다.

Django, Flask, FastAPI의 장단점 선 소개

Django

장고의 설계 철학

  1. 느슨한 결합
  2. 적은 코드
  3. 신속 개발
  4. DRY(반복하지 말 것)
  5. 명시적인 것이 묵시적인 것 보다 낫다.
  6. 일관성

장점

  1. 완전한 기능 세트
    • ORM
    • 사용자 인증 및 권한
    • 관리자 인터페이스
  2. 커뮤니티와 생태계
    • 다양한 패키지, 라이브러리, 문서
  3. 보안 및 안전성
    • 보안 관련 많은 기능 내장

단점

  1. 무거운 구조
    • 기본적으로 많은 기능이 포함되어있어 상대적으로 무거움
  2. 초기 설정 복잡
    • 초기 설정이 다른 프레임워크에 비해 조금 복잡할 수 있다.

개인적인 생각

  1. 대규모 웹 애플리케이션 개발에 적합한 고수준 프레임워크
  • 개인적으로 생각하는 고수준 프레임워크로 여겨지는 이유 5가지
    1. 코드의 재사용성
      • 많은 기능을 내장하고 있어, 새로운 웹 애플리케이션을 빠르게 개발할 수 있도록 돕는다.
    2. ORM의 사용
      • ORM을 통해 데이터베이스와의 상호작용을 추상화 한다.
      • SQL 질의문 대신 파이썬 코드를 사용해 데이터를 다룰 수 있다.
      • 데이터베이스의 변경에 따른 코드 수정이 간단해진다.
      • 대규모일 경우 데이터베이스 관리가 용이하다.
    3. Super 보안기능
      • SQL인젝션, XSS, CSRF등 방어 기능 내장
    4. 스케일링 및 확장성
      • 대규모 트래픽에 대한 확장성을 고려한 구조를 가졌다.
      • 캐싱, 데이터베이스 샤딩(단일 데이터 세트를 파티션이나 샤드로 분할), 로드 밸런싱 등의 기능을 쉽게 적용가능하다. (타 프레임워크에 비해서겠지만 그마저도 쉽진 않아보인다....)
    5. 커뮤니티 지원, 문서화
      • 제공되어있는 문서들이 많으며 활발한 개발자 커뮤니티를 가지고있다.
      • 사람들이 많이 사용하다 보니 문서화된 것들이 많다.
  1. 파이썬 웹 프레임워크 중 가장 많이 사용
    • 가장 많이 사용되기에 얻을 수 있는 정보들이 많다.
    • 모르는 것이 생겼을 때 참고할 수 있는 것이 많다.
  2. 전체 웹 애플리케이션을 개발하기 위한 모든 기능을 포함
    • 프론트와 백엔드 둘다 가능하다(풀 스택 프레임워크)
  3. ORM 기반의 MTV아키텍처에서 오는 편안함
  4. Admin 패널을 통해 강력한 관리자 기능 사용이 가능하다.

Falsk

Flask의 목적 및 철학

  1. 가볍고 유연한 마이크로 프레임워크
  2. "작게 시작해서 크게 성장"

장점

  1. 경량하고 간결한 구조 (Micro Web Framework)
    • 미니멀한 구조
    • 필요에 따라 확장 가능
  2. 유연성
    • 자유도가 높음
    • 개발자가 선호하는 라이브러리와 도구를 선택하여 사용할 수 있음
  3. 빠른 개발
    • 간단한 프로젝트, 프로토타입을 빠르게 개발할 수 있다.
      (개인적인 생각으로는 개발자가 어느정도 숙달되면 어떤 프레임워크라도....)

단점

  1. 기능 부족
    • 장고에 비해 기본적으로 제공하는 기능이 적음
    • 큰 규모의 프로젝트에는 추가작업이 많이 필요함
    • 높은 자유도에 따른 책임이 있음

개인적인 생각

  1. 최소한의 구조를 가진 웹 프레임워크
    • 경량화된 프레임워크라 속도와 성능이 빠르다.
  2. 확장성이 매우 뛰어나며 개발자에게 자유도를 제공한다.
    • 개발자의 역량에 따라 많은 것들이 생길 수 있다.
      (좋은 부분과 안 좋은 부분 모두)
  3. 작은 규모의 애플리케이션에 적합하다.
    • 말 그대로 작은 규모의 Web 애플리케이션
    • 프로토타이핑
    • 간단한 API 서비스

FastAPI

FastAPI란?

FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python의 API를 빌드하기 위한 웹 프레임워크입니다.

장점

  1. 빠른 성능
    • 비동기 프로그래밍
  2. 자동 문서화
    • Swagger와 ReDoc 같은 자동 API 문서 생성을 지원하여 API문서화가 간편하다.
      (Django나 Flask도 가능하지만 자동이라는 것이 큰 이점)
  3. 향상된 코드 품질
    • python 3.5 이상의 타입 힌트를 사용하여 코드의 가독성을 높이고, 개발자 간의 협업을 용이하게 한다.
    • Pydantic을 사용하여 데이터 정의 및 유효성 검사를 한다.

단점

  1. 새로운 프레임워크
    • 상대적으로 새로운 프레임워크이므로 Django나 Flask에 비해 커뮤니티 규모가 작다.
  2. 기본 기능의 부족
    • 타 프레임워크에 비해서 기능들이 부족하다.
      (일부 기능에 대해 추가 라이브러리가 필요하다.)
    • ORM 연동이 상당히 귀찮다
      (SQLAlchemy를 많이 사용)

개인적인 생각

  1. 비동기 처리를 지원한다.
  2. 빠르고 효율적인 데이터 직렬화 및 모델 처리.
  3. 자동 생성된 OpenAPI 및 JSON 스키마를 제공하여 API문서 자동화
  4. Pydantic을 활용한 데이터 검증
  5. API서버, ML/DL 모델 배포, 높은 성능의 서비스에 적합

그래서 무엇을 선택해야 하는가?

결론은 뭘 선택해야 좋은지 이것이 가장 큰 고민거리 입니다.

  • Django

    1. 대규모 및 복잡한 프로젝트
    2. 활발한 커뮤니티
    3. 강력한 보안 기능이 필요
    4. 전체 웹 어플리케이션을 개발할 경우
  • Flask

    1. 중간 규모 및 유연성이 필요한 프로젝트
    2. 개발 속도와 성능을 중요시 하는 경우
  • FastAPI

    1. API중심 및 빠른 프로토타이핑 프로젝트
    2. 비동기 프로그래밍 요구
    3. 자동화된 문서화
    4. 데이터 유효성 검사의 필요성

여기서 조금 더 요약을 하자면!

Django :

  • 아 몰라 내 프로젝트는 좀 크고 보안도 중요하고 기능 많고 참고 할 수 있는 것이 많으면 좋겠다

Flask :

  • 생각보다 큰 프로젝트가 아니고 내가 유연한 개발을 할 수 있으며 속도랑 성능이 좀 중요하다.

FastAPI :

  • 비동기 처리가 필요하며 높은 성능과 효율성이 중요하고 API개발에 중점을 뒀다.

라고 생각했습니다

profile
윤규헌입니다.

0개의 댓글