오늘은 Python Framework 3대장인 Django, Flask, Fast-API의 각 장,단점을 알아보도록 하겠다.
사전에 앞서 모놀리식 아키텍처와 마이크로 서비스 아키텍처에 대해 이해하고 있다면 각 프레임워크의 차이점을 이해하는데 큰 도움이 될 것이라고 생각한다.
⏬ 게시물 링크
파이썬 프레임워크 추이
2021년 기준 Django와 Flask가 압도적인 점유율을 보인다.
그러나 2022년 기준 약 1년안에 Fast-API가 빠르게 치고 올라온 상황을 알 수 있다.
Django
Django 장점
- 풀스택 프레임워크
- MTV 아키텍처를 활용한 비즈니스 로직 용이성
- 자체적인 ORM 제공
- 반복적으로 구현해야 하는 부분들이 이미 만들어져 있음
=> 로그인, 회원가입, 인증, 보안 등 - 자체 템플릿 태그를 가지고 있기 때문에 fornt-end framework를 사용하지 않고 개발 가능
- Django Rest Framework 제공
- 많은 사용자로 인한 커뮤니티 활성화
=> 이 부분은 개발자에게 아주 중요한 요소이죠.... - 공식 문서가 매우 양이 많음 즉, 다양한 내용이 있음
=> stackoverfow만 봐도 djnago 관련 질문 시 공식문서를 참고하라는 답변으로 해결된다는 농담이 있을 정도 ㅎ...
Django 단점
- 단일 패키지로 관리해야 하는 모놀리식 아키텍처
- 많은 기능과 구성으로 인해 빠른 학습이 어려움
- 이미 만들어진 기능을 커스텀 하기 어려움
- 비동기 관련한 어려움 이슈가 있음
- 속도가 느림 (타 프레임워크 대비)
- 타 프레임워크 대비 협업이 쉽지 않음
개인적으로 Django를 사용해보았는데 반복적인 기능이 구현되어 있는 것은 매우 편했다. 예를들어 로그인 같은 경우 자체적으로 내장되어 있는 login 함수만 사용해도 될 정도로 편리하다. 스프링을 사용해본 유저로써 이 부분은 아주 큰 메리트로 다가왔다. 그러나 Django는 풀스택 프레임워크이기 때문에 매우 무겁다. 학습을 하는데 있어 오랜 시간이 걸린다고 생각한다. settings.py 만 보더라도 상당히 긴 양의 코드가 적혀 있는것을 볼 수 있다.
Flask
Flask 장점
- 마이크로 서비스 프레임워크
- 상대적으로 가벼운 경량 프레임워크
- Django에 비해 자유도가 높은편
- 타 언어나 프레임워크와 연동하여 사용할 수 있음
- 최소한의 설정으로 다양한 라이브러리를 사용해 커스텀 가능 => 유연함
Flask 단점
- 가벼운 만큼 개발자가 신경써야 할 부분이 많음
- 비교적 보안에 취약
- WSGI를 사용
Fast-API
Fast-API 장점
- 배우기 쉽다
- 매우 빠르다, 성능이 좋다
- OpenAPI 기반 => 레스트풀 기반 (자체적으로 레스트풀 하게 설계되도록 제작)
- API 문서 자동 생성
- Pydantic을 사용한 Validation 체크
- starlette를 통한 ASGI(비동기) 지원
- 마이크로 프레임워크
- 에러 발생시 매우 친절하게 가르쳐줌
Fast-API 단점
- 비교적 최신 프레임워크라 커뮤니티 활성화가 적음
- 아직까지는 검증되지 않았다는 우려가 있음
- 타 프레임워크에 비해 기본적으로 제공하는 기능이 적음 (어떻게 보면 그만큼 가볍고 배우기 쉽기 때문이라는 말)
각 프레임워크 별로 큰 장점을 뽑아보자
많은 기능, 안정성, 거대한 커뮤니티 => Django
유연성, 경령, 많은 커뮤니티 => Flask
속도, 고성능, 경량, 잠재력 => Fast-API
'BackEnd Knowledge' 카테고리의 다른 글
윈도우 도커(Docker) 설치 시 발생하는 에러 [Docker Desktop requires a newer WSL kernel version.] (0) | 2023.02.27 |
---|---|
마이크로 서비스 아키텍처 (MSA) 그리고 모놀리식 아키텍처 (0) | 2023.02.26 |