서버에서 살아남기

Django vs Fastapi 본문

python

Django vs Fastapi

개발롬 2022. 6. 19. 19:44

Django 와 Fastapi 두개로 프로젝트를 진행했었고, 두개의 차이를 비교해서 정리하려고 합니다.

Django

  1. 몸만 오면 된다.
    Django 는 python 으로 개발하기에 가장 접하기 쉬운 프레임워크입니다. 그래서 러닝커브도 낮고, 많은 python 가발자들이 사용하는 프레임워크 중 하나입니다. 또한 많은 패키지들이 내장되어 있고 제공하는 기본 기능들이 많이 있습니다. 로그인, 회원가입, 인증 뿐만이 아니라 어드민 페이지도 제공합니다. 
  2. ORM 기반이다.
    Django 는 ORM(객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것)기반입니다. 그래서 ORM 문법을 알아야 데이터베이스에서 데이터를 쉽게 가져올 수 있습니다. 물론 SQL쿼리문을 사용해도 무관하지만 SQL 쿼리문을 사용하게 되면 작성해야 할 코드들이 많이집니다. ORM을 사용하게 되면 그보다 간단하게 객체를 불러오는 쿼리문을 작성할 수 있습니다.
  3. 무겁다
    많은 기능들과 라이브러리를 제공하는 만큼 Django는 무겁습니다. 가벼운 프로젝트를 만들기에는 다소 무겁게 느껴질 수도 있습니다.
  4. 커스텀이 어렵다
    이미 만들어진 기능들이 많기 때문에 가져다 쓸 수 있는 기능들도 많습니다. 그렇기 때문에 원하는 대로 커스텀하기가 어렵습니다.

Fastapi

  1. 문서화가 용이하다.
    Django 를 사용하면서 가장 불편했던 점 중 하나는 Swagger로 문서화 하는 것이다. DRF를 사용하면 좀 더 간편하지만 DRF를 사용하더라도 Fastapi에 비하면 문서화를 하는대에 귀찮고 복잡한 작업이었습니다.

django에서 swagger로 문서화하기 위해 작성해야 했던 코드

아래와 같이, 태그, 바디값, 필수값, 프로퍼티 등 모든 엔드포인트 함수에 적어줘야 했습니다.

Fastapi에서는 2번에서 언급한것 처럼 body 혹은 parameter 데이터를 pydantic model로 설정만 해주면 자동으로 문서화해주며 타입 유효성 체크도 잡아줍니다.

 

  1. Pydantic 제공
    프레임워크 단에서 유효성 검증을 해줍니다. 파라미터나 바디 데이터를 models로 정의해주고 api에서 해당 models을 지정해주면 models에서 설정한 type외에 다른 type이 들어오면 에러를 내뱉습니다. 기존 django의 경우 다른 타입의 데이터가 들어오는지 아닌지 코드에서 유효성 체크를 했어야했습니다. 하지만 Fastapi에서는 프레임워크 단에서 전부 잡아주기 때문에 해당 부분에 있어서 용이합니다.
  2. 비동기처리
    fastapi 는 starlette 라는 비동기 프레임워크 기반으로 생성됐습니다. 그렇기 때문에 보다 빠른 성능을 낼 수 있습니다.

아직 fastapi가 django 만큼 익숙하진 않지만 웹 개발자들과 협업을 하기 때문에 문서 자동화를 해주는 점에 있어서 Fastapi에 가장 큰 매력을 느꼈습니다.

결론

프로젝트가 크고, python 프레임워크가 처음이다 > Django
프레임워크 경험이 처음이 아니고, 빠른 성능을 원한다 > Fastapi
주관적인 견해입니다 :)

 

'python' 카테고리의 다른 글

디자인 패턴 - 싱글톤 디자인 패턴  (0) 2023.08.01
이해가 안가서 정리하는 FastAPI 동작 원리  (0) 2023.07.24
Garbage Collection 이란?  (0) 2023.07.22
SQLAlchemy + alembic 마이그레이션  (0) 2023.07.22
python 파일  (2) 2023.03.11