RxSwift Slack 커뮤니티에서 흥미로운 질문과 답변을 보게 되었습니다. RxSwift와 MVVM 아키텍처를 도입하기 위해 준비하고 있는 freak4pc님의 질문이었습니다. 프로젝트에 본격적으로 사용하기 전에 우려되는 점들을 질문했는데요. 이에 대한 killectro님의 답변도 흥미로웠습니다. RxSwift와 MVVM 아키텍처를 도입하려고 시도하던 분들이 한 번씩은 다 해보았을 고민이라고 생각되었습니다. 비슷한 고민을 하는 분들께 조금이나마 도움이 되기를 바라며, 대화 내역을 동의 하에 번역하여 공유합니다.

(자연스러운 문장을 위해 의미를 해치지 않는 선에서 의역하였습니다)

Q. 함께 일하는 동료에게 RxSwift와 MVVM 아키텍처를 사용하자고 설득하는데 있어 어려움이 없었나?

A. 운이 좋게도 개발팀에서 이미 MVVM을 사용해본 적이 있었다. 몇 명의 팀원은 ReactiveCocoa를 사용해본 경험도 있었기 때문에 RxSwift와 MVVM 아키텍처를 도입하는데 큰 어려움이 없었다. 새로 작성하는 컨트롤러나 뷰 모델에 대한 코드 리뷰 미팅을 해보는 것을 추천한다. 기능을 개발하는데 어떤 Reactive한 코드를 사용했고, 그 이유는 무엇인지에 대한 논의를 해보는 것이 좋다.

Q. RxSwift와 MVVM 아키텍처는 기존 개발 방식과 엄청나게 다르다. 그렇기 때문에 우려되는 점이 많은데, 특히 ‘올바른 방법’에 대한 정해진 답을 찾을 수 없다는 것이 가장 걱정된다. 직접 시도해본 뒤 문제를 고쳐나가는 방식으로 각자 해결 방법을 찾아가는 방법이 최선인가?

A. 공감한다. 올바른 답을 찾는 것이 정말 어려웠다. 그런데 개발팀이 RxSwift를 본격적으로 사용하겠다고 마음먹었더니 생각보다 빠르게 학습할 수 있었다. 그리고 코드를 간결하게 만들기 위해 끊임없이 리팩토링했다. 처음 2-3번의 코드는 좀 지저분하더라도, 계속 리팩토링하다보면 점점 코드가 개선될 것이다. 계속 나아지는 것이 중요하다.

Q. 개발중인 전체 프로젝트가 RxSwift라는 단일 프로젝트에 지나치게 의존하게 될까봐 우려스럽다. RxSwift 개발이 갑자기 중단되거나, 큰 변화가 생길 경우 대응하기가 어려워진다. 위와 비슷한 고민을 해본 적이 있는지? 그렇다면 RxSwift를 사용하기로 결정한 계기가 무엇인지?

A. 우리 팀에서도 가장 우려했던 부분이다. 그러나 RxSwift를 도입하면서 얻게되는 것들이 더 많았다. 우리 팀에서는 복잡한 기능들을 RxSwift를 사용해서 굉장히 간결하고 빠르게, 그리고 안정적으로 개발할 수 있었다. RxSwift는 뛰어난 프로그래머인 @kzaher와 굉장히 큰 커뮤니티에 의해 유지되고 있다. 그리고 Reactive Programming 개념은 점점 발전하는 단계에 있기 때문에 RxSwift가 쉽게 중단되지는 않을 것이다.