최근 안드로이드 개발자들 사이에서 많이 언급되는 것들이 있죠.
바로 KMP(Kotlin Multiplatform)와 CMP(Compose Multiplatform)라는, 코틀린 기반 두 가지 멀티플랫폼 전략입니다.
오늘은 이 두 기술의 정의, 주요 특징, 그리고 실제로 둘을 조합해서 얻을 수 있는 이점과 차이점까지 가볍게 살펴볼게요.
1. CMP(Compose Multiplatform)란?
CMP는 JetBrains와 Google이 협업하여 만든 UI 프레임워크인 Jetpack Compose를 여러 플랫폼에서 사용할 수 있도록 확장한 프레임워크입니다. Compose는 다들 알고 계셨던 것처럼 원래 안드로이드의 선언형 UI 프레임워크였으나, JetBrains의 Compose Multiplatform 공식 문서에 따르면 이제는 Android, 데스크탑, Web, iOS까지 폭넓게 지원합니다.
🔎 정의
- 코틀린 언어로 다양한 플랫폼의 UI를 하나의 코드로 작성할 수 있게 해주는 선언형 UI 프레임워크
- 안드로이드뿐 아니라 데스크탑, 웹, iOS에서도 Compose 코드를 재사용 가능
- 각 플랫폼에 맞는 네이티브 요소를 Compose로 추상화하여, 최대한 일관된 UI/UX 개발이 가능
🔎🔎 주요 특징
- 선언형 UI: XML이 아니라 코틀린 코드로 UI를 설계
- 재사용성: 대부분의 UI 코드를 여러 플랫폼에서 재사용
- 플러그인 아키텍처: Android Studio, IntelliJ 등에서 강력한 개발 환경 지원
- 빠른 프리뷰: 코드 변경 즉시 UI 프리뷰 가능
- 풍부한 커뮤니티와 레퍼런스: JetBrains, Google의 공식 지원, 점점 확장되는 예시 코드와 라이브러리
👉 한 마디로,
기존에는 안드로이드, iOS, 웹 각각의 프레임워크로 따로 개발을 진행해야해서 개발자들을 플랫폼별로 각각 모두 구해야했다면, 이제는 안드로이드(코틀린과 Compose 사용 가능한) 개발자만 구해도 다양한 플랫폼의 앱 UI 개발이 가능하다는 뜻이죠.

2. KMP(Kotlin Multiplatform)란?
KMP는 JetBrains가 개발한 기술로, Kotlin 언어로 작성한 공통 코드(비즈니스 로직, 데이터 처리 등)를 안드로이드, iOS, 웹 등 다양한 플랫폼에서 동작할 수 있게 하는 크로스플랫폼 개발 솔루션입니다.
🔎 정의
- Kotlin 언어로 여러 플랫폼에서 공통적으로 쓸 수 있는 로직을 작성하게 해주는 프레임워크
- 앱의 코어(도메인, 네트워크, 데이터 저장, 모델 등)를 공통 코틀린 코드로 작성, 각 플랫폼별로 네이티브 코드와 연동
🔎🔎 주요 특징
- 공통 코드와 플랫폼별 코드 분리
공통 모듈(shared module)과 플랫폼별 모듈(안드로이드, iOS, 웹 등)을 명확히 분리
- 플랫폼 특화 기능 연동
ex) 안드로이드의 Room, iOS의 CoreData 등 플랫폼 고유 API도 필요할 때 연동 가능
- 생산성 극대화
중복 코드 최소화, 로직 재사용성 대폭 증가
- Gradle 기반 통합 빌드
Android Studio, IntelliJ에서 쉽게 멀티플랫폼 프로젝트 구성
- 점진적 도입
기존 프로젝트에 부분적으로 적용하는 것도 가능
👉 한 마디로,
예전에는 플랫폼별로 각각 비즈니스 로직과 데이터 처리를 따로 구현해야 했지만, 이제는 코틀린 하나로 핵심 로직을 모두 공유할 수 있어서,
안드로이드, iOS, 웹 개발을 훨씬 효율적이고 일관성 있게 진행할 수 있게 되었다는거죠.

3. CMP와 KMP의 조합
최근 JetBrains, Google, 그리고 글로벌 개발자 커뮤니티는 CMP와 KMP의 조합이 크래스플랫폼 개발의 '가장 이상적인 해법' 중 하나라고 합니다.
🔎 조합 구조
- KMP: 데이터, 비즈니스 등 핵심 로직을 Kotlin으로 공통 작성
- CMP: 각 플랫폼의 UI까지 Compose 코드로 공통화
- 플랫폼별 Entry Point: 앱 시작점 및 특화 기능만 각 플랫폼 코드로 작성
🔎🔎 실제 구조 예시
[공통 모듈(shared) - Kotlin]
│
├── 비즈니스 로직
├── 데이터 모델/Repository
└── Compose Multiplatform UI
│
├── Android 앱 (최소한의 네이티브 코드)
├── iOS 앱 (최소한의 Swift/Objective-C 코드)
├── Desktop 앱 (최소한의 JVM 네이티브 코드)
└── Web 앱 (최소한의 JS 코드)
4. CMP와 KMP의 차이점
| 구분 | CMP(Compose Multiplatform) | KMP(Kotlin Multiplatform) |
| 주요 영역 | UI (화면 구성) | 비즈니스 로직, 데이터 등 |
| 공식 문서 | Compose 공식 | Kotlin 공식 |
| 주요 언어 | Kotlin (Compose DSL) | Kotlin |
| 재사용 범위 | UI(Compose 기반) | 로직(네트워크, 데이터, 모델) |
| 플랫폼 | Android, iOS, Web, Desktop | Android, iOS, Web, Desktop |
| 주요 이점 | 선언형 UI, 빠른 UI 개발 | 코드 중복 최소화, 유지보수 |
| 실제 사용법 | UI 레이어에서 공통 코드 작성 | 비즈니스/데이터 로직 공통화 |
👉 한 마디로,
CMP는 UI, KMP는 핵심 로직을 kotlin 언어로 다양한 플랫폼의 전체 어플리케이션을 개발 할 수 있다 ~
5. 결론
🔎 언제 CMP & KMP를 쓰면 좋을까?
- Kotlin을 기반으로 전체 어플리케이션을 관리하고 싶은 경우
- 팀 내 안드로이드, iOS, 웹, 데스크탑 개발자가 분리되어 있지만, 공통 로직과 UI를 최대한 공유하고 싶은 경우
- 유지보수성, 코드 일관성을 중시하는 경우
- 빠르게 여러 플랫폼에서 MVP를 만들고 싶은 경우
🔎 🔎 전망
CMP와 KMP의 조합은 단순한 '크로스플랫폼 대안'을 넘어서 실제로 실무에서 적용할 수 있고, 미래에 더 강력해질 기술로 각광받고 있습니다. 심지어 이번 드로이드나이츠 2025에서 여러 번 언급되고, 직접 다루는 걸 보면 지나쳐갈 기술은 아니라는 것을 알 수 있어요.

JetBrains, Google의 적극적 지원, 그리고 오픈소스 생태계의 확장으로 곧 더 많은 서비스와 앱이 이 조합을 도입할 것 같네요.
이제 이것들이 뭔지 정확히 알아냈으니, 앞으로는 .. 실제 실습 및 학습 글로 찾아오겠습니다 ... !
참고 자료(공식 문서)
'🤖안드로이드🤖' 카테고리의 다른 글
| [안드로이드] 프로젝트 구조 뜯어보기 - Android SDK에 대하여 (5) | 2025.08.19 |
|---|---|
| [안드로이드] WindowInsets 조정하기 (2) | 2025.08.10 |
| [안드로이드] 카카오 로그인 세팅, 구현법 (7) | 2025.08.01 |
| [안드로이드] ktlint와 GitHub Actions로 Android 코드 스타일 자동화하기 (0) | 2025.05.23 |
| [안드로이드] 빈혈 도메인 모델과 쓸모없는 유스케이스, 그리고 비대한 뷰모델 (0) | 2025.05.11 |