백엔드·
stackoverflow-blog·
Compile-Time Map and Compile-Time Mutable Variable with C++26 Reflection
#cpp#reflection#metaprogramming+1
문제통합 테스트만으로는 Hibernate Lazy Loading, Flush, TransactionalEventListener 같은 실제 운영 동작을 못 잡아내 배포 후에야 버그가 드러났다.
접근내장 서버로 실제 환경을 재현하고 외부 API는 MockServer로 HTTP 레벨에서 모킹했다. 테스트 헬퍼와 OpenEntityManager Aspect로 데이터·세션 문제를 정리하고 Kotest의 Eventually로 비동기 검증을 도입했다.
결과기존 통합 테스트 코드를 전부 제거하고 기능 테스트만으로 전체 기능을 검증하는 체계를 갖췄고 단위 테스트와 역할 분담도 명확해졌다.
문제Spring Data JDBC 의 Composite ID 적용을 위해 Spring Boot 3.5 → 4.0.1 업그레이드 시 Spring Batch, Kotlin, Jackson 등 전체 스택 메이저 전환 필요.
접근Spring Boot 4 / Spring Batch 6 / Spring Framework 7 / Kotlin 2.3 / Jackson 3 / Kotest 6 / Gradle 9 / ojdbc11 순차 업그레이드. Composite ID 는 Persistable 인터페이스로 구현, JdbcDefaultBatchConfiguration 상속으로 메타데이터 저장.
결과기술 부채 해결 + 장기 유지보수성 개선. 운영 DB 접근 정책 충돌을 사전 식별해 안정적 배포 달성.