2.9 KiB
2.9 KiB
id, category, confidence_score, tags, last_reinforced
| id | category | confidence_score | tags | last_reinforced | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| P-REINFORCE-AUTO-WIKI-ARCH-005 | 10_Wiki/💡 Topics/02_Architecture_Principles | 0.95 |
|
2026-05-01 |
MVC (Model-View-Controller)
📌 한 줄 통찰 (The Karpathy Summary)
"데이터(Model), 사용자 인터페이스(View), 로직 제어(Controller)를 분리하여 시스템의 관심사를 격리함으로써, UI의 변화가 데이터 구조에 영향을 주지 않도록 설계하는 고전적이고 강력한 관심사 분리(SoC) 패턴."
📖 구조화된 지식 (Synthesized Content)
MVC는 애플리케이션의 구조적 무결성을 유지하기 위한 가장 널리 알려진 디자인 패턴입니다.
- 구성 요소의 역할:
- Model: 애플리케이션의 데이터와 비즈니스 로직을 담당합니다. 데이터베이스와의 상호작용 및 상태 변화를 관리합니다.
- View: 사용자에게 정보를 표시하는 인터페이스 레이어입니다. 모델의 데이터를 시각적으로 표현하며 로직은 포함하지 않습니다.
- Controller: 사용자의 입력을 받아 모델을 업데이트하거나 뷰를 선택하는 제어 흐름을 담당합니다. 모델과 뷰 사이의 중재자 역할을 수행합니다.
- 관심사 분리 (Separation of Concerns):
- 각 구성 요소가 독립적으로 개발 및 테스트될 수 있도록 격리합니다.
- 코드 리뷰 시, 뷰에 비즈니스 로직이 포함되어 있거나 모델이 UI 요소를 직접 참조하는지 등을 검토하여 패턴의 무결성을 확인합니다.
- 시스템 확장성:
- 일관된 구조를 유지함으로써 장기적인 유지보수 비용을 낮추고, 새로운 기능을 추가할 때 시스템 전체의 복잡성을 제어합니다.
⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- 비대한 컨트롤러 (Fat Controller): 로직이 컨트롤러에 집중되어 코드가 비대해지는 현상이 자주 발생합니다. 이를 방지하기 위해 서비스 레이어(Service Layer)를 추가로 도입하여 비즈니스 로직을 모델이나 서비스로 분산시키는 전략이 필요합니다.
- 현대적 변형: 웹 프레임워크의 발전에 따라 MVP, MVVM 등 다양한 변형 패턴이 등장하였으나, 관심사 분리라는 핵심 철학은 MVC에서 계승되었습니다.
🔗 지식 연결 (Graph)
- Design Patterns: 아키텍처 패턴의 범주.
- Clean Architecture: MVC를 보다 고도화한 계층화 구조.
- SOLID Principles: 각 계층의 단일 책임을 정의하는 원칙.
- 관심사의 분리 (Separation of Concerns SoC): 패턴의 근본적인 설계 철학.
- Code Health: 일관된 패턴 준수가 가져오는 시스템의 건강성.