목록 보기
똑닥 멤버십과 MongoDB 트랜잭션 충돌 방지 방법
백엔드

똑닥 멤버십과 MongoDB 트랜잭션 충돌 방지 방법

비브로스
비브로스
2024년 12월 18일

두줄요약

MongoDB 트랜잭션 도입 과정에서 멤버십 결제와 해지 로직이 충돌하며 이중 결제가 발생했습니다. 공통 키 기반 Lock과 모니터링으로 동시 접근을 제어해 문제를 줄였습니다.

문제 상황

  • 멤버십 정기 결제와 결제수단 변경, 해지/해지 취소가 같은 데이터에 겹치며 이중 결제와 Write Conflict 발생
  • MongoDB 트랜잭션 도입으로 일관성을 확보하려 했지만, 운영 환경에서 동시 접근 충돌이 드러남

원인 분석

  • 동일 문서를 여러 트랜잭션이 동시에 수정하려는 구조
  • 결제 관련 API와 이벤트가 같은 멤버십 데이터를 중복 업데이트하는 흐름
  • 해지, 취소, 즉시 결제 로직이 같은 시점에 맞물린 타이밍 이슈

해결 방법

  • 사용자 업데이트 관련 API와 이벤트에 공통 키 기반 Lock 적용
  • 멤버십 결제 재시도, 결제수단 변경, 해지 관련 처리의 동시 실행 차단
  • 중복 결제 이상을 즉시 감지하는 모니터링 알림 시스템 구축

주의할 점

  • 트랜잭션 자체보다 충돌 가능성까지 포함한 설계 필요
  • 운영 환경에서는 QA에서 드러나지 않던 동시성 문제 점검 필요
  • 동일 리소스 업데이트 경로 전반의 직렬화 전략 검토 필요

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...