피드로 돌아가기
올리브영 테크블로그Mobile
원문 읽기
iOS ReactorKit 톺아보기
올리브영 모바일앱이 ReactorKit을 도입해 ViewController의 비즈니스 로직을 분리하고 상태 관리 구조를 단순화
AI 요약
Context
RxSwift 단독 사용 시 상태값 관리에 어려움이 있었고, UI 로직과 비즈니스 로직이 ViewController에 혼재되어 코드 복잡도가 증가했다.
Technical Solution
- Reactor 패턴 도입: Action → Mutation → State의 단방향 흐름으로 상태 변화를 명시적으로 관리
- View와 Reactor 분리: View는 Action만 방출, Reactor는 State만 방출하도록 책임 분담
- 전체 앱 리팩토링이 아닌 필요 부분만 선택적 적용: 기존 코드와 공존 가능
- mutate() 메서드로 비동기 작업 처리: Action 스트림을 Mutation 스트림으로 변환
- reduce() 메서드로 상태 갱신: 이전 State와 Mutation을 결합해 새로운 State 생성
- DisposeBag과 bind(reactor:)를 통한 메모리 관리: [weak self] 및 withUnretained Operator로 순환 참조 방지
Key Takeaway
RxSwift 기반 프로젝트에서 명시적인 상태 관리 구조(Action-Mutation-State)를 도입하면 코드 응집도를 높이고 테스트 용이성을 확보하면서도 점진적 도입이 가능하다.
실천 포인트
RxSwift를 사용하는 iOS 프로젝트에서 ViewController의 상태 관리 복잡도가 증가할 때, ReactorKit의 Action-Mutation-State 패턴을 적용하면 UI 로직과 비즈니스 로직을 명확히 분리하고 유닛 테스트를 Reactor 레벨에서 의존성 없이 작성할 수 있다.