비브로스 기술 블로그 · 2024. 12. 18.
똑닥 멤버십과 MongoDB 트랜잭션 충돌 방지 방법
AI 엔지니어링 브리핑
똑닥은 멤버십 정기 결제에서 동시에 실행되는 작업 때문에 중복 결제가 발생하자 MongoDB 트랜잭션과 잠금 장치를 함께 사용해 데이터와 결제 흐름을 안전하게 관리했습니다.
문제 & 배경
- 문제 & 배경: 유료 멤버십의 정기 결제와 결제 수단 변경·해지 같은 요청이 같은 멤버십 데이터를 동시에 수정하면서 MongoDB의 Write Conflict가 발생했고, 재시도 과정에서 이중 결제로 이어졌습니다.
기술 & 해결책
- 기술 & 해결책: 여러 데이터 변경을 한 번에 성공시키거나 모두 되돌리는 MongoDB 트랜잭션을 적용하고, 사용자별 공통 키로 Lock을 걸어 같은 멤버십에 대한 결제·변경 작업이 동시에 실행되지 않도록 순서를 제어했습니다.
교훈 & 주의점
- 교훈 & 주의점: 트랜잭션만으로 동시 작업 충돌이 자동으로 해결되지는 않으므로 충돌 가능성을 설계 단계에서 점검하고, 모든 관련 API와 이벤트에 일관된 잠금을 적용하며 이상 결제 모니터링도 함께 마련해야 합니다.
함께 읽을 글
내용이 비슷해요내용이 비슷한 글을 먼저 보여드려요. 같은 문제나 해결책을 다룬다는 뜻은 아니에요.