-
[iOS] RIBs를 2개월 정도 사용해본 후기👻 iOS 2021. 3. 22. 22:01
iOS 개발을 다시 시작하면서 가장 먼저 궁금했던 것은
'6년 전에 썼던 MVVM 아키텍쳐가 현재는 어떻게 변화했는가?' 였어요.
결론적으론 당시에는 자료가 많지 않아서 구현 방식이 제각각 이었지만
현재는 Best Practice 가 있다는 정도의 차이인듯 합니다.
현재의 MVVM을 사용하는 방향은 크게 변함이 없다고 보여요.
이 말은 예나 지금이나 MVVM은 누가 어떻게 쓰느냐에 따라서 천차만별 개발론이 펼쳐진다는 얘기;;
막말로 제가 멋대로 만들어두면 새로 입사한 뉴비들은 읭? 하면서 코드를 분석에 과도한 노력이 불가피할 수 있다는 얘기 ㅋㅋ
저는 코드에 자유로움을 부여하는 것을 좋아해요.
Angular 보단 React 를 더 좋아하는 것도 그 이유중에 하나고요.
하지만 React 로 자유롭게 개발하고 병합된 코드의 결과는 각자의 개성 때문에 알아보기가 힘들어지기도 합니다.
물론 코드리뷰를 활발히 하고 서로의 눈 높이를 맞춰서 일정 수준에 함께 오른 상태라면 이런 걱정은 안 하겠죠?
RIBs를 사용하게 된 이유가 이런 이유 때문이었어요.
Angular 를 싫어하지만 사용 당시에는 다른 사람의 구현 코드를 파악하기 쉬었던 경험이 있었고
제가 현재는 단독으로 iOS 개발을 하고 있지만
함께 할 새로운 동료를 위한 준비를 미리 해보자는 마음도 컸어요.
실제로 RIBs를 공부하면서 구현된 샘플들을 보면
쉽게 접근하고 쉽게 분석이 가능했어요.
그렇게 마음의 결정을 하고 2개월 가량을 RIBs를 써보니,
- 화면간 라우팅에 조금 더 편리함이 있었고, (타인의 코드 볼 때에 제일 강점)
- Interactor 에서 테스트를 위한 비즈니스 로직을 의식적으로 정리해서 만들었으나 정작 테스트를 붙여 작성하진 않게 되었습니다. (TDD를 해야하는데 Interactor Driven을...)
- Interactor 에서의 로직 처리에 마땅한 규칙을 찾지 못해서 Primitive와 Observable의 혼용이 이루어지고 가독성과 일관성은 점점 산으로.
- 생각보다 파일 개수가 많이 늘어나는데, 그에 비해서 내부 구현이 달라지는 것은 Interactor와 ViewController가 위주고 Router와 Builder는 크게 달라지지 않는다. 뭔가 빌드 과정을 과열시키고 리소스를 낭비하는 느낌?
그러다가 보니 ReactorKit 이란게 있더군요.
Redux에 익숙한 저는 유사한 방식으로 상태를 관리하는 괜찮은 방법이라고 판단되어서
RIBs의 Interactor 에 Reactor 를 끼얹어 쓰면 어떨까? 하고 시도해 보았어요.
그리곤 비즈니스 로직 안에 비즈니스 로직이 존재하는 이상한 모양에 잠시 현타를 맞게 됩니다.
잠시 정리해볼까요?
- 공동 개발을 위한 아키텍쳐로 RIBs 를 쓰게 되었다.
- TDD는 잘 진행하지 못했다. (해야지.. 해야지..)
- Interactor 의 구현이 스파게티 코드가 되어감을 인지.
- Interactor 에 ReactorKit을 함께 써보려고 했으나 비즈니스 로직 안에 비즈니스 로직을 랩핑한 구조가 이상하다고 느껴짐.
네,.. 저는 지금 길을 잃었습니다.
저와 같은 고민을 하시는 분들이 계시다면 도움 좀 주세요.....
MVVM 은 개발자간 역량 차이 때문에 피하고 싶었는데, RIBs 를 사용하는 것도 쉽지 않군요;;