0Pricing
Kotlin Academy · 강의

비즈니스 로직 공유

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. KMM 프로젝트 구조
  2. expect와 actual
  3. 비즈니스 로직 공유
  4. 플랫폼 API
← Kotlin Academy(으)로 돌아가기