[Swift] 앱 아키텍처 (MVC, MVVM)

Eden·2025년 5월 16일

[Swift]

목록 보기
7/7

앱 개발을 하다 보면 유지보수, 테스트 용이성, 확장성을 고려한 아키텍처 설계가 매우 중요합니다. Swift 앱에서 많이 쓰이는 두 가지 아키텍처 MVCMVVM의 핵심을 간결하게 비교해보겠습니다.


🎯 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 같은 리액티브 프레임워크와도 궁합이 좋음.

✅ 언제 쓰면 좋을까?

  • 데이터 바인딩이 많고 화면이 복잡한 앱
  • 코드 테스트와 유지보수가 중요한 중대형 앱

⚖️ 비교 요약

항목MVCMVVM
주요 문제Controller 비대화ViewModel 설계 난이도
테스트 용이성낮음높음
코드 재사용성낮음높음
학습 곡선쉬움조금 더 어려움
SwiftUI 호환성낮음높음 (거의 필수 수준)

🧠 마무리 한마디

"MVC는 시작을, MVVM은 성장을 위한 아키텍처입니다."

개발 규모가 커질수록 MVVM으로의 전환이 거의 필수가 됩니다. 다만, 프로젝트 초기에는 간단한 MVC로 시작하고, 점진적으로 MVVM으로 전환하는 전략도 충분히 유효합니다.

profile
iOS Dev

0개의 댓글