사이드 프로젝트로 레시피 서비스를 만들면서, 이런 요구사항이 생겼다.“회원가입이 완료되면, 이 유저에게 냉장고를 하나 자동으로 만들어 붙여주자.” 도메인적으로는 꽤 자연스러운 흐름인데, 트랜잭션을 생각하기 시작하니까 조금 복잡해진다.냉장고 생성은 부가 기능이다.냉장고 생성이 실패했다고 해서 회원가입까지 롤백되면 안 된다.하지만 회원가입과 냉장고 생성은 연쇄적으로 일어나야 한다.그래서 선택한 게 Spring 이벤트(@TransactionalEventListener) + AFTER_COMMIT + 별도 트랜잭션 조합이었다.구현까진 잘 됐는데, 문제는 그다음이었다.“이걸 테스트하려고 하니까, JPA 슬라이스 테스트, H2, AFTER_COMMIT, 트랜잭션이 서로 싸우기 시작했다…” 이 글은 내가 실제로 겪었..