홈으로 돌아가기

AI 에이전트를 위한 KMP: 4개 플랫폼 경험

이 기사는 4개 플랫폼을 위한 Kotlin Multiplatform에서 AI 에이전트 제작 경험을 설명합니다. macOS 릴리스 문제, 의존성 충돌, 커스텀 그래프 구현 장점 식별. 중/시니어 개발자를 위한 테스트 및 라이브러리 선택 추천.

KMP에서의 AI 에이전트: 코드부터 4개 플랫폼 릴리스까지
Advertisement 728x90

Kotlin Multiplatform으로 AI 에이전트 개발: 장단점과 릴리스 함정

6개월 동안 Kotlin Multiplatform(KMP)으로 두 개의 앱을 개발하며 얻은 핵심 인사이트: Android, iOS, 웹, 데스크톱, 백엔드에서 코드 재사용. 공유 에이전트 코드는 koog, mcp-sdk, cactus 같은 라이브러리와 연동해 로컬 모델을 활용. 실전 경험에서 JVM 생태계의 강력함과 플랫폼별 장애물 사이 균형이 드러났다.

KMP의 주요 장점

KMP는 에이전트 비즈니스 로직을 중앙화해 중복을 대폭 줄인다. JVM 생태계는 LLM 제공자 SDK를 풍부하게 지원하고, Compose Multiplatform은 핫 리로드로 UI 개발을 간편하게 한다. 네이티브 Android 빌드는 Skia를 통해 iOS를 지원하나, 데스크톱은 JAR 래퍼에 의존한다.

주요 이점:

Google AdInline article slot
  • 4개 이상 타겟에서 플랫폼 독립 코드 재사용.
  • 에이전트와 모델을 위한 풍부한 JVM 생태계.
  • 안정적 Kotlin과 하위 호환성.
  • 최소 UI 결함의 Compose.

명확한 한계

멀티플랫폼 지원은 플랫폼별 코드에 expect/actual을 요구한다. 데스크톱 앱은 JVM과 Swing 의존으로 크기가 불어났고, 웹은 베타 단계라 라이브러리 버그와 SEO 문제가 있다. iOS 디버깅은 기본적이고, Swift 상호운용성은 JVM에 뒤처진다. 데스크톱 UI는 종종 브랜드와 어울리지 않는다.

숨겨진 개발 도전 과제

macOS 릴리스 빌드는 몇 주 걸린다: 앱 ID 2개(JRE와 앱), 서명 키 3개, 앱스토어/DMG용 별도 설정에 공증(반복당 15분 이상). 네이티브 라이브러리는 JAR에 리소스 임베드 전에 서명, ProGuard 제외, Catalina 호환(사용자 63%) 문제를 일으킨다. TestFlight는 JDK 18+ 필요, aarch64/x86_64 별도 빌드.

전형적 릴리스 단계:

Google AdInline article slot
  • 스토어와 직접 배포용 키 생성.
  • JAR에 네이티브 리소스 임베드.
  • ProGuard 난독화 처리.
  • 공증과 디버깅(5회 이상 반복).
  • 구형 macOS 테스트.

KMP 시니어 전문가 부족: 채용 시장은 단일 플랫폼 개발자를 선호. 플랫폼별 작업(iOS 정부 인증 vs Android)은 깊은 전문성 요구. LLM은 엣지 케이스에 약하다.

라이브러리 충돌과 과잉 설계

kotlinx-datetime 같은 알파 라이브러리는 버전 충돌 유발: 9월부터 koog가 호환 안 되는 의존성 끌어옴. 웹은 Dispatchers.IO 없어 공유 코드에 브랜치 필요. Android/데스크톱/백엔드용 JVM 로직 오프로드는 컴파일 시간 늘리지만 리플렉션 중복.

현명한 선택:

Google AdInline article slot
  • JVM 공유 코드: 리플렉션 타협.
  • 로거: logback과 합리적 기본값 균형.
  • 테스트: Android 컨텍스트 목, 데스크톱으로 속도 향상.

Xcode는 고통 증폭: 느린 시작, 지연된 자동완성, 무작위 크래시. Stack Overflow 2025 개발자 중 6.1%만 견딜 의향.

프레임워크 없이 AI 에이전트 구축

langchain4j(비대, 구식)와 koog(알파, simpleOpenAIExecutor 같은 과잉 의존) 포기. 커스텀 구현: 전이 콜백 노드 그래프, 분류, RAG, 오류 처리. 승리: 완전 제어, 최소 의존, OpenTelemetry 비대함 없음.

에이전트 그래프는 디버깅 시각화, 상태 머신 지속성은 수동 구축으로 탄력성 확보. 플랫폼 목으로 공유 코드 테스트 타겟팅.

에이전트 코드 테스트

iOS/Android에서 컨텍스트 목으로 테스트 실행. 데스크톱은 CI 속도 향상. 문제: 긴 컴파일, 플랫폼 의존 Dispatchers. 모범 사례: JVM 단위 테스트, 플랫폼별 통합 테스트.

핵심 요약:

  • macOS 릴리스는 키, 공증, ProGuard로 몇 주 소요.
  • 알파 라이브러리 버전 충돌(kotlinx-datetime)이 빌드 깨뜨림.
  • 니치 LLM(GigaChat 등)에 커스텀 에이전트가 프레임워크 압도.
  • KMP 시니어 희귀; 플랫폼 스킬 필수.
  • Xcode는 iOS 개발 병목.

전체 평가: JVM 백엔드 AI 에이전트에 KMP는 보상 크지만, 릴리스와 iOS/웹은 전문성 필수.

— Editorial Team

Advertisement 728x90

다음 읽기