flask를 공부하려고 구글링을 하던 도중 django라는 프레임 워크를 알게 되었다.
django와 flask는 둘다 웹프레임워크 인데 도대체 왜 두개로 구분짓는지 궁굼하여 구글링을 해보았다.
1.프로젝트 레이아웃
Flask는 프로젝트마다 1개의 어플리케이션을 개발하도록 되어 있지만, Django는 한 프로젝트 내에 다양한 어플리케이션이 존재 할 수 있습니다. 같은 프로젝트 안에서 여러 어플리케이션이 동시에 사용하는 재사용 가능한 코드를 작성하기도 쉽고, 개별 프로젝트 관리도 편하게 됩니다.
2.제공되는 기능
Flask는 약 27,000줄 밖에 안되는 가벼운 프레임워크이기 때문에, 개발자가 거의 모든 것을 설정하고 세팅해야 하는 번거로움이 있습니다. 반면, Django는 이의 10배나 무거운 프레임워크입니다. 이미 거의다 개발되어있어 개발이 용의합니다.
3. DB
Flask는 따로 ORM이 없기때문에 SQLAlchemy 등을 사용하는 반면, Django는 ORM이 있습니다.
쉽게 말해서 flask는 dbms에 의존성이 크고 django는 거의 없습니다.
(ORM이 뭔지 몰라 구글링을 해보니 관계형DB의 데이터와 객체를 이어주는 기능을 한다고 하네요.)
4.자율성
- Django - Full-stack Framework
- Flask - Micro Framework
flask는 마이크로 프레임워크라서 풀스텍 프레임워크인 django보다 커스터마이징이 쉽고 자율성이 높습니다.
5.그래서 뭐쓰냐
Django
- 웹앱이나, API 백엔드를 만들고 싶을때
- 빠른 개발, 빠른 배포, 빠른 업데이트가 가능
- CSRF, XSS, SQL 인젝션, 클릭재킹등 기본적 보안
- 스케일링 업, 스케일링 다운을 자유자재로 하고 싶을때
- 개발하다 막혔을때 물어볼 곳이 많았으면 할때
- SQL이 익숙하지 않아서 강력한 ORM이 필요할때
Flask
- 도저히 1개의 코드베이스에 담을 수 없을만큼 앱이 크거나,
- 아니면 너무 앱이 작다면!
- 밑그림부터 시작할 수 있는 실력에 내가 뭘하고 있는지 알고 있을때
- 팀원 중 그 어느 누구라도 Django 와 Python에 익숙치 않을때
- DB로 이미 생성된 NoSQL을 사용하고 있을때
flask | django | |
app 갯수 | 1개 | 여러개 |
내장 기능 | 적다 | 많다 |
DB | 내장 ORM이 있다 | 내장 ORM이 없다. |
자율성 | 높다 | 낮다 |