
백엔드
Kotlin과 JPA의 한계 극복: 빌링 시스템 고도화 과정
두줄요약
Kotlin과 JPA의 한계를 빌링 시스템 고도화 과정에서 정리하고 jOOQ와 JDBC로 전환한 사례를 소개했습니다. 복잡한 쿼리 표현력, 불변 객체 설계, 운영 안정성을 함께 개선했습니다.
핵심 내용
- Kotlin + Spring Boot 기반 빌링 시스템에서 JPA와 QueryDSL의 한계로 인한 고도화 경험 공유
- data class 와 JPA의 불일치, 복잡한 쿼리 표현력 부족, 유지보수 이슈, annotation processor 문제 등 기술적 부채 누적
- Kotlin 2.0, Java 21, Spring Boot 3.4, Spring Data JDBC, jOOQ로 스택을 업그레이드하고 복잡 쿼리와 불변 객체 중심 설계를 개선
구조와 흐름
- 검색·조회 기능부터 jOOQ로 우선 전환해 성능과 유지보수성 검증
- CRUD는 JPA에서 JDBC 기반 구현으로 단계적 교체
- aggregation 클래스로 응답 프로젝션을 분리해 DTO 중복 제거
적용해볼 점
- 복잡한 SQL과 성능 튜닝이 중요한 영역에서는 jOOQ 같은 SQL DSL 검토
- Kotlin 사용 시 불변 객체 중심 모델과 영속성 프레임워크의 궁합 점검
- 전면 교체보다 단계적 전환으로 위험도와 영향 범위 관리
