디자인 패턴의 의미
소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학 소프트웨어 디자인의 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 이러한 디자인 패턴들은 특정한 상황에서 문제를 해결하는 방법을 공식화하여, 코드의 재사용성을 높이고 유지보수를 쉽게 하며 팀 간의 소통을 원할하게 만드는 데 기여한다.
디자인 패턴은 주로 생성 패턴, 구조 패턴, 행동 패턴으로 나뉘어져 있으며, 이와 관련해서는 나중에 따로 알아보려고 한다.
MVC란
모델-뷰-컨트롤러(model-view-controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.


MVC 패턴의 구성요소
컨트롤러(Controller)
컨트롤러는 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다. (예: 워드 프로세서에서 문서를 편집하는 것) 또, 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다. (문서를 스크롤하는 것 등)
모델(Model)
모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정할 수 있다. 어떤 MVC 구현에서는 통보 대신 뷰나 컨트롤러가 직접 모델의 상태를 읽어 오기도 한다.
뷰(View)
뷰는 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다.
MVC 패턴의 처리 절차 예시
1. 사용자의 요청(Request)
- 사용자가 버튼 클릭, 링크 클릭 등으로 뭔가 행동함
예) 로그인 버튼을 누름
🔁 Controller가 감지
2. 컨트롤러가 요청 처리 시작
- Controller가 사용자 요청을 받아서 적절한 로직을 처리할 준비를 함
- 필요한 데이터를 Model에게 요청함
예) 로그인 정보(ID, PW)를 모델에게 전달해서 확인 요청
3. 모델이 데이터 처리
- Model은 실제 로직, DB 조회, 계산 등을 담당
- 예를 들어 DB에서 해당 아이디와 비밀번호가 맞는지 확인
👉 처리 결과를 Controller에 넘겨줌
예) 로그인 성공 여부, 사용자 정보 등
4. 컨트롤러가 결과 정리
- Model에서 받은 데이터를 바탕으로 어떤 화면(View)을 보여줄지 결정
- View에게 필요한 데이터를 넘겨줌
5. 화면(View)에 결과 표시
- View는 데이터를 받아서 사용자에게 보여줄 화면을 렌더링함
예) 로그인 성공 → 메인 페이지 / 로그인 실패 → 에러 메시지와 함께 로그인 페이지
6. 사용자에게 응답
- 사용자 브라우저에 결과 화면이 나타남
MVC 패턴의 장 · 단점
장점
- 구성요소의 역할이 명확하게 분리되어 있어, 코드의 가독성을 높이고 유지 관리가 용이하다.
- 개별 구성 요소를 독립적으로 개발, 수정 및 테스트 할 수 있다.
- 동일한 모델을 여러 뷰에서 사용할 수 있으므로, 애플리케이션의 유용성이 향상된다.
단점
- 프로그램의 규모가 커질 경우 하나의 클래스에 수천 줄이 넘는 코드가 생길 수 있다.
- View와 Model 사이의 의존성이 높다.
그 외 디자인 패턴

현재 가장 많이 사용하는 것은 MVC 패턴이지만, 그 외에도 다양한 디자인 패턴들이 있다. MVVM, MVP, Clean Architecture 등에 대해선 다음 포스팅에서 알아보자.
Reference
모델-뷰-컨트롤러 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 모델, 뷰, 컨트롤러의 관계를 묘사하는 간단한 다이어그램. 웹 애플리케이션에서 일반적인 MVC 구성요소 다이어그램 모델-뷰-컨트롤러(model–view–controller, MVC)
ko.wikipedia.org
모델-뷰-컨트롤러(Model-View-Controller MVC)
컴퓨터 프로그램을 개발하면 흔히 MVC 구조, MVC 패턴, MVC 아키텍처라는 단어를 많이 듣게 된다. 그리고 그 뒤에 간단한 설명이 뒤 따른다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며
bsnippet.tistory.com
'백엔드' 카테고리의 다른 글
| [개념] JWT(JSON Web Token)에 대해 (2) | 2025.07.07 |
|---|---|
| [개념] 세션 기반 로그인 (1) | 2025.05.15 |
| [개념] 인증(Authentication) vs 인가(Authorization) (4) | 2025.05.15 |