피드로 돌아가기
InfoQInfoQ
Frontend

RDLA 도입을 통한 Android 오프라인 우선 Reactive 데이터 레이어 설계

Article: Beyond CLEAN and MVP: Architecting an Offline-first Reactive Data Layer in Android

Mervyn Anthony2026년 6월 24일17advanced

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 매핑 수행

원문 읽기