Skip to content

[BE] 트랜잭션은 쿼리문만 다루지, 스토리지는 신경 쓰지 않아요

Kyungmi, Park edited this page Apr 4, 2024 · 4 revisions

이슈

배경

  • 클라이언트 측에서 게시글/타임라인/유저 정보 수정 시 변경된 내용만 파악하여 전달해주기에 에너지가 많이 든다고 말씀하심!
    • 따라서 update용 메서드는 부분만 수정하는 PATCH가 아니라, 전체 필드를 받아들이는 PUT으로 결정!
  • 이 때문에 크나큰 이슈가 발생하는데…

트랜잭션 적용

  • 예를 들어 타임라인 수정 작업에는
    • 실제 id에 해당하는 타임라인 유무 확인을 위한 SELECT 작업
    • 타임라인 UPDATE 작업
    • 게시글 썸네일 UPDATE 작업
  • 총 3가지 DB 작업이 필요하므로, 무결성 유지를 위해 트랜잭션이 필요함

그러나...

  • 당연히 오브젝트 스토리지에는 트랜잭션 적용 안 됨!
  • 만약 사진을 오브젝트에 스토리지에 저장하고, 새로운 이미지 경로로 타임라인을 update한 다음에, 게시글의 썸네일을 update 과정에서 에러가 난다면
    • 타임라인에서 경로가 udpate 됐던 쿼리문은 취소가 되지만
    • 오브젝트 스토리지에는 이미 기존 이미지가 삭제되고, 새로운 이미지가 업로드된 채로 복구되지 않음,,,^^;;

해결 방법

https://github.com/boostcampwm2023/iOS07-traveline/pull/392

참고해주세영... (나중에 정리하겠스빈다..)

Clone this wiki locally