[ IT 기술의 이해 : Django 와 MTV 패턴 ]
1. Django(장고)란?
Django는 Python으로 제작된 오픈소스 웹 프리엠워크이다. 즉, 웹 개발에 필요한 기본적인 파이썬의 클래스와 라이브러리, DB 연동 등의 기능을 제공한다. Python의 웹 프레임워크는 대표적으로 Django와 Flask가 있다. 두 프레임워크는 각각의 사용 목적에 따라 다르게 사용할 수 있다. 해당 게시물에서는 Django에 대해서만 자세히 다뤄보도록 하겠다.
Django는 MTV 아키텍처 패턴을 따르고 있다는 특징이 있다. MTV 패턴이란 무엇일까? MTV패턴에 대해 알아보기전에 가장 기본이 되는 MVC 패턴에 대해 먼저 알아야 한다.
2. MVC 패턴과 MTV 패턴
웹 개발을 공부하며 MVC 패턴에 대해 들어본적이 많다. MVC 패턴은 디자인 패턴 중 하나로, 프로젝트의 구성 요소를 Model(모델), View(뷰), Controller(컨트롤러) 세 가지로 구분하는 패턴이다. 애플리케이션을 세 가지 주요 컴포넌트로 분리하여 유지보수성과 확장성을 확장시키는 구조이다. 각 컴포넌트는 특정 역할을 담당하며, 서로 독립적으로 동작하여 다른 요소들에게 영향을 미치지 않도록 설계된다(구성 요소 간의 간섭 없이 각자의 역할에만 충실해야하는 패턴). 각각의 구성요소에 대한 역할은 아래와 같다.
( * 디자인 패턴 : 효율적으로 코드를 작성하기 위한 코딩 규칙 또는 프로젝트의 구조 )
- Model(모델) : DB와의 상호작용, 데이터를 처리하고 저장하는 역할
- View (뷰) : 사용자 인터페이스(UI) 담당 (화면 입출력 담당, HTML/CSS/JavaScript 포함)
- Controller (컨트롤러) : Model과 View를 연결하고 흐름 제어하는 역할 (이벤트 헨들러, REST API 호출을 통한 데이터 처리)
MVC 모델의 장점은 각각의 구성 요소가 분리되어 본연의 역할에만 충실한 구조이므로 유연성이 매우 높고 유지보수가 용이하며 개발자와 디자이너의 작업 영역을 분리할 수 있다는 장점이 있다. 하지만, 프로젝트의 규모가 커질수록 컨트롤러가 비대화되고 모델과 뷰의 의존성을 완벽히 분리할 수 없기 때문에 유지보수가 점점 어려워진다는 단점이 있다.
Django에 적용되는 MTV 패턴은 MVC 패턴의 변형 중 하나라고 볼 수 있다. MTV 패턴은 Model(모델), Templete(템플릿), View(뷰)로 프로젝트를 구성한다. MTV 패턴은 명칭이 조금 다를 뿐 기본적인 골자는 MVC와 동일하다. MTV에서 각각의 구성요소의 역할은 아래와 같다.
- Model(모델) : DB와의 상호작용(ORM), 데이터를 처리하고 저장하는 역할
- Template(템플릿) : 사용자 인터페이스(UI) 담당 (사용자에게 데이터 표시, HTML로 작성되며 장고의 템플릿 언어 DTL 사용)
- View(뷰) : 사용자의 요청을 처리하고 필요한 데이터를 가져와 템플릿에 전달, Python 함수나 클래스 기반 뷰로 정의
- MTV의 큰 동작 흐름은 사용자가 URL을 통해 요청을 보내면 View는 요청을 처리하고 필요한 데이터를 Model로부터 가져온다. 그리고 View는 가져온 데이터를 Template에 전달하고, HTML로 변환한 결과를 사용자에게 반환하게 된다.
MTV의 큰 동작 흐름은 사용자가 URL을 통해 요청을 보내면 View는 요청을 처리하고 필요한 데이터를 Model로부터 가져온다. 그리고 View는 가져온 데이터를 Template에 전달하고, HTML로 변환한 결과를 사용자에게 반환하게 된다.
MTV 모델의 가장 큰 장점은 Django 설계 철학에 맞게 최적화 되어 있어 빠른 개발이 가능하다는 것이다. 또한 MVC에 비해 구조가 더욱 간단하며 직관적이고, Django ORM 사용을 통해 DB 작업을 간단하고 추상화시킬 수 있다. 추가적으로 장고의 템플릿 언어 DTL이 제공된다는 장점도 있다.
하지만, MTV는 Django에 특화된 패턴으로 다른 프레임워크에서는 직접적인 적용이 어렵다.
3. MVC와 MTV 비교
특징 | MVC | MTV(Django) |
구조 | Model-View-Controller | Model-Template-View |
역할 분배 | Controller 담당 : Controller가 사용자 요청을 처리하고 View를 렌더링함 |
View 담당 : View가 요청 처리와 데이터 요청 및 전달까지 모두 담당 |
템플릿 (화면에 표시될 내용 정리 및 구조 제공) | View 담당 : View과 템플릿과 상호작용 |
Template 담당 : Template이 데이터 렌더링을 담당 |
사용 목적 | 역할 분리를 통한 코드 관리 효율화 | 웹 애플리케이션 개발 최적화 |
'PM 교육' 카테고리의 다른 글
[PM교육] 머티리얼 디자인(Material Design Kit3) (0) | 2024.12.14 |
---|---|
[PM교육] UX/UI 디자인 기초 이론 (1) (1) | 2024.12.11 |
[PM교육] VSCode에서 Python 가상 환경 설정 (1) | 2024.11.16 |
[PM교육] 데이터 분석 실무 : MySQL 과 Python 연동 (2) | 2024.11.13 |
[PM교육] 제품 개발 방법론(3) (4) | 2024.10.14 |