비즈니스 로직 공유
iOS와 Android에서 재사용합니다
비즈니스 로직 공유은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
업무 로직을 공유하는 이유
사용자 인터페이스는 플랫폼마다 다르지만, 유효성 검사, 가격 책정, 데이터 흐름 같은 규칙은 동일합니다. 이를 commonMain에서 공유하면 중복과 버그를 줄일 수 있습니다.
공유 데이터 모델
도메인 모델을 공통 코드에서 한 번만 정의합니다. kotlinx.serialization을 사용하면 두 플랫폼에서 동일한 방식으로 직렬화할 수도 있습니다.
import kotlinx.serialization.Serializable
@Serializable
data class Product(val id: Int, val name: String, val price: Double)공유 사용 사례
순수한 업무 규칙은 공통 코드에 작성하며 플랫폼 API가 필요하지 않습니다.
class CartTotal {
fun total(items: List<Product>): Double =
items.sumOf { it.price }
}Ktor를 사용한 공유 네트워킹
Ktor 클라이언트는 다중 플랫폼을 지원합니다. API 계층을 한 번 작성하고 각 플랫폼에서 HTTP 엔진을 제공합니다.
import io.ktor.client.HttpClient
class Api(private val client: HttpClient) {
// suspend fun products(): List<Product> = client.get(...)
}공유 코루틴
코루틴은 공통 코드에서 작동하므로 비동기 저장소도 공유할 수 있습니다. 일시 중단 함수는 두 플랫폼에 모두 노출됩니다.
class Repository(private val api: Api) {
suspend fun load(): List<Product> = api.products()
}Repository 패턴
일반적인 패턴은 다음과 같습니다. Repository가 네트워크와 캐시를 조정하고 깔끔한 메서드를 제공합니다. 두 앱이 동일한 저장소를 호출합니다.
공유 ViewModels
Decompose와 같은 라이브러리 또는 공유 ViewModel을 사용하면 프레젠테이션 로직과 상태도 공유할 수 있어 렌더링만 플랫폼별로 남길 수 있습니다.
Flow로 상태 노출
StateFlow로 상태를 노출하면 안드로이드에서는 직접 수집하고 iOS에서는 래퍼를 통해 관찰할 수 있습니다.
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
class ProductState {
private val _items = MutableStateFlow<List<Product>>(emptyList())
val items: StateFlow<List<Product>> = _items
}일시 중단 함수와 iOS
코틀린의 일시 중단 함수는 Swift에서 완료 처리기 방식 또는 비동기 메서드로 노출됩니다. iOS에서는 Swift의 async/await를 사용하여 호출합니다.
// Swift
// let products = try await repository.load()공유 코드에서 UI 제외
UI를 공유하려는 시도는 피하세요. 로직은 공유하되 렌더링은 플랫폼별로 처리하면 중복된 규칙을 없애면서도 최상의 사용자 경험을 얻을 수 있습니다.
실행 가능한 로직 예시
공유 사용 사례는 순수한 코틀린으로 작성됩니다. 다음은 장바구니 합계를 계산하기 위해 독립적으로 실행되는 예입니다.
data class Product(val name: String, val price: Double)
fun total(items: List<Product>): Double = items.sumOf { it.price }
fun main() {
val cart = listOf(Product("Pen", 2.5), Product("Book", 12.0))
println("Total: " + total(cart))
}빠른 확인
구조가 잘 설계된 KMM 앱에서 공유하기에 가장 적합한 항목과 플랫폼별로 유지해야 하는 항목은 무엇입니까?
복습
로직 계층을 공유할 수 있습니다:
- 모델, 사용 사례, 저장소, Ktor 네트워킹, 코루틴
StateFlow를 통해 상태를 노출하고, iOS에서는 일시 중단 함수에 async/await 사용- 사용자 인터페이스와 탐색은 플랫폼별로 유지
다음: 플랫폼 API에 접근하기
자주 묻는 질문
“비즈니스 로직 공유” 강의는 무료인가요?
네 — “비즈니스 로직 공유” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“비즈니스 로직 공유”에서 뭘 배우나요?
iOS와 Android에서 재사용합니다 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“비즈니스 로직 공유” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- KMM 프로젝트 구조
- expect와 actual
- 비즈니스 로직 공유
- 플랫폼 API