MVC(Model-View-Controller) 패턴이란?
MVC는 Model, View, Controller의 약자로 사용자 인터페이스, 데이터 및 논리 제어를 구현하는 애플리케이션을 세 가지 역할로 분리하여 유지보수성과 확장성을 높이는 소프트웨어 디자인 패턴이다.
Model(모델)
역할: 애플리케이션의 핵심 데이터, 비즈니스 로직, 그리고 데이터 처리를 담당한다.
데이터 베이스와 직접 통신하며 데이터를 가져오거나 저장하는 등(CRUD)의 작업을 한다.
Model에는 순수한 애플리케이션 데이터만 포함되어 있으며 사용자에게 데이터를 제공하는 로직은 포함되지 않는다.
게시글, 회원 정보, 상품 정보 등의 데이터 구조 및 처리 로직을 담당한다.
View(뷰)
역할: Model에서 전달받은 데이터를 사용자에게 시각적으로 표현하는 역할을 한다.
HTML, CSS, JavaScript 등을 사용하여 UI를 구성하고 사용자에게 정보를 출력하는데, View는 모델과 독립적으로 동작하며, 데이터가 무엇인지나 처리 방식은 알지 못한다. 이러한 분리 덕분에 사용자 인터페이스를 수정하더라도 비즈니스 로직(Model)에는 영향을 주지 않는다.
HTML, Thmeleaf, JSP, React 등의 프론트엔드 화면 구성 요소가 여기에 해당한다.
Controller(컨트롤러)
역할: 사용자의 입력을 받아서 Model과 View 사이를 중재한다.
View에서 전달된 사용자 입력을 분석하고, 적절한 모델 기능을 호출하여 데이터를 조작하거나 업데이트한다. 그런 다음 결과를 다시 뷰에 전달하여 화면에 표시할 수 있다.
간단하게 말하면 사용자의 요청을 분석하고 필요한 Model을 호출하며, 처리 결과를 View로 전달한다.
위의 Model, View, Controller의 설명을 보면 모두 상호작용을 하고 있다.
MVC 패턴 상호작용 순서
1. 사용자가 View에 입력
2. View가 입력을 Controller로 전달
3. Controller가 요청을 분석하고 Model에게 작업 요청
4. Model이 데이터 처리(DB 조회, 저장 등)
5. Controller가 Model로부터 받은 데이터를 View로 전달
6. View는 전달받은 데이터를 기반으로 화면 렌더링
MVC 패턴의 설계 원칙
MVC 패턴의 설계 원칙은 각 구성 요소의 책임과 역할을 명확히 구분하고, 이를 통해 유지보수성과 확장성을 높이는 것이다.
1. 관심사의 분리
MVC패턴의 가장 중요한 원칙 중 하나는 관심사의 분리다.
애플리케이션을 서로 독립적인 세 가지 주요 기능으로 분리하여 각 부분을 독립적으로 개발하고 유지보수 할 수 있도록 한다.
위 Model, View, Controller의 설명처럼 각 요소의 책임을 명확히 구분하여, 변경이 한 요소에 국한되도록 한다.
2. 느슨한 결합
MVC 패턴에서는 Model, View, Controller 간의 결합을 최소화해야 한다. 즉, 각 요소가 서로에게 직접적으로 의존하지 않도록 하여 각 요소의 독립성을 유지한다.
Model은 View와 의존하지 않고, View는 Model의 데이터를 표시하는데만 집중해야 한다.
Controller이 중재자 역할을 하니까 의존성이 있는 거라고 생각했었지만, Controller는 Model과 View 사이의 다리 역할을 하며, 데이터를 처리하고 이를 View로 전달하지만, View의 세부 사항을 신경 쓰지 않는다.
3. 모듈화
MVC 패턴은 애플리케이션을 모듈화 하여 관리할 수 있게 해 준다. 각 구성 요소는 독립적으로 작동하며, 필요할 때마다 특정 모듈만 수정하거나 교체할 수 있어야 한다.
4. 재사용성
MVC 패턴은 재사용성을 촉진한다. 한 번 작성한 Model은 여러 View에서 재사용될 수 있는데 동일한 데이터를 여러 다른 UI형태로 표시할 수 있으며, 이는 코드의 중복을 줄이고 유지보수를 용이하게 만들어준다.
5. 테스트 용이성
MVC는 단위 테스트가 용이하게 설계되어 있는데 각 구성 요소는 독립적으로 동작하므로, 개별적인 테스트가 가능하고 Model, View, Controller를 독립적으로 테스트할 수 있다.
이처럼 MVC 패턴의 설계 원칙은 애플리케이션의 구성 요소 분리, 유지보수성, 확장성, 테스트 용이성을 보장하는데 중점을 둔다.
MVC 패턴 설계 원칙을 지킨다면 각 구성 요소가 독립적이고 유기적으로 협력하면서, 애플리케이션을 효율적으로 개발하고 유지 관리 할 수 있게 된다.
'오늘의 주제' 카테고리의 다른 글
클라이언트-서버 구조 (2) | 2025.05.14 |
---|---|
오늘의 코딩 일기 (0) | 2025.05.14 |
트랜잭션과 4가지 특징 (0) | 2025.05.12 |
RDBMS란? (0) | 2025.05.12 |
데이터베이스에서 다양한 유형의 관계 (1) | 2025.05.07 |