앱 개발을 하다 보면 유지보수, 테스트 용이성, 확장성을 고려한 아키텍처 설계가 매우 중요합니다. Swift 앱에서 많이 쓰이는 두 가지 아키텍처 MVC와 MVVM의 핵심을 간결하게 비교해보겠습니다.
🎯 1. MVC (Model - View - Controller)
✅ 개념 정리
- Model: 데이터와 비즈니스 로직 (예: 서버에서 받은 사용자 정보)
- View: 사용자에게 보여지는 UI (예: UILabel, UIButton)
- Controller: Model과 View를 연결하는 중간 관리자 (예: UIViewController)
📦 구조 예시
[View] <–> [Controller] <–> [Model]
⚠️ 단점
- Massive View Controller: 컨트롤러에 모든 로직이 몰려서 코드가 복잡해짐
- 테스트 어려움: 비즈니스 로직과 UI 코드가 섞여 있음
✅ 언제 쓰면 좋을까?
- 구조가 간단한 소규모 앱
- 빠르게 프로토타이핑할 때
🔁 2. MVVM (Model - View - ViewModel)
✅ 개념 정리
- Model: 데이터 구조와 비즈니스 로직
- View: UI 요소, 사용자와의 상호작용 처리
- ViewModel: View를 위한 데이터를 가공하고 바인딩 (UI 로직 처리 담당)
🔗 핵심 포인트
- 바인딩: ViewModel이 데이터를 업데이트하면 View가 자동으로 반영됨
- 의존성 역전: View는 ViewModel에 의존하지만, ViewModel은 View를 몰라도 됨
📦 구조 예시
[View] <–> [ViewModel] <–> [Model]
💡 SwiftUI와 찰떡!
MVVM은 SwiftUI의 구조와 매우 잘 맞음, Combine, RxSwift 같은 리액티브 프레임워크와도 궁합이 좋음.
✅ 언제 쓰면 좋을까?
- 데이터 바인딩이 많고 화면이 복잡한 앱
- 코드 테스트와 유지보수가 중요한 중대형 앱
⚖️ 비교 요약
| 항목 | MVC | MVVM |
|---|
| 주요 문제 | Controller 비대화 | ViewModel 설계 난이도 |
| 테스트 용이성 | 낮음 | 높음 |
| 코드 재사용성 | 낮음 | 높음 |
| 학습 곡선 | 쉬움 | 조금 더 어려움 |
| SwiftUI 호환성 | 낮음 | 높음 (거의 필수 수준) |
🧠 마무리 한마디
"MVC는 시작을, MVVM은 성장을 위한 아키텍처입니다."
개발 규모가 커질수록 MVVM으로의 전환이 거의 필수가 됩니다. 다만, 프로젝트 초기에는 간단한 MVC로 시작하고, 점진적으로 MVVM으로 전환하는 전략도 충분히 유효합니다.