MVC 패턴
기술노트
🏛️ MVC 패턴 (Model-View-Controller)
MVC 패턴은 소프트웨어 아키텍처 패턴 중 하나로, 애플리케이션을 세 가지 역할, 즉 모델(Model), 뷰(View), 컨트롤러(Controller)로 나누어 설계하는 방식입니다. 각 구성 요소가 독립적으로 역할을 수행하도록 하여, 애플리케이션의 결합도를 낮추고 유지보수성과 확장성을 높이는 것을 목표로 합니다.
🧩 MVC의 구성 요소
- 모델 (Model) : 애플리케이션의 데이터와 비즈니스 로직을 담당합니다. 데이터베이스와 상호작용하며, 데이터의 상태가 변경되면 컨트롤러나 뷰에 이를 알립니다.
> * 예: 사용자의 정보, 게시글의 내용, 상품의 가격 등
- 뷰 (View) : 사용자에게 보여지는 UI(User Interface)를 담당합니다. 모델로부터 데이터를 받아와 사용자에게 표시하는 역할을 합니다. 뷰는 데이터를 직접 수정해서는 안 됩니다.
> * 예: 웹 페이지(HTML/CSS), 모바일 앱의 화면
- 컨트롤러 (Controller) : 모델과 뷰 사이의 중재자 역할을 합니다. 사용자의 입력(요청)을 받아, 이를 해석하여 모델의 상태를 변경하거나, 모델의 데이터를 가져와 뷰에 전달하는 역할을 합니다.
> * 예: 사용자의 로그인 요청을 받아 모델을 통해 사용자를 인증하고, 그 결과에 따라 성공 또는 실패 뷰를 보여줌
⚙️ 동작 흐름
1. 사용자가 컨트롤러에 요청을 보냅니다. (예: 특정 버튼 클릭) 2. 컨트롤러는 요청을 분석하여, 모델에 필요한 작업을 지시합니다. (예: 데이터 조회 또는 수정) 3. 모델은 비즈니스 로직을 수행하고, 데이터베이스와 상호작용하여 결과를 컨트롤러에 반환합니다. 4. (필요시) 모델은 자신의 데이터 변경을 뷰에게 알려주어, 뷰가 화면을 갱신하도록 할 수 있습니다. 5. 컨트롤러는 모델로부터 받은 결과를 바탕으로, 사용자에게 보여줄 뷰를 선택합니다. 6. 뷰는 모델의 데이터를 사용하여 최종 화면을 그리고, 사용자에게 응답으로 전달합니다.
💡 정보처리기사 핵심 Point
- MVC 패턴의 핵심은 관심사의 분리(Separation of Concerns)입니다. UI 로직과 비즈니스 로직을 분리하여, 각 부분을 독립적으로 개발하고 테스트할 수 있게 해줍니다.
- 이를 통해 디자이너와 개발자 간의 협업이 용이해집니다. 디자이너는 뷰에, 개발자는 모델과 컨트롤러에 집중할 수 있습니다.
- 대부분의 현대적인 웹 프레임워크(Java의 Spring, Python의 Django, Ruby의 Rails 등)는 MVC 패턴을 기반으로 설계되었습니다.
- MVC 패턴은 여러 변형(MVP, MVVM 등)이 존재하며, 각 프레임워크나 플랫폼의 특성에 맞게 조금씩 다른 방식으로 구현됩니다.