지인들과 스터디하면서 포폴용 프로젝트를 하나 만들자고 이야기 하던 중, 나는 백엔드 개발을 맡게 되었고, 최근에 Python에 매료되어 이참에 좀더 깊게 파고자 해당 언어로 개발을 하려고 한다.
Python 프레임워크는 다양하게 존재하였지만, 그 중 개발자들이 자주 사용하는 3가지에 좀 더 자세히 알아보고자 글을 작성하게 되었다.
자주 사용하는 3가지의 프레임워크는 다음과 같다.
Django는 파이썬으로 제작된 오픈소스 웹 프레임워크이며, 쉽고 빠르게 웹사이트를 개발할 수 있다.
MVC가 아닌 MTV 패턴
강력한 ORM기능
DB를 객체처럼 볼 수 있게 해준다.
App단위 독립적인 구성
보안
다양한 공격을 방지할 수 있는 기능들이 이미 구현되어 있다.
변경 사항을 자동으로 반영
자동으로 .py파일의 변동을 감시하여 변경 내역을 자동으로 반영하여 웹서버를 재시작할 필요가 없다.
파이썬의 단점을 그대로 가져온다.
많은 라이브러리가 있어 좋긴 하지만, 그 기능들 가지고 원하는대로 커스텀을 하기가 힘들다.
실시간에 약하다.
플라스크는 Micro 웹 프레임워크이다. 여기서 "Micro"는 기능이 부족하다는 걸 의미하는 것이 아니라 "핵심기능만 간결하게 유지하고, 확장가능한 것을 목적으로 한다는 것" 의 의미이며, 단순 하고 미니멀한 디자인이다. 또한 개발자가 원하는 구성 요소를 선택하고 통합할 수 있다.
간결성
Flask는 가볍고 짧은 코드로 웹 프로그램을 만들 수 있다.
자유도
Flask는 자유도가 높은 프레임 워크. 최소한의 규칙만있어 개발의 자유도가 다음 프레임워크보다 높다.
유연성
레고 블록을 작게 조립하는 것처럼 Flask도 작은 기능 하나로도 빠르게 시작할 수 있기 때문에 다양한 기능들을 붙여서 유연하게 작동시킬 수 있게 된다.
라우팅 및 URL 매핑
Flask는 URL을 Python 코드의 함수나 메서드에 매핑할 수 있는 라우팅 메커니즘을 제공한다.
JinJa2 템플릿 엔진 사용가능
Flask는 JinJa2 문법을 지원하여 동적으로 HTML 코드 작성이 가능하다.
확장성(MSA)
개발자가 다양한 모듈을 사용하여 원하는 대로 확장이 가능하다.
디버깅 기능
내장된 디버깅 기능을 활용하여 버그를 빠르게 찾을 수 있다.
테스트 지원
디버깅과 함께 내장된 유닛 테스트 지원으로 테스트 케이스를 쉽게 작성해서 TDD 운용을 보다 쉽고 빠르게 진행할 수 있다.
WSGI를 사용하고있어서 한번에 많은 트래픽을 처리하기 어려움
규모가 커질수록 프레임워크에 대한 지식이 많이 필요함
대규모 프로젝트 하기위해 Flask에 대한 사전 지식이 필요하다.
WSGI를 사용하고 있어 Async 문제가 생길 수 있다
ORM 부족
제한된 자원
표준 Python type hint(python 3.6이상) 을 바탕으로 한, 빠른 API 서버 웹 프레임워크
Flask와 비슷한 구조이나, Async로 작성되어 빠른 성능을 보여준다.
Async 동작으로 빠른 성능 보장
가장 빠른 파이썬 웹 프레임워크
Starlette(Async 프레임워크), Pydandic 기능을 모두 가져 매우 높은 성능과 빠른 프레임워크이다.
API 문서 자동 생성
의존성 주입 위주의 설계를 통한 DB 등에 대한 관리 편리
모르는 것 찾기가 힘들다.
새로나온 프레임워크로 인하여 자원 부족
적은 라이브러리
3개의 프레임워크 중 어떤 것을 선택하여 사용할지는 아래 표를 보고 선택하면 된다.