출시를 세 달 앞두고 크로스플랫폼 클라이언트 개발자가 이탈한 위기에서, Kotlin Multiplatform으로 Android·iOS의 비즈니스 로직을 공유해 일정을 지킨 사례다. 데이터·도메인만 공유하던 첫 설계의 결합·타입 문제를 거쳐 어디까지 공유해야 생산성이 나오는지를 실측으로 보여준다.
핵심 포인트- 11개월 일정 중 세 달 남고 Flutter 담당자가 이탈, 백엔드는 거의 끝났으나 클라이언트는 미착수 상태에서, Android 네이티브 즉시 착수+iOS 채용에 방해되지 않으면서 합류 시 생산성을 높일 수단으로 당시 알파였던 KMP를 작은 화면부터 검증
- 데이터·도메인만 공유한 첫 시도는 iOS가 각 유스케이스 입출력을 알아야 해 결합도가 높고 중첩 제네릭·sealed class 호환 문제가 생겨, 뷰 모델까지 공유하고 단방향 데이터 흐름으로 State·Action만 노출하는 Store로 로직을 캡슐화
- 출시 후 Xcode 빌드에 공유 모듈이 포함돼 약 10분 오버헤드가 생기자 iOS 저장소를 분리하고 공유 모듈을 CocoaPods로 배포, 테스트·로그 보강으로 디버깅 위험 완화
- 화면 기준 Store 문서로 클라이언트가 UI 구현에 집중하고 중복이 줄었으나, 낯선 Kotlin 타입·어려운 디버깅·작성자 의존·메모리 모델 러닝 커브가 단점으로 남음
왜 읽나인력 위기 속 Android·iOS 로직 공유를 검토하는 팀에게, 공유 범위를 Store까지 넓힌 설계와 빌드·저장소 후속 문제, 그리고 팀 조건별 채택 판단까지 담은 실전 사례.