<aside> <img src="/icons/reorder_gray.svg" alt="/icons/reorder_gray.svg" width="40px" />

목차


</aside>

1. 문제 상황


결제시스템에서 결제 승인·취소 요청을 처리할 때, 동시성 제어를 위해 Redisson 기반의 분산 락을 도입했습니다. 하지만 도입 후 특정 상황에서 트랜잭션 충돌로 인해 다음과 같은 오류가 발생했습니다.

이로 인해 일부 요청이 실패하거나 데이터가 정상적으로 반영되지 않는 문제가 있었습니다.

2. 원인 분석


자세한 분석 결과, 문제의 원인은 다음과 같았습니다.

즉, 분산 락과 DB 트랜잭션의 범위가 정확히 분리되지 않고 서로 중첩된 것이 근본적인 원인이었습니다.

3. 문제 해결 의사결정


이 문제를 해결하기 위해 다음과 같은 기술적 결정을 내렸습니다.