Clean Architecture 찍먹
아키텍처 패턴의 선택은 앱의 확장성, 유지보수성, 전반적인 품질에 중요한 영향을 미친다.
일반적으로 채택되는 패턴들을 먼저 알아보자.
MVC
- Model - View - Controller
- 가장 심플함
- ViewController가 거대해질 수 있음. 관리가 어렵다.
MVVM
- Model - View - ViewModel
- MVC의 단점 해결
- 데이터 바인딩을 사용해서 View와 ViewModel의 상호작용
- 관심사 분리, ViewController의 복잡성 감소
- 이번엔 ViewModel이 거대해질 수 있음
VIPER
- View -Interactor - Presenter - Entity - Router
- 더 세분화해서 모듈화, 유지보수성을 높인 분리 구조
- 대규모 앱에 적합
RIBs
- Router - Interactor - Builder
- Uber에서 개발한 아키텍쳐 패턴
- 대규모 앱에 적합
Redux
- Store - Action - Reducer - View
- Facebook에서 개발한 패턴
- 상태 관리, 데이터 흐름을 중앙 집중화
Clean Swift(VIP 패턴의 변형)
- ViewController - Interactor - Presenter - Router - Worker - Configurator
- ViewController: UI를 표, 사용자 입력을 처리
- Interactor: 비즈니스 로직 처리
- Presenter: Interactor에서 받은 데이터를 가공, ViewController에 전달
- Router: 화면 전환 관리
- Worker: 복잡한 작업 처리
- Configurator: 구성 요소를 초기화, 상호 연결
Clean Swift
Get Started with Clean Swift - Clean SwiftClean Swifthttps://clean-swift.com
Clean Swift의 효능
- MVC 대신 Clean Swift 아키텍처를 구현하면 코드를 더 쉽게 관리하고 이해할 수 있다.
- 비즈니스 로직을 명확히 분리하여, 뷰 컨트롤러가 비대해지는 문제를 해결한다.
- 단위 테스트가 용이하며, TDD를 통해 코드의 신뢰성을 높일 수 있다.
- Clean Swift는 다른 프레임워크를 배우지 않고도 기존 코드를 더 잘 관리할 수 있다.
- Clean Swift의 VIP 사이클을 통해 앱의 흐름을 여러 스토리보드로 분할할 수 있으면, 세그웨이를 계속 사용할 수 있다.
주요기능
Clean Swift Xcode 템플릿을 사용하여 모든 구성 요소를 자동으로 생성한다.
템플릿을 사용하여 중복 코드를 줄이고, 비즈니스 로직에 집중할 수 있다.
Clean Swift iOS 아키텍처를 사용하여 Massive ViewController 문제를 해결한다.
https://medium.com/@hyleedevelop/clean-swift-vip-architecture-tutorial-in-uikit-for-beginners-part-2-a646f24d19af
클린 아키텍처 in Swift
UI Layer
→ ViewController
Application Layer
→ Presenter
Domain Layer
→ UseCase
Infrastructure Layer
- 외부 시스템과의 통신 담당
- 데이터베이스, 네트워크 등
→ Repository