Java야…, 우리 그만 헤어져. Kotlin으로 환승연애
두줄요약
Java 기반 레거시 포인트 시스템을 Kotlin으로 전환한 과정과 기준을 정리했습니다. 테스트 강화와 점진적 배포로 안정성과 코드 품질을 함께 높였습니다.
문제 상황
- 2018년부터 운영된 Java 기반 포인트 시스템의 코드베이스 비대화와 유지보수 난이도 증가
- 다른 시스템과의 언어 불일치로 인한 문맥 전환 비용, 리뷰 시간, 테스트 품질 편차
원인 분석
- 오래된 레거시 코드로 인한 의도 파악 어려움과 반복되는 유지보수 이슈
- Java 중심 운영에서 비롯된 불필요한 코드 복잡도와 언어 통일 부재
해결 방법
- 시스템 전체를 Kotlin으로 전환하고, 테스트 코드부터 먼저 Kotlin화하여 안전성 확보
- Kotest와 MockK로 테스트 스타일과 목킹 도구를 통일하고, DTO는 data class로 정비
- Null 처리, Optional, Stream API, Lombok, 확장 함수, QueryDSL DTO 매핑, Jackson 역직렬화, 예외/트랜잭션 처리까지 전환 기준을 수립
성능/운영 포인트
- 약 45,000줄 수정, Code Smell 330개에서 4개로 감소, 테스트 커버리지 61.5%에서 76.7%로 증가
- 기능 단위의 점진적 배포와 QA로 10번의 운영 배포 동안 장애 없이 전환
- Git 히스토리 보존, Lombok 플러그인 설정 등 이행 과정의 운영 이슈 대응




