음악 서비스 벅스가 5년 넘게 자바로 쌓인 22만 라인 규모의 4.0 코드베이스를 Kotlin과 Jetpack 기반으로 전면 개편한 과정을 세 명의 안드로이드 개발자가 나눠 발표한다. 언어 전환에서 시작해 데이터 바인딩, 뷰모델·라이프사이클, 페이징, 미디어 재생 구조까지 실제 개편 순서를 따라간다.
핵심 포인트- Java→Kotlin 전환으로 널 안정성과 보일러플레이트 감소를 얻고, 자동 변환 툴과 데이터 클래스 등으로 22만 라인 레거시를 정리
- **데이터 바인딩** 도입 후 겪은 프레임 드랍·화면 깜박임을 `executePendingBindings`와 LifecycleOwner 등록, Visibility 기본값 설정으로 해결
- **Jetpack Paging**과 MVVM 뷰모델, `AAC ViewModel`·프로세스 라이프사이클로 화면 회전·백그라운드 상태 관리를 단순화
- 재생 구조를 **MediaSession/MediaBrowserService** 중심으로 재정비해 클라이언트 파편화 대응과 락스크린·알림 처리를 일원화
왜 읽나오래된 대형 안드로이드 앱을 Kotlin과 Jetpack으로 옮길 때 실제로 부딪히는 함정과 해결책을 단계별로 확인할 수 있다.