본문 바로가기
코딩/Python

파이썬 웹 프레임워크

by 형큐 2022. 7. 10.
SMALL

1. 프레임워크

소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것.

- Library

우리의 프로그램에 특정한 문제를 해결해주거나 특별한 기능을 부여해주는 것

ex) BeautifulSoup : 웹사이트에서 특정한 태그나 클래스 등에 해당하는 요소를 가져와주는 '기능'을 부여

-  Framework

우리가 우리의 목적에 맞게 코드를 작성할 수 있는 커다란 틀을 제공

ex)Django : DB와 서버를 이어주는 웹프로젝트 구현이라는 목적에 맞게 구조화된 패키지의 형태로 되어있음

라이브러리와 프레임워크

2. Django VS Flask

 - Django (풀 프레임워크)

장점

  1. 이미 모든 것이 준비되어 있다
  2. 매우 우수한 문서, 매우 큰 생태계
  3. 확장성
  4. 어드민 패널

단점

  1. 부담스러운 사이즈
  2. 속도

- Flask (마이크로 프레임워크)

장점

  1. 이 보다 미니멀하고 직관적일 수 없다
  2. 매우 빠른 개발 속도

단점

  1.  WSGI의 한계
  2. 가파른 러닝커브

3. 그래서 무엇을 써야 하나?

10명 중 9명은 웹개발에 Django를 추천함. 왜냐? Flask는 개발자가 거의 모든 것을 설정하고 세팅해야하는 번거로움이 있음. 반면 Django는 Flask의 10배는 무거운 프레임워크이며, 내가 생각하는 거의 모든것이 이미 개발되어 있어 사용하기 무척 간편하다.

 

그렇다고 Flask가 나쁜 것은 아니다. 다른 것일 뿐이다.

 - 무엇이 다른가

  1. 프로젝트 레이아웃이 다르다 - Flask는 프로젝트마다 1개의 어플리케이션을 개발, Django는 한 프로젝트 내에 다양한 어플리케이션이 존재 할 수 있음
  2. DB접근 - Flask는 따로 ORM이 없어 SQLAlchemy등을 사용하는 반면, Django는 강력한 ORM이 있다.
  3. 확장과 커스터마이징이 편하다 - Django가 거의 모든 기능을 지원한다 해도, 내가 원하는 기능이 따로 있을때 추가하는게 Flask보다 껄끄러울 수 있다(Flask는 마이크로 프레임워크이기 때문에)

언제 Django를 쓸까?

  1.  웹앱이나, API 백엔드를 만들고 싶다
  2.  빠른 개발, 빠른 배포, 빠른 업데이트
  3.  CSRF, XSS, SQL 인젝션, 클릭재킹등 기본적 보안 완비
  4.  스케일링 업, 스케일링 다운을 자유자재로 하고 싶다면
  5.  개발하다 막혔을때 물어볼 곳이 많았으면
  6.  SQL이 익숙하지 않아서 강력한 ORM이 필요하다면

DJANGO 사용 서비스

  • Pinterest Engineering
  • Mozilla
  • Bitbucket
  • Udemy
  • The Onion
  • Disqus
  • Washington Post
  • NASA
  • Spotify
  • Instagram Engineering
  • National Geographic
  • The Guardian
  • JSFiddle

언제 Flask를 쓸까?

  1. 도저히 1개의 코드베이스에 담을 수 없을만큼 앱이 크거나,
  2. 아니면 너무 앱이 작다면
  3. 밑그림부터 시작할 수 있는 실력에 내가 뭘하고 있는지 알고 있다면
  4. 팀원 중 그 어느 누구라도 Django 와 Python에 익숙치 않다면
  5. DB로 이미 생성된 NoSQL을 사용

Flask 사용 서비스

  • Pinterest
  • Twilio

4. 그 외

FastAPI라는 웹프레임 워크가 새로운 트렌드로 자리잡고 있다는 글들을 보게 되었다.

Flask를 사용하던 개발자들이 FastAPI로 옮겨가고 있으며, 새 프로젝트에서 Flask가 제외된다는 내용들이었는데

새로운 기술들이 계속해서 개발되고, 기존 기술들이 사라지는 속도가 무척 빠른 시장이기에 관심을 가져봐야겠다.


궁금증

1. 만약 이미 생성된 NoSQL을 사용하려면, 무조건 Flask를 사용해야한다 -> WHY?

2. NoSQL과 SQL이란?

3. ORM?

반응형
LIST