Kotlin Multiplatform Mobile (KMM)
KMM은 Android와 iOS 간의 비즈니스 로직을 Kotlin으로 공유할 수 있게 해주는 크로스 플랫폼 개발 기술
장점
1. 공통 로직 재사용
- 네트워크, 데이터, 비즈니스 로직을 한 번만 작성해 Android/iOS에서 재사용 가능.
- 유지보수 효율성 향상.
2. 네이티브 UI 유지
- Flutter나 React Native와 달리 각 플랫폼의 UI(SwiftUI, Compose)를 그대로 유지.
3. 성능 손실이 거의 없음
- Kotlin/Native로 컴파일되어 네이티브 바이너리로 동작.
4. Gradle + Kotlin 생태계 활용
- Ktor, SQLDelight, Koin 등 Android 생태계의 성숙한 라이브러리 사용 가능.
5. 협업 효율 향상
- Android/iOS 개발자가 공통 모듈을 함께 관리 가능.
단점
1. 빌드 환경 복잡
- Gradle + Xcode + Cocoapods 연동 설정이 필요.
2. 디버깅 어려움
- Swift에서 Kotlin 코드 디버깅이 제한적.
3. 러닝 커브
- Kotlin, Gradle, Coroutine 등 Android 생태계 학습 필요.
4. 빌드 시간 증가
- Kotlin/Native 빌드로 인해 빌드 속도 저하.
5. Swift ↔ Kotlin 타입 호환성 문제
List<T>
,nullable
,Flow<T>
등 변환 코드 필요.
다른 프레임워크와 비교
항목 | KMM | Flutter | React Native | Swift (Native) |
---|---|---|---|---|
UI 작성 | 네이티브 (Swift / Compose) | 자체 렌더링 (Dart) | 브릿지 (JS + Native) | 네이티브 |
퍼포먼스 | 🔥 매우 높음 | 보통 | 다소 낮음 | 최고 |
코드 공유율 | 60~80% | 90% 이상 | 80% 이상 | 0% |
디버깅 편의성 | ❌ 낮음 | 👍 높음 | 👍 높음 | 👍 최고 |
러닝 커브 | 🧠 중간 | 높음 | 중간 | 낮음 |
장점 | 로직 공유 + 네이티브 UI | 빠른 개발 | JS 생태계 | 완벽한 호환성 |
단점 | 설정 복잡 / 디버깅 어려움 | UI 제약 | 브릿지 성능 저하 | 코드 중복 |
요약
KMM은 “로직은 공유하되, UI는 네이티브로 간다”는 전략
- Flutter보다 안정적이고 Swift보다 효율적이라고한다.
- 단, 설정 복잡도와 디버깅 난이도는 감수!