현재 상황재고 차감에 동시성 이슈가 있어서 비관락을 적용해 동시성 문제를 해결하였다.하지만 비관적 락 특성상 락을 획득하고 있는 시간이 길어지면 다른 요청들이 대기 상태로 밀리면서 DB 커넥션 병목이 발생하고 실패율이 50%가 넘는 문제가 발생한 것을 확인했다. 실제로 지표를 확인해 보면, 가상 유저 수와 TPS가 각각 500명, 160 req/s까지 올라갔다가 약 15초 만에 급격히 감소하는 것을 볼 수 있다.또한 재고 100개가 너무 빨리 소진되면서 나머지 시간은 의미 없는 409 응답만 반복됐다.비관락 적용 과정은 재고 차감 시 발생하는 동시성 이슈 해결 - 비관적 락 에서 확인할 수 있습니다. 테스트 시나리오기존 테스트는 재고가 빠르게 소진되어 성능 지표를 관찰하기 어려웠고, 지속적인 락 경합 상..
현재 상황현재 재고 차감은 결제 요청 시 미리 차감 후, 결제 결과에 따라 복원하는 프로세스로 구현되어 있다.결제 도중 재고가 선점되지 않아 발생하는 사용자 이탈 및 불편을 최소화하기 위해 구현이 조금 복잡해져도 선점 방식을 도입했다.이러한 선점 로직이 동시 요청 환경에서 정합성을 보장하는지 검증하고자 동시성 테스트를 진행했다. 테스트 시나리오테스트 환경도구: K6터미널 기반으로 리소스 효율이 높고, Grafana 연동을 통한 실시간 지표 시각화 용이테스트 환경: 로컬 환경인프라 지연 요인을 배제하고 로직 자체의 동시성 결함 및 정합성 검증데이터베이스: PostgreSQL테스트 대상 API: POST /internal/rewards/reserve-stock테스트 데이터 설정리워드 초기 재고: 100개동시..