탐험하는 바이트스토리

🖱️ Swift에서 MVC 아키텍처: 아직도 쓸만할까? 본문

프로그래밍

🖱️ Swift에서 MVC 아키텍처: 아직도 쓸만할까?

버그메이커 2025. 3. 17. 12:02
반응형

iOS에서 쓰이는 아키텍처 패턴이 뭐가 있을까?
iOS에서 쓰이는 아키텍처 패턴이 뭐가 있을까?

1. MVC란?

MVC(Model-View-Controller)는 가장 기본적인 소프트웨어 아키텍처 패턴 중 하나야.

애플이 iOS 개발에서 권장했던 패턴이라 많은 개발자들이 한 번쯤 접해봤을 거야.

기본 개념은 간단해.

  • Model(모델): 데이터와 비즈니스 로직을 담당.
  • View(뷰): UI를 보여주는 역할.
  • Controller(컨트롤러): 모델과 뷰을 연결해주는 역할.

입문자들도 쉽게 이해하기 좋은 구조패턴을 애플이 권장했지. 

이래서 많은 개발자들이 iOS 개발을 쉽게 시작할 수 있었나봐~

2. MVC의 역사

MVC는 사실 꽤 오래된 개념이야. 1970년대 후반에 Smalltalk라는 언어에서 처음 등장했어.

당시에는 GUI 프로그래밍을 체계적으로 정리하기 위해 도입된 패턴이었지.

이후 다양한 플랫폼에서 사용되면서 지금의 모습으로 발전했고, iOS에서도 자연스럽게 적용됐어.

UIKit 기반의 개발을 해봤다면,

UIViewController를 사용하면서 MVC를 경험했을 거야.

3. MVC의 구조

1) Model (모델)

앱의 데이터 및 비즈니스 로직을 담당해.

예를 들어, 사용자의 정보를 저장하는 User 모델이 있다면:

struct User {
    let name: String
    let age: Int
}

2) View (뷰)

UI 요소를 담당해. 데이터를 받아 화면에 표시하지만,

비즈니스 로직을 직접 포함하면 안 돼.

class UserView: UIView {
    let nameLabel = UILabel()
    let ageLabel = UILabel()

    func configure(with user: User) {
        nameLabel.text = user.name
        ageLabel.text = "\(user.age) years old"
    }
}

3) Controller (컨트롤러)

View와 Model 사이에서 데이터를 주고받으며 둘을 연결해.

class UserViewController: UIViewController {
    let userView = UserView()
    let user = User(name: "John", age: 30)

    override func viewDidLoad() {
        super.viewDidLoad()
        userView.configure(with: user)
    }
}

4. MVC의 장점

이해하기 쉽다 – 코드 구조가 명확해서 초보자도 쉽게 익힐 수 있어.
UIKit과 잘 맞는다UIViewController 자체가 MVC를 기반으로 만들어졌어.
빠른 개발이 가능하다 – 간단한 앱이라면 추가적인 아키텍처를 고민하지 않고 바로 개발할 수 있어.

5. MVC의 단점

Massive View Controller 문제 – 대부분의 로직이 ViewController에 몰리게 되면서 코드가 복잡해져. 해보면 알꺼야. 그냥 뷰컨트롤러 코드만 몇천줄이상 쭉쭉 늘어가는 것을...
View와 Model의 의존성 – 뷰가 모델을 직접 참조하는 경우가 많아지면서, 유지보수가 어려워질 수 있어.
테스트하기 어렵다 – 뷰 컨트롤러의 역할이 커지면서 단위 테스트 작성이 어려워져.

6. MVC는 지금도 유효할까?

단순한 프로젝트나 빠른 프로토타이핑에서는 여전히 쓸만해.

하지만 규모가 커지면서 ViewController가 비대해지는 문제를 피하기 위해,

MVVM이나 VIPER 같은 대체 아키텍처를 고려하는 게 좋아.

입문자 수준에서 벗어나고 있다면 다른 대체 아키텍처를 익혀보는 건 필수 인 것 같아.

7. 결론

MVC는 여전히 iOS 개발의 기본이지만,

무조건 사용하기보다는 프로젝트의 복잡도를 고려해서 선택하는 게 좋아.

다음 편에서는 MVVM 패턴을 다뤄볼게. 기대해! 🚀

반응형