MVC 아키텍처 이해하기: 모델, 뷰, 컨트롤러의 역할과 데이터 흐름
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 웹 개발 초보자 및 MVC 아키텍처 개념을 이해하고자 하는 개발자
- 난이도: 중간 (기초 프레임워크 지식 필요)
핵심 요약
- 모델(Model) = 데이터 처리 및 비즈니스 로직 (
Tweet.find()
,User.save()
) - 뷰(View) = UI 렌더링 (HTML, JSON 등)
- 컨트롤러(Controller) = 요청 처리 및 모델/뷰 간 중개자 (
function login(req, res)
) - MVC는 코드 구조 정리를 위한 패턴이며, CRUD 앱에 적합하고 실시간 앱에서는 사용하지 않음
섹션별 세부 요약
1. MVC 데이터 흐름
- 사용자 요청 → 컨트롤러가 요청 처리
- 컨트롤러 → 모델에 데이터 업데이트 요청
- 모델 → 데이터베이스와 상호작용 후 결과 반환
- 뷰 → 모델의 업데이트된 데이터로 UI 재렌더링
2. 예시: 트윗 좋아요 기능
- 뷰 (프론트엔드):
POST /tweets/123/like
요청 전송 - 컨트롤러 (Rails 예시):
```ruby
def like
tweet = Tweet.find(params[:id])
tweet.likes += 1
tweet.save
render json: { likes: tweet.likes }
end
```
- 모델 (Tweet 클래스):
find()
및save()
메서드로 DB 처리 - 뷰 (React 예시): JSON 응답을 받아 UI 업데이트
3. 프레임워크별 MVC 구현 방식
- Rails = 정확한 MVC 패턴
- Django = MTV (Model-Template-View)
- Express.js = 유연한 구조 (개발자 정의)
4. MVC의 장단점
- 장점:
- 역할 분리로 유지보수성 향상
- 팀 협업에 적합 (분리된 책임)
- 단점:
- 실시간 앱(예: 웹소켓)에 부적합
- 작은 프로젝트에서는 과도한 복잡성 유발
결론
- MVC는 아키텍처 패턴이며, CRUD 기반 앱에 적합함
- 작은 MVC 앱(예: Todo 리스트)을 구현해 역할 분리를 직접 체험해보세요.
- 프레임워크 선택 시
Rails
,Django
,Express.js
의 차이를 고려해주세요.