[Django] #2. Django 구조의 이해(MVC와 MTV)
Design Pattern
Design pattern : 자주 사용되는 소프트웨어의 구조를 일반화하여 하나의 공법으로 만들어 둔 것
부산의 광안대교와 여수의 돌산대교, 미국의 금문교등의 다리를 보면 비슷한 모양으로 지어진 것을 확인할 수 있습니다.
다리를 건설할 때 존재하는 공통적인 문제 해결을 위해 하나의 디자인 공법을 공통적으로 적용한 것인데요,
소프트웨어에도 이처럼 개발을 할 때 공통적인 설계 문제가 존재하며,
이를 처리하는 해결책 사이에서도 공통점이 있다는 것을 발견했습니다!
이러한 유사점을 바로 패턴이라고 합니다.
앞서 말한 클라이언트 - 서버 구조 또한 소프트웨어 디자인 패턴 중의 하나 입니다.
어플리케이션이나 시스템을 디자인할 때 발생하는 공통 문제를 해결할 때 형식화 된 가장 좋은 관행이죠.
💡 디자인 패턴의 장점
: 다수의 엔지니어들이 일반화 된 패턴으로 SW개발을 할 수 있도록 한 규칙이기에, 커뮤니케이션의 효율성을 높일 수 있습니다.
💡 Django의 디자인 패턴
- Django에 적용된 디자인 패턴은 MTV 패턴으로, MVC(Model View Controller)를 기반으로 약간 변형된 패턴입니다.
(1) MVC 소프트웨어 디자인 패턴
: 데이터 및 논리 제어를 구현함에 널리 사용되는 SW 디자인 패턴으로, 하나의 큰 프로그램을 세 가지 역할로 구분한 개발 방법론
✅ Model : 데이터와 관련된 로직을 관리
✅ View : 레이아웃과 화면을 처리
✅ Controller : 명령을 model과 view 부분으로 연결
🔍 목적 : ‘관심사 분리’
① 더 나은 업무의 분리와 향상된 관리를 제공합니다.
② 각 부분을 독립적으로 개발 가능해, 개발 효율성 및 유지보수가 쉬워집니다.
③ 다수의 멤버로 개발하기 용이합니다.
(2) MTV 소프트웨어 디자인 패턴
⚠️ MVC와 MTV에서의 View는 각각 다른 역할을 한다는 것을 주의해야합니다! ⚠️
1️⃣ Model (데이터)
- MVC 패턴에서 Model의 역할
- 응용프로그램의 데이터 구조를 정의하고 데이터베이스의 기록을 관리
2️⃣ Template (화면)
- 레이아웃과 화면을 처리하는 역할
- 화면 상의 사용자 인터페이스 구조와 레이아웃을 정의
- MVC 패턴에서 View의 역할을 담당
3️⃣ View (중간 처리 & 응답)
- Model & Template과 관련한 로직을 처리해 응답을 반환
- 클라이언트의 요청에 대해 처리를 분기하는 역할
- MVC패턴에서 Controller의 역할
- 동작 예시 ▶ 데이터가 필요하다면 model에 접근해 데이터를 가져오고, 가져온 데이터를 template으로 보내 화면을 구성하고, 구성화면을 응답으로 만들어 클라이언트에게 반환