핵심 요약
인프랩은 Java로 엔티티를 선언하고 Kotlin으로 비즈니스 로직을 작성하는 멀티 모듈 구성을 도입해 Spring Boot & JPA의 언어 혼합 이점을 활용했습니다.
주요 경험
- core 모듈에 Java 엔티티, 외부 모듈에 Kotlin을 배치하며 Lombok 어노테이션 프로세싱 순서 문제를 겪었고, 실험적 Lombok 플러그인 도입은 보류했습니다.
- Kotlin과 Java 간 Null 안전성 이슈를 커스텀 NonNull/Nullable 애노테이션과 ArchUnit으로 관리했습니다.
- JPA에 맞춰 엔티티는 Java, 로직은 Kotlin으로 분리하는 구조를 채택했고, 내부 프로퍼티의 접근 제어와 변경 감지 문제를 다뤘습니다.
얻은 인사이트
- 서로 다른 언어의 강점을 살리되, 엔티티 관리 및 쿼리 구성은 일관성 규칙이 필요합니다.
- Platform Type 이슈를 명시적 널 처리로 줄이고 팀 러닝 커브를 낮출 수 있습니다.

