MVC 패턴
MVC 패턴에서 각 구성 요소가 어떤 역할을 하고 어떻게 연결되는지 명확히 이해하면 개발 구조가 더 명확해집니다.
MVC 각 구성 요소
M - Model
- 데이터 및 비즈니스 로직을 담당
- DB와의 통신, 데이터 검증, 상태 관리 등
- 예: 사용자 정보, 게시글, 댓글 등 실제 “내용”
V - View
- 사용자에게 보여지는 화면 (UI)
- 템플릿, HTML, 프론트 컴포넌트 등
C - Controller
- 요청을 받아 로직을 처리하고, 결과를 View에 전달
- 사용자 입력 → Model → View로 연결되는 중개자
흐름 구조 (요청 흐름 기준)
사용자 요청 (예: URL 클릭, 버튼 클릭)
↓
Controller가 요청 받음
↓
필요한 데이터는 Model에서 조회
↓
가공된 데이터 → View로 전달
↓
View는 사용자에게 화면으로 렌더링
즉,
C → M → V
Controller가 Model을 통해 데이터를 가져오고, 그 결과를 View에 전달합니다.
그림으로 표현하면
[User Action]
↓
[Controller] ──> [Model]
↓ ↓
[View] <── Data 처리
↓
[Browser Output]
예시 (Express.js 기준)
// Controller
exports.showProfile = async (req, res) => {
const user = await UserModel.findById(req.user.id); // ← Model
res.render('profile', { user }); // ← View
};정리
- Model은 DB, 상태, 로직을 포함하는 진짜 ‘데이터 핵심’
- Controller는 데이터 요청·가공·View 전달 역할
- View는 사용자에게 보여주는 최종 결과
즉, C는 V로 보내지만, 그 전에 M에서 데이터를 가져옵니다.
M은 “백엔드 깊숙한 곳에” 있는 데이터 계층이라고 보면 됩니다.