피드로 돌아가기
InfoQFrontend
원문 읽기
RDLA 도입을 통한 Android 오프라인 우선 Reactive 데이터 레이어 설계
Article: Beyond CLEAN and MVP: Architecting an Offline-first Reactive Data Layer in Android
AI 요약
Context
기존 MVP의 Pull-based 통신 구조로 인한 상태 전파 지연과 CLEAN Architecture의 과도한 Boilerplate 발생 문제 분석. 특히 BLE와 같은 하드웨어 API의 비동기 콜백으로 인한 GATT race condition 및 상태 동기화 버그 해결 필요성 증대.
Technical Solution
- Local Cache를 Single Source of Truth로 설정하여 UI 버퍼로 활용하는 구조 설계
- Kotlin Flow 기반의 Cold Stream을 도입하여 UI 레이어로의 단방향 Reactive 데이터 버스 구축
- suspendCancellableCoroutine 브릿지를 통한 비동기 하드웨어 이벤트를 결정론적 동기 스트림으로 직렬화
- Asynchronous Mutation Queue를 통해 사용자 변경 사항을 로컬에 즉시 반영하고 백그라운드 동기화 처리
- Android Jetpack WorkManager를 활용하여 앱 종료 후에도 네트워크 데이터 전송의 원자성 보장
- TestExtensions 인터페이스 기반의 FakeDataSource 주입으로 SQLite Mocking 없이 Fallback 로직 검증
실천 포인트
- 단순 데이터 전달만 수행하는 Pass-through Use Case 제거를 통한 코드 복잡도 감소 검토 - 하드웨어 API 연동 시 콜백 구조를 Coroutine 기반의 Sequential Stream으로 변환하는 브릿지 설계 적용 - 오프라인 우선 설계를 위해 Local DB 저장과 Remote API 호출의 생명주기를 분리하는 Mutation Queue 도입 - DB 스키마 변경이 비즈니스 로직에 영향을 주지 않도록 Local DataSource 단계에서 Domain Model 매핑 수행