🚀 RIBs란 무엇인가?
RIBs는 Uber가 만든 모바일 앱 아키텍처야.
큰 규모의 앱과 많은 개발자가 함께 일할 때 생기는 문제들을 해결하기 위해 만들어졌어.
- iOS / Android 크로스 플랫폼 공통 패턴이고
- 복잡한 상태 관리와 많은 기능을 모듈 단위로 깔끔하게 나누는 데 최적화되어 있어.
🧠 왜 RIBs를 쓰는 걸까?
RIBs는 다음과 같은 장점이 있어:
✔ 플랫폼 간 협업 쉬움
iOS와 Android 모두 같은 구조를 쓰니까 팀 간 코드 이해와 리뷰가 쉬움.
✔ 글로벌 상태가 줄어듦
앱 전체의 상태를 전역에서 관리하는 대신, 작은 기능 단위(RIB)별로 상태를 숨김 → 오류 예측이 쉬움.
✔ 테스트하기 쉬움
각 부분이 독립적으로 구성·분리돼 있어서 단위 테스트가 쉬움.
✔ 개발 생산성 향상
코드 생성 도구, 정적 분석, 런타임 도구 등을 지원해서 대규모 팀에서도 효율적으로 개발 가능.
✔ 확장성 (Open-Closed Principle)
기존 코드를 수정하지 않고 새 기능을 추가할 수 있도록 설계되어 있어.
✔ 비즈니스 로직 중심 구조
UI와 비즈니스 로직이 서로 얽히지 않고 분리되어 있어 유지보수/확장에 유리해.
🧱 RIBs의 핵심 구성 요소
RIBs는 기본적으로 **하나의 기능 단위(RIB)**를 다음 세 가지 구성요소로 나눠 설명해:
📌 1) Interactor
➡ 비즈니스 로직을 담당해.
사용자 입력 처리, 상태 변화 판단, 어떤 RIB를 추가/제거할지 결정 등을 해.
📌 2) Router
➡ 화면 전환/흐름 제어 역할.
Interactor가 “다음으로 가자!”라고 말하면 Router가 실제로 child RIB를 붙이거나 분리해.
📌 3) Builder
➡ RIB 구성 요소들을 만들어 주는 공장 역할.
Router, Interactor, View까지 필요한 요소들을 생성하고 연결해 줘.
🖼 부가 구성요소
RIBs에는 이외에도 이런 구성들이 있어:
구성요소역할
| Presenter | 비즈니스 모델 → UI 모델 변환 (뷰용) |
| View (Controller) | 실제 UI 화면 표시 |
| Component | DI(의존성 관리) 담당 |
이 요소들은 Interactor/Router/Builder에 비해 선택적이거나 UI 중심 기능일 때 사용돼.

🌳 전체는 나무 구조
RIBs는 부모-자식 관계 트리 구조로 앱을 구성해.
사용자 흐름이 바뀔 때마다 RIB가 attach/ detach 되면서 상태를 관리해.
예를 들면:
App
├ LoggedOutRIB
└ LoggedInRIB
├ HomeRIB
└ ProfileRIB
이런 식으로 상태를 분리해서 앱 전체 logic을 관리해.
🧩 정리 (한 줄 요약)
RIBs는 모바일 앱을 작은 독립 단위로 나누고, 각 단위를 연결해 복잡한 앱을 깔끔하게 유지·확장할 수 있도록 만든 Uber의 아키텍처야. (GitHub)
'iOS > Swift' 카테고리의 다른 글
| VIPER (0) | 2025.12.06 |
|---|---|
| MVVM (Model-View-ViewModel) (0) | 2025.12.05 |
| MVC (Model - View - Controller) (0) | 2025.12.04 |
| iOS에서 UI 변경이 바로 적용되지 않는 이유 (0) | 2025.05.09 |
| ViewModel의 위치? View vs ViewController (0) | 2025.05.07 |