유저 회원가입 API에서는 이미지 업로드가 포함되어 있습니다. 이미지는 멀티파트 파일로 전송되어서 s3에 업로드되고 해당 url을 데이터베이스에 저장하고 클라이언트 에서 url를 받아서 로딩하는 방식으로 이미지를 확인할 수 있습니다. 여기서, 이미지 데이터 롤백과 관련해서 문제가 발생했습니다. 문제상황은 다음과 같습니다.
회원가입 요청
비밀번호 인코딩
s3에 이미지 업로드
이미지 도메인 서비스로부터 받은 s3 이미지 url을 엔티티에 저장
JPA 유저 저장소에 저장하는 도중 예외 발생
RDBMS 데이터 롤백
업로드 된 S3이미지는 롤백되지 않고 사용되지 않은 채로 그대로 남게됨
문제를 정리하면 다음과 같습니다.
JPA 레포지토리를 사용하는 유저데이터는 @Transactional 이 붙은 메서드에서 예외가 발생하면 알아서 롤백됨