Django?
파이썬으로 작성된 오픈 소스 웹 프레임워크이다.
프레임워크, 라이브러리, 서드파티
- 프레임워크 : 코드의 주권이 나에게 있지 않고 설계도면대로 내 코드를 부품처럼 사용하는 것
- 라이브러리 : 코드의 주권이 나에게 있고 내가 코드를 호출해서 사용하는 것
- 서드파티 :
Django
서드파티라고 하면 Django
와 호환되는 여러 라이브러리 + 프레임워크를 뜻함
Django 개발 flow 선택
ChatGPT의 코드는 대부분 모놀리식 코드!
모놀리식
- 1개의 서버에서 Django + HTML, CSS, JS
- 2 ~ 3명 소규모 개발팀에 유리합니다. 서비스를 엄청 빠르게 런칭할 수 있음
마이크로식
- 2개의 서버
- BE 서버: Django
- FE 서버: HTML, CSS, JS(바닐라js, React, nextjs)
- 팀 단위가 5명 정도만 되어도 마이크로식은 거의 필수
Django의 특징
- ORM(Object-Relational Mapping) : 파이썬 코드만 알아도(DB 쿼리를 몰라도) 웬만한 서비스는 만들 수 있음
- but 백엔드 개발자라면 DB 쿼리를 반드시 알아야 함
- 서비스 구현에 필요한 대부분의 기능이 구현되어 있으며 Admin 페이지까지 기본적으로 구현이 되어있는 풀스택 개발 프레임워크
- 보안 : 취약점 테스트를 통한 안정성이 검증된 보안 기능 제공
- MTV 패턴 : Model-Template-View 패턴을 가지고 있어, 기능을 분리하여 개발 가능
- Model : DB와 상호작용 하는 컴포넌트
- Template : 사용자에게 보여지는 HTML, CSS, JS 등
- View : HTTP 요청 처리 및 Model과 Template 연결
다른 프레임워크와 차이점
- 워드프레스 vs Django : 기본적인 CRUD와 같은 게시판 형태의 서비스라면 워드 프레스가 훨씬 좋지만 아니라면 Django
- Node Express vs Django : Django는 설치만 해도 Admin 페이지가 나오지만 Express는 직접 개발해야 함
- Spring vs Django : Spring은 세팅하는데 Django는 개발이 완료된다는 소리가 있다. 그만큼 속도 차이가 많이 난다.
Django의 설계 철학
-
느슨한 결합
- Django는 편의성을 위해 풀스택으로 제공되지만, 스택의 각 부분은 가능한 한 독립성을 지님. 프레임워크의 각 계층은 정말 필요하기 전에는 서로 알지 못함
-
적은 코드
- 최소한의 코드를 사용하며, 틀에 박힌 코드를 배제. 인트로스펙션(실행시에 Object에 관한 정보를 알아내는 것)과 같은 파이썬의 동적 기능을 최대한 활용
-
신속한 개발
-
DRY(반복 x)
- 고유한 개념 및 데이터는 단 한 번, 단 한 곳에 존재. 정규화. 최소한의 것들로 최대한의 것을 만듬