본문 링크 (Original Link)

RxFlow 파트 1 : 이론

2018.11.14

# • # • #

by Thibault Wittemberg, translated by pilgwon

image1

당분간 이 블로그의 가장 주목받을 시리즈의 첫 글입니다. 저는 RxFlow 를 소개하고자 합니다. RxFlow 는 iOS 어플리케이션에서 Reactive Flow Coordinator를 구현해주는 프레임워크입니다. RxFlow 프로젝트는 RxSwiftCommunity의 도움을 받고 있습니다.

사실

iOS 어플리케이션에서 네비게이션에 관해서는 두 가지 선택지가 존재합니다.

위 두 방법엔 단점이 있습니다.

다음은 RxFlow 가 목표로 하는 사항입니다.

Storyboard 에서 Coordinator 패턴까지

iOS 개발 경험이 쌓일수록 저는 지속해서 네비게이션에 대한 의문을 가져왔습니다. 다른 개념적인 이슈의 경우엔 수많은 패턴이 존재합니다(MVC, MVP, MVVM, VIPER, …).

하지만 네비게이션을 설계할 때마다 저는 끝나지 않는 질문에 갈가리 찢겨 버렸습니다.

시간이 지나면서 전의 iOS 어플리케이션에 대한 구상은 하나의 스토리보드가 있는 MVC에서 여러 스토리보드가 있는 MVC까지 뻗어 나갔고, 결국엔 MVVM과 Flow Coordinator 에 닿았습니다. Flow Coordinator 가 완벽한 예시인 이유는 의존성 주입을 가지고 놀 수 있으며 UIViewController를 재사용이 가능하며 테스트도 쉽게 만들기 때문입니다. 저는 이 패턴을 크고 복잡하며 실제로 서비스 중인 어플리케이션에 적용할 기회가 있었습니다. 하지만 결국엔 다음과 같은 이슈들이 저를 꾸준히 괴롭혔습니다.

네비게이션은 단계적으로 수정될 수 있는 상태를 반영하기만 한다는 아이디어가 떠오르기 시작했습니다. 상태가 모든 어플리케이션 구조에 퍼지고, 한 공간에 저장되지 않고 관찰자에 의해 통합되어 결과적으로 네비게이션을 조종하는 것입니다. 지금부터는 어플리케이션에 흩어지는 작은 상태들을 Step 이라고 부르고 관찰자를 Coordinator 라고 부르겠습니다.

RxFlow 는 이러한 경험들과 전통적인 Coordinator 패턴에 남아있는 다음과 같은 두 가지 걱정에서 태어났습니다.

주요 원칙

Coordinator 패턴에 대해 더 알고 싶다면 Coordinator Redux라는 글을 추천해 드립니다.

Coordinator 패턴은 매우 좋은 아키텍쳐이지만 몇 가지 문제점이 존재합니다.

RxFlow는 Coordinator 패턴을 반응형으로 구현한 것입니다. 아키텍쳐의 좋은 점은 모두 가져왔습니다. 무엇이 바뀌었는지 알려드리겠습니다.

다음은 RxFlow를 이해하기 위해 친해져야 할 용어들입니다.

첫 글은 이 프레임워크의 개념적이고 이론적인 측면만 알아보는 시간이었습니다. 다음에는 RxFlow 의 기술적인 측면에 관해 얘기해보겠습니다.

RxFlow 의 GitHub 저장소와 데모 어플리케이션은 다음 주소에서 확인하실 수 있습니다. https://github.com/RxSwiftCommunity/RxFlow

채널 고정!