You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
현재 complete 및 validateComplete 관련 검증 로직과 paymentClient를 통핸 confirm 요청이 결합되어 있어, 정책 예외 (409) 가 발생하는 경우 confirm 요청이 취소되는 경우를 막기 위해 complete 전 validation을 수행하고 있습니다. 이로 인해 도메인 내부에서 예외를 던질 수 없게 되는 문제가 있어, paymentClient#confirm의 경우 AFTER_COMMIT을 통해 DB에 결제 승인 선반영 후 -> 이벤트 핸들링을 통해 컨펌 요청을 보내도록 수정하려고 합니다.
이렇게 하면 트랜잭션이 분리되기는 하지만, 기존 로직이 paymentClient.confirm 이후 예외를 발생시키는 케이스를 막기 위해 order.complete 내부에서 validation 로직을 모두 제거했던 문제를 해결할 수 있습니다. 물론 엣지 케이스에서 무결성이 깨지는 상황이 오긴 하겠지만 어쨌든 이런 케이스는 드물고, 대부분은 정책 위배 케이스이기 때문에 올바르게 로직을 작성할 수 있다는 이점을 챙겨가는게 더 좋아보입니다.
The text was updated successfully, but these errors were encountered:
📌 Description
complete
및validateComplete
관련 검증 로직과 paymentClient를 통핸 confirm 요청이 결합되어 있어, 정책 예외 (409) 가 발생하는 경우 confirm 요청이 취소되는 경우를 막기 위해complete
전 validation을 수행하고 있습니다. 이로 인해 도메인 내부에서 예외를 던질 수 없게 되는 문제가 있어,paymentClient#confirm
의 경우AFTER_COMMIT
을 통해 DB에 결제 승인 선반영 후 -> 이벤트 핸들링을 통해 컨펌 요청을 보내도록 수정하려고 합니다.paymentClient.confirm
이후 예외를 발생시키는 케이스를 막기 위해order.complete
내부에서 validation 로직을 모두 제거했던 문제를 해결할 수 있습니다. 물론 엣지 케이스에서 무결성이 깨지는 상황이 오긴 하겠지만 어쨌든 이런 케이스는 드물고, 대부분은 정책 위배 케이스이기 때문에 올바르게 로직을 작성할 수 있다는 이점을 챙겨가는게 더 좋아보입니다.The text was updated successfully, but these errors were encountered: