얼마 전에 KMP를 붙여보겠다고 iOS 모듈에 레트로핏(Retrofit) 인터페이스를 그대로 가져갔다가, 빌드가 통째로 깨지더라고요. 원인은 Proxy 의존성이었습니다. 레트로핏은 어노테이션 인터페이스를 java.lang.reflect.Proxy로 런타임에 구현체를 만들어내는데요. 이 리플렉션이 JVM에만 있다 보니, iOS 타깃에서는 그 자리에서 멈춰버립니다. "10년을 멀쩡히 썼는데 왜 갑자기"가 아니라, 레트로핏은 처음부터 안드로이드·JVM 위에서 살도록 만들어진 라이브러리라서 그래요. 그래서 케이토르(Ktor)로 갈아탈지 한참 따져봤습니다. 한참 들여다보고 나니, 갈아탈 진짜 기준은 성능이 아니더군요. 안드로이드 네트워킹 라이브러리 교체, 방아쇠는 성능이 아니었습니다마이그레이션을 고민하게 된 계기..