

KMP/CMP 마이그레이션, 정말 프로덕션에서 가능할까? - 키친보드 앱 마이그레이션 도전기
KMP/CMP 마이그레이션에서 Compose Navigation의 WebView 상태 유실 문제를 커스텀 네비게이션으로 해결했습니다. FragmentManager와 UINavigationController로 상태 유지와 결과 전달을 구현하며 프로덕션 적용 가능성을 확보했습니다.
새로운 기술 블로그가 추가되었어요


KMP/CMP 마이그레이션에서 Compose Navigation의 WebView 상태 유실 문제를 커스텀 네비게이션으로 해결했습니다. FragmentManager와 UINavigationController로 상태 유지와 결과 전달을 구현하며 프로덕션 적용 가능성을 확보했습니다.

오프라인 매장의 종이라벨을 전자라벨로 전환하며 메시지 기반 데이터 파이프라인을 구축했습니다. 비동기 동기화와 중앙 관제로 운영 효율과 데이터 일관성을 높였습니다.
기존 모바일 지도 SDK의 성능 한계와 플랫폼별 중복 구조를 해결하기 위해 재설계를 진행했습니다. C++ 공통 코어와 그래픽 추상화, 스트리밍 파이프라인으로 성능과 확장성을 개선했습니다.
정산 도메인의 특성에 맞춰 이벤트 처리와 배치 처리를 분리한 하이브리드 구조를 설명했습니다. Kafka, Spring Batch, Argo Workflow로 실패와 재처리를 전제로 한 정산 시스템을 구현했습니다.

함수 간 암묵적 의존성이 있으면 리팩터링 시 오류가 생기기 쉽다고 설명했습니다.\n유효성 검사와 변환 로직을 하나로 묶어 일관성을 보장하는 방법을 제안했습니다.

FCFS 기반 제휴 상품 연동의 한계를 보완하기 위해 SoAP 점수 체계를 도입했습니다. 주요 상품의 우선순위를 높여 연동 속도와 운영 효율을 개선했습니다.

로컬과 원격 데이터를 동기화하는 코드에서 의존성이 복잡해지는 문제를 다뤘습니다. 중간 데이터 구조를 먼저 설계해 추가·업데이트·삭제 흐름을 단순화하는 방법을 소개했습니다.

대출 심사 로직의 복잡도를 줄이기 위해 Pipeline, Job, Store 구조를 적용한 사례를 소개했습니다. 정책 변경과 테스트를 더 쉽게 만들기 위한 설계 고민을 정리했습니다.
이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
당근은 사용자 행동 로그가 커지며 코드 기반 스키마 관리의 한계를 겪었습니다. 이벤트센터를 만들어 전사 공통 규칙과 UI 기반 자동화로 로그 관리 효율을 높였습니다.

상속 가능한 불변 클래스는 자식 클래스에서 불변성을 깨뜨릴 수 있어 주의가 필요했습니다. 불변성을 보장하려면 상속을 막고 읽기 전용 공통 타입을 사용하는 방식이 안전했습니다.

의존성 주입은 모든 곳에 적용할수록 좋은 것이 아니라 목적이 분명할 때만 쓰는 것이 중요하다고 설명했습니다. 단순 유틸리티나 모델은 내부 생성으로 단순화하고, 주입은 라이프사이클 관리나 구현 전환에 한정할 것을 제안했습니다.

지도보기 API의 병목이던 표준 상품 API 호출을 동적 window 분할과 Coroutine Async로 병렬화했습니다. 그 결과 응답 시간을 8~10초에서 약 2초로 줄이고 TPS도 크게 개선했습니다.

숙박 전시 도메인의 복잡한 노출 로직을 Kotlin DSL로 표현한 적용 사례를 소개했습니다. 가독성은 좋아졌지만 내부 구현 복잡도와 팀의 러닝 커브가 커지는 트레이드오프도 있었습니다.

PLP 최저가 계산에서 모든 객실을 끝까지 계산하던 방식을 가지치기로 줄인 사례를 소개했습니다. 계산량은 크게 줄었지만 실제 성능 개선은 DB 조회 비용 때문에 제한적이었습니다.