Replies: 2 comments
-
현재 저희 리뷰 도메인은 가게 도메인에 대한 의존성을 가지고 있습니다. 그렇기에 DB에 존재하지 않았던 가게가 요청으로 들어온 경우 생성하고 조회해서 가게를 참조하도록 해야하고, DB에 존재하는 가게가 요청으로 들어온 경우 조회해서 가게를 참조하도록 해야합니다. 리뷰는 최종적으로 가게만 조회되면 되기에 가게의 생성에 대해서는 트랜잭션을 분리해서 리뷰 작성이 실패해도 롤백되지 않도록 하는 전략이 좋아보이네요 👍 가게 생성 로직을 이벤트로 분리한다고 한다면 해당 이벤트가 끝난 후 가게 조회가 발생해야할 것 같아요. 따라서 동기적으로 로직이 수행되어야 하기에 비동기 이벤트는 사용하지 못할 것 같다는 생각이 들어요 🤔 사진과 리뷰는 하나의 원자성을 지켜야할 것 같다는 생각이 들어요. 리뷰는 성공적으로 저장되었지만, 사진이 저장되지 않았을 경우와 사진은 성공적으로 저장되었지만, 리뷰는 저장되지 않았을 경우는 예외 상황으로 롤백이 발생해야하는 상황이기 때문이에요. 따라서 저의 결론은 아래와 같습니다! |
Beta Was this translation helpful? Give feedback.
-
좋습니다 ㅎㅎ 저도 동의합니다.
사진은 성공적으로 저장되었지만, 리뷰는 저장되지 않았을 경우는, 사진(이미지 파일이 아닌, |
Beta Was this translation helpful? Give feedback.
-
현재 리뷰를 작성하는 메서드의 동작 과정은 다음과 같습니다.
1 ~ 4의 과정이 하나의 Transactional로 이루어져 있습니다.
즉, 리뷰 생성 한 로직 단위의 트랜잭션이 길어질 수 있다는 단점이 떠오릅니다 !
지금 드는 생각은 가게 생성, 리뷰 생성, 사진 업로드 및 사진 저장을 스프링 이벤트를 사용해서 개선해볼 수 있을 것 같다는 생각이 들어요.
가게 생성의 경우 리뷰 생성과정과 원자성을 꼭 지켜야 한다고 하면, 이 둘은 하나의 트랜잭션으로 가져야 할 것 같구요 !
또 다른 방법이 있다면 제시해주시면 감사하겠습니다 :)
(다만 현재 기능 개발의 우선 순위가 높기 때문에, 개선은 차후에 적용하는게 좋을 것 같아요 😀)
Beta Was this translation helpful? Give feedback.
All reactions