MVC 설계 패턴의 본질과 오해

Source

  • Evernote/Inbox/MV-Whatever 정리 네이버 블로그.md

Summary

이 문서는 개발자들이 MVC(Model-View-Controller)를 잘못 이해하고 적용하여 코드 유지보수성이 떨어지는 현상을 지적하며, MVC의 진정한 의미를 재조명한다. 핵심 주장 세 가지는 다음과 같다: 1) MVC는 구체적인 구현 방법을 제시하는 ‘디자인 패턴’이 아닌, 시스템의 큰 구조를 정의하는 ‘설계 패턴(Architectural Pattern)‘이다. 2) MVC는 Model과 View 간의 관계 및 관심사 분리에 집중하며, Model 내부 설계나 애플리케이션의 모든 관심사를 포괄하지 않는다. 3) MVC는 특정 맥락에서 탄생했으며, 이를 다른 환경(예: 웹 UI)에 무조건 적용하려 하면 MVP, MVVM, Flux 등 다양한 변종과 오해가 생긴다. 따라서 MVC를 올바르게 활용하려면 그 역사적 맥락과 한계를 이해해야 한다.

Key Points

  • MVC는 디자인 패턴이 아닌 설계 패턴(Architectural Pattern)이다.
  • MVC는 Model과 View의 관계 및 관심사 분리에 집중하며, Model 내부 설계는 다루지 않는다.
  • MVC는 특정 맥락에서 탄생한 설계로, 맥락 없이 적용하면 오해와 다양한 변종(MVP, MVVM 등)이 발생한다.
  • 실무에서 Controller가 Super Object가 되거나 M-V 간 N:N 관계가 형성되는 것은 MVC의 본질을 오해한 결과일 수 있다.