
프론트엔드
Kotlin Flow를 통한 단방향 데이터 스트림 설계서
두줄요약
Kotlin Flow를 단방향 데이터 스트림 관점에서 활용해 Android 화면 상태 관리를 단순화한 사례를 설명했습니다. shareIn, merge, combine, flatMapLatest의 사용 기준과 주의점을 정리했습니다.
핵심 내용
- Kotlin Flow를 단방향 데이터 스트림 관점에서 활용해 Android 화면의 상태 관리 복잡도 완화
- 명령형 상태 변수 관리의 한계 대신 Flow, StateFlow, SharedFlow로 흐름 중심 관리
- 여기어때 해외 숙소 상세 화면 사례를 통해 shareIn, merge, combine, flatMapLatest 적용 방식 정리
구조와 흐름
- Cold Flow는 collect마다 재실행되므로 단일 API 결과를 여러 구독자와 공유할 때 shareIn으로 Hot Flow 전환
- merge는 날짜·인원, 로그인 상태처럼 독립 이벤트를 하나의 흐름으로 합칠 때 사용
- combine은 서버 DTO와 쿠폰 상태처럼 최신값 조합이 필요할 때 사용
주의할 점
- flatMapLatest는 최신 이벤트 기준으로 이전 흐름을 취소해 API 중복 실행 방지에 유리
- chaining 방식에서는 바깥 Flow 방출 시 내부 getForeignPdp 실행 취소가 보장되지 않는 점 유의
- 새로운 이벤트에 따라 최신 상태를 우선해야 하는 화면 구조에 적합
적용해볼 점
- 상태 변화를 변수보다 스트림 안으로 모아 추적 가능성을 높이기
- 화면 재갱신, 비동기 API 연동, 최신값 조합이 많은 Android 화면에 Flow 패턴 적용
