목록 보기
Compose와 MVI로 다시 태어난 Android UI: MVVM에서 MVI로의 전환기
프론트엔드

Compose와 MVI로 다시 태어난 Android UI: MVVM에서 MVI로의 전환기

여기어때
여기어때
2025년 1월 6일

두줄요약

검색 화면의 복잡한 상태 관리를 개선하기 위해 MVVM에서 MVI로 전환하고, Compose와 결합한 구조를 소개했습니다. 단방향 데이터 흐름과 SideEffect 분리로 가독성과 유지보수성을 높였습니다.

문제 상황

  • 검색 화면의 웹→네이티브 전환 과정에서 상호작용과 데이터 갱신이 빈번한 복잡한 UI 상태 관리 필요
  • 기존 MVVM에서는 StateFlow 기반 개별 상태 관리가 늘어나며 코드 복잡성, 비동기 갱신, 디버깅 난이도 증가

원인 분석

  • 상태와 이벤트가 많아질수록 ViewModel의 프로퍼티와 View 관찰 지점이 분산
  • 상태 변경과 UI 반영의 흐름이 명확하지 않아 예측 가능성 저하

해결 방법

  • Jetpack Compose와 MVI 패턴을 결합해 단방향 데이터 흐름과 선언형 UI 적용
  • State, Event, SideEffect를 Contract로 분리하고 단일 상태 객체로 화면 상태 통합
  • BaseViewModel과 Channel, runningFold, stateIn으로 이벤트 처리와 상태 갱신 구조화

성능/운영 포인트

  • 화면 상태의 가독성, 유지보수성, 확장성 향상
  • 일회성 작업을 SideEffect로 분리해 재처리와 상태 혼합 문제 완화
  • Firebase Performance Monitoring으로 전환 이후 성능 수치 분석

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...