🤖안드로이드🤖

[안드로이드] CMP/KMP 톺아보기🔎

bbooyaaa 2025. 6. 7. 01:03

최근 안드로이드 개발자들 사이에서 많이 언급되는 것들이 있죠.

바로 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의 적극적 지원, 그리고 오픈소스 생태계의 확장으로 곧 더 많은 서비스와 앱이 이 조합을 도입할 것 같네요.

이제 이것들이 뭔지 정확히 알아냈으니, 앞으로는 .. 실제 실습 및 학습 글로 찾아오겠습니다 ... !

 


참고 자료(공식 문서)