getOrCreate / Unique? 멱등 처리 질문
3
8 câu hỏi đã được viết
paymentCreator 쪽을 보니 사용자가 결제를 진행하지 않고 결제창을 닫았다가 다시 열거나 새로고침 하면 db unique 단에서 에러가 날 것 같더라구요.
creator 로직에서 조회를 먼저하고 있으면 반환 없으면 생성하는 방식으로 분기문을 둔다.
db unique를 타게하고 try catch 등으로 처리한다.
가독성이나 복잡도 측면에서 각각의 장단점이 있을 것 같습니다!
이런 경우가 payment 생성 말고도 다양한 로직에서 자주 나오는 상황일 것 같은데 제미니님은 주로 어떤 스타일로 개발하시는지 궁금합니다!
Câu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다. wheon06님.
결제창을 닫았다가 다시 열거나 새로고침하는 상황처럼 동일한 결제 요청이 반복될 수 있는 경우에는 조회 후 생성만으로는 동시성 문제를 완전히 막기 어렵습니다. 두 요청이 동시에 조회하면 모두 데이터가 없다고 판단할 수 있기 때문입니다.
일반적으로는 다음과 같이 역할을 나누어 고려할 수 있습니다.
- 먼저 조회 후 반환하는 방식은 정상적인 중복 요청을 빠르게 처리할 수 있어 가독성이 좋습니다.
- 하지만 동시에 여러 요청이 들어오는 경우에는 두 요청 모두 생성을 시도할 수 있으므로, DB Unique 제약조건을 최종 방어선으로 두는 것이 안전합니다.
- 생성 중 Unique 충돌이 발생하면 예외를 무조건 실패로 처리하기보다, 이미 생성된 데이터를 다시 조회해 반환하는 방식으로 보완할 수 있습니다.
- 결제처럼 외부 PG 요청이 포함되는 경우에는 결제 키나 주문 키를 기준으로 멱등성을 보장하고, 상태를 세분화하여 중복 요청 및 실패 상황을 관리하는 것도 중요합니다.
관련된 기존 답변을 참고해 보시면 도움이 될 것 같습니다.
결제서비스 콜백 동시성문제 가능성
동시에 여러 결제 콜백이 들어올 때 포인트·쿠폰 중복 사용이나 상태 충돌을 어떻게 처리할지에 대한 질문입니다. 강의 답변에서는 검증과 예외 처리를 추가하되, 최종적으로는 낙관적 락과 수동 처리 또는 자동 보정 배치 등을 조합하는 방향을 설명하고 있습니다.
외부 API 연동 시 데이터 정합성을 고려해야 할 때..
외부 결제 API 호출과 내부 DB 저장 사이의 불일치 문제를 다룬 질문입니다. 외부 API의 멱등성, 상태 관리, 보정 배치, 로깅과 알림 등 결제 생성 이후의 정합성을 유지하는 방법을 참고할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
경쟁상태
0
4
1
기존의 완성된 CRUD의 Build.gradle에 security관련 dependency를 추가하면 문제가 생깁니다.
0
10
2
stmt
0
5
1
파킹 페이지와 대기열 큐 질문입니다.
0
11
0
실행 통계2 explain analyze 조인 쿼리
0
12
0
ReviewPolicyValidator와 ReviewManger내의 if문
1
61
2
ProductController 에서 타협하지 않는다면 어떤 형태가 되나요?
1
75
2
접근 가능한 카트 목록을 조회하는 API는 없는걸까요?
1
89
2
Sequence 관련 질문
1
117
2
Image Only Query
1
96
2
ProductOption을 통한 FindProductOption에 관한 질문
1
101
2
상수에 관련해서 질문있습니다.
1
111
2
null 을 많이 허용하지 않는 이유
1
119
1
JetBrains All Products Pack 3개월 이용권 신청 관련 문의
1
181
2
소스코드 보안
1
309
2
AI 사용 방법에 대하여...
1
168
2
PaymentValidator와 PaymentProcessor에서 주문과 결제를 중복 조회하는 구조에 대한 질문이 있습니다 !
1
129
3
결제 개념 컴포넌트 분리 기준과 네이밍 전략에 대한 질문있습니다 !
1
144
3
AI 를 적용시 브랜치를 다루는 팁 같은게 있을까요?
1
190
2
사용자가 상품을 선택하고 쿠폰을 고를 때 가장 혜택이 큰 쿠폰을 고르는 상황
1
170
2
장바구니 아이템 가격 기준?
1
172
2
인텔리제이에서 legacy 프로젝트 그레이들 인식 불가
1
243
4
예약 변경 시 '과거 정책 기준 재계산' 요구사항에 따른 스냅샷 데이터 구조 설계 고민
1
187
2
선생님
1
222
1

