Kotlin+Spring Boot 프로젝트에서 코루틴과 트랜잭션 충돌 문제를 파악하고 해결한 과정을 정리한 결
사이드 프로젝트에서 Kotlin + Spring Boot 조합으로 REST API 서버를 처음 만들어봤습니다. 가장 도전적인 부분은 코루틴 기반 비동기 처리와 Spring의 Servlet 모델을 결합할 때 발생하는 스레드 컨텍스트 문제였습니다. @Transactional 안에서 코루틴을 쓰다가 트랜잭션이 롤백되지 않는 버그를 만났고, 코루틴이 다른 스레드에서 재개될 때 트랜잭션 컨텍스트가 끊기는 원인을 찾았습니다. 적합한 디스패처로 교체하고 트랜잭션 전파 설정을 명시적으로 지정해 해결했습니다. 이 과정에서 Kotlin 코루틴의 컨텍스트 전파 메커니즘을 깊이 이해하게 됐고, JVM 스레드 모델과의 경계를 의식하며 설계하는 습관이 생겼습니다.