본문 바로가기
Frontend-Framework/Django

[Django] #2. Django 구조의 이해(MVC와 MTV)

by 뉴비코 2022. 9. 17.

Design Pattern

Design pattern : 자주 사용되는 소프트웨어의 구조를 일반화하여 하나의 공법으로 만들어 둔 것

 

부산의 광안대교와 여수의 돌산대교, 미국의 금문교등의 다리를 보면 비슷한 모양으로 지어진 것을 확인할 수 있습니다.

다리를 건설할 때 존재하는 공통적인 문제 해결을 위해 하나의 디자인 공법을 공통적으로 적용한 것인데요,

 

소프트웨어에도 이처럼 개발을 할 때 공통적인 설계 문제가 존재하며,

이를 처리하는 해결책 사이에서도 공통점이 있다는 것을 발견했습니다!

이러한 유사점을 바로 패턴이라고 합니다.

 

앞서 말한 클라이언트 - 서버 구조 또한 소프트웨어 디자인 패턴 중의 하나 입니다.

어플리케이션이나 시스템을 디자인할 때 발생하는 공통 문제를 해결할 때 형식화 된 가장 좋은 관행이죠.

 

💡 디자인 패턴의 장점

: 다수의 엔지니어들이 일반화 된 패턴으로 SW개발을 할 수 있도록 한 규칙이기에, 커뮤니케이션의 효율성을 높일 수 있습니다.

 

💡 Django의 디자인 패턴

- Django에 적용된 디자인 패턴은 MTV 패턴으로, MVC(Model View Controller)를 기반으로 약간 변형된 패턴입니다.

 

(1) MVC 소프트웨어 디자인 패턴

: 데이터 및 논리 제어를 구현함에 널리 사용되는 SW 디자인 패턴으로, 하나의 큰 프로그램을 세 가지 역할로 구분한 개발 방법론

 

✅ Model : 데이터와 관련된 로직을 관리

✅ View : 레이아웃과 화면을 처리

✅ Controller : 명령을 model과 view 부분으로 연결

 

🔍 목적 : 관심사 분리’

 

① 더 나은 업무의 분리와 향상된 관리를 제공합니다.

② 각 부분을 독립적으로 개발 가능해, 개발 효율성 및 유지보수가 쉬워집니다.

③ 다수의 멤버로 개발하기 용이합니다.

 

(2) MTV 소프트웨어 디자인 패턴

 

MVC와 MTV의 비교

⚠️ MVC와 MTV에서의 View는 각각 다른 역할을 한다는 것을 주의해야합니다! ⚠️

 

1️⃣ Model (데이터)

  • MVC 패턴에서 Model의 역할
  • 응용프로그램의 데이터 구조를 정의하고 데이터베이스의 기록을 관리

2️⃣ Template (화면)

  • 레이아웃과 화면을 처리하는 역할
  • 화면 상의 사용자 인터페이스 구조와 레이아웃을 정의
  • MVC 패턴에서 View의 역할을 담당

3️⃣ View (중간 처리 & 응답)

  • Model & Template과 관련한 로직을 처리해 응답을 반환
  • 클라이언트의 요청에 대해 처리를 분기하는 역할
  • MVC패턴에서 Controller의 역할
  • 동작 예시 ▶ 데이터가 필요하다면 model에 접근해 데이터를 가져오고,  가져온 데이터를 template으로 보내 화면을 구성하고,  구성화면을 응답으로 만들어 클라이언트에게 반환