백엔드·
stackoverflow-blog·
Compile-Time Map and Compile-Time Mutable Variable with C++26 Reflection
#cpp#reflection#metaprogramming+1
문제ZIO 기반 애플리케이션을 프로덕션에 올렸을 때 기본 설정만으로는 충분한 성능을 내기 어렵고, 어떤 옵션이 병목으로 작용하는지 가늠하기 까다롭다.
접근런타임 플래그에서 `FiberRoots`를 끄고 `RuntimeMetrics`로 측정 지표를 확보한다. `withParallelism`으로 fiber 수를 제한하고, executor의 자동 블로킹과 `EagerShiftBack` 플래그를 다듬어 블로킹 작업 뒤 기본 executor로 복귀시킨다.
결과극단적인 케이스에서 `FiberRoots` 비활성화만으로 약 2.5배의 처리량 개선을 얻었고, 리소스 낭비를 줄여 운영 환경의 성능 저하를 막을 수 있었다.
문제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 접근 정책 충돌을 사전 식별해 안정적 배포 달성.