안드로이드 클린 아키텍처(Clean Architecture), Jetpack Compose & MVI 모바일 모듈화 실습 랩
🔗 GitHub Topics:#mobile-native#android#kotlin#clean-architecture#mvi#jetpack-compose#hilt
본 레포지거리는 안드로이드 모바일 개발에서 화면 회전 시 UI 상태 유실, 비동기 코루틴 스레드 메모리 누수, 모놀리식 Activity/Fragment의 거대화(Massive Controller) 문제를 극복하고 클린 아키텍처 3계층(UI - Domain - Data) 분리로 확장성과 테스트 가능성을 확보합니다.
| 구 분 | 기술 스택 / 라이브러리 | 주요 용도 |
|---|---|---|
| Language & UI | Kotlin 2.0+, Jetpack Compose | 선언적 모바일 UI 렌더링 및 상태 바인딩 |
| Architecture | Clean Architecture, MVI / MVVM, UDF | 3계층 분리 및 단방향 데이터 흐름(Unidirectional Data Flow) |
| Async & State | Kotlin Coroutines, StateFlow, SharedFlow | 비동기 스레드 디스패칭 및 핫/콜드 스트림 |
| DI & Persistence | Hilt / Dagger, Room DB, Retrofit2 | 의존성 주입 및 오프라인 First 캐싱 |
- 위치:
src/main/java/com/dayainow/lab - 핵심:
presentation: Compose UI & ViewModel (UI State)domain: UseCases & Domain Entities (순수 코틀린 Business Logic)data: Repository Implementations & Room / Retrofit Data Sources
- 위치:
presentation/mvi - 핵심:
UserIntent➔ViewModelReducer➔UiState단방향 불변 상태(StateFlow) 갱신 및SharedFlow일회성 이벤트를 통한 화면 전환.
- 위치:
di/AppModule.kt - 핵심:
Dispatchers.IO비동기 네트워크/DB 처리와Dispatchers.MainUI 스레드 전환 및@HiltViewModel주입.
Q1. MVVM 대비 MVI 패턴 도입 시 얻는 상태 예측 가능성과 장점은?
분석: MVVM은 개별 LiveData/StateFlow 상태가 파편화되어 갱신 시 경합 조건(Race Condition)이 발생할 위험이 있습니다. MVI는 유저의 행동을
Intent로 일원화하고 전체 UI 상태를 단 하나의 불변UiState데이터 클래스로 관리하여 높은 예측 가능성과 단방향 흐름(UDF)을 보장합니다.
Q2. Kotlin Flow의 Cold Stream 대 Hot Stream (StateFlow / SharedFlow) 메커니즘 차이는?
분석: **Cold Stream(Flow)**은 수집가(
collect)가 구독하는 시점에 데이터를 발행하는 일대일 스트림입니다. **Hot Stream(StateFlow / SharedFlow)**은 수집 여부와 상관없이 메모리에서 값을 유지하며 다수의 수집가에게 브로드캐스트합니다. StateFlow는 최신 상태값 1개를 보관하고, SharedFlow는 Toast나 화면 이동 같은 일회성 이벤트(Single Event) 발행에 사용됩니다.
Q3. 안드로이드 생명주기 관리를 위한 `repeatOnLifecycle` 유틸리티의 메모리 누수 방지 원리는?
분석: 단순히
lifecycleScope.launch에서 Flow를 수집하면 앱이 백그라운드(STOPPED)로 전환되어도 계속 데이터를 수집하여 메모리 누수와 리소스 낭비가 발생합니다.repeatOnLifecycle(Lifecycle.State.STARTED)를 결합하면 UI가 표시될 때만 수집하고 백그라운드 시 동적으로 멈춰 안전합니다.
# 1. Android Gradle 빌드
./gradlew build
# 2. 유닛 테스트 실행
./gradlew test🎨 1. Frontend & Mobile Web Architecture (#frontend-architecture)
- b2b-mes-admin-lab: FSD Architecture, AG-Grid/Handsontable, MFE, BFF, State Studio
- frontend-performance-lab: Vite/Webpack, Canvas/SVG, RN WebView Bridge, PWA, App Store
- frontend-coding-interview-lab: FE 알고리즘 & 바닐라 JS/React 하드코딩
- frontend-security-lab: XSS/CSRF 방어, CSP, SameSite Cookie, CORS
⚡ 2. Fullstack & Backend Performance (#backend-performance)
- fullstack-reliability-lab: 멱등성, 낙관적 락, 지수 백오프 & 서킷 브레이커
- backend-performance-lab: FastAPI, Connection Pooling, Redis Cache, N+1 Query
🐳 3. Infrastructure & DevOps (#infra-devops)
- docker-infra-lab: Multi-stage Docker, Compose, Nginx Proxy, CI/CD
🧠 4. AI Engineering & Data Platform (#ai-data-platform)
- llm-rag-data-platform-lab: RAG, ChromaDB/FAISS Vector Store, AWS Bedrock
- ai-product-patterns-lab: SSE Streaming, AI Fallback Router, Rate Limiter
📱 5. Mobile Native Architecture (#mobile-native)
- android-architecture-lab: Clean Architecture, MVI, Compose, Coroutines/StateFlow