애플리케이션의 복잡성을 제어하기 위한 설계 패턴인 MVC(Model-View-Controller)에 대해 정리했다.
역할을 세 가지 계층으로 분리하여 관리하는 방식이다.
계층별 역할 정의
MVC 패턴은 각 구성 요소의 책임을 명확히 구분한다.
-
Model (데이터 계층): 비즈니스 로직과 데이터를 담당한다.
데이터베이스 연동 및 데이터 처리 규칙을 정의한다. -
View (표현 계층): 사용자 인터페이스를 담당한다.
모델로부터 전달받은 데이터를 화면에 출력하며 로직을 포함하지 않는다. -
Controller (제어 계층): 사용자 요청을 수신하여 모델을 호출하고, 결과에 따른 뷰를 선택하여 응답을 제어한다.
스프링 MVC 구현 구조
스프링 프레임워크의 MVC 패턴 적용 사례를 분석했다.
// 1. Controller: 요청 수신 및 모델/뷰 조율
@Controller
public class UserController {
@GetMapping("/user")
public String getUserInfo(String userId, Model model) {
User user = userService.findUser(userId); // 모델 호출
model.addAttribute("user", user); // 데이터 전달
return "userProfile"; // 뷰 지정
}
}
<!-- 2. View: 데이터 출력 -->
<h2>사용자 프로필</h2>
<p>이름: ${user.name}</p>
설계 독립성의 가치
MVC 패턴의 핵심은 계층 간 독립성이다.
UI 디자인 변경이나 데이터베이스 구조 변경 시 타 계층에 미치는 영향을 최소화할 수 있다.
이러한 분리 구조는 대규모 프로젝트의 협업 효율성과 유지보수성을 향상시킨다.
관심사 분리는 좋은 설계의 기본 원칙인 것 같다.