예약 로직에는 조건부 UPDATE를 적용하여 좌석 중복 예약을 방지하고, 멱등성을 통해 동일한 요청이 반복되더라도 예약은 한 건만 생성되고 동일한 응답이 반환되도록 구현했습니다. 또한, 비관적 락을 적용한 리워드 지급 로직이 하루에 한 번만 정상적으로 지급되는지 k6를 통해 검증했습니다.
하나의 좌석을 여러 사용자가 중복 예약 할 때 한 명만 성공하는 것을 검증하는 테스트입니다.
테스트 시나리오
TARGET_VUS 수만큼 가상 사용자( VU )를 동시에 생성
각 VU는 loadtest{N} 계정으로 POST /reserve/login 요청을 보내 JWT 토큰을 발급받습니다.
모든 VU는 동일한 좌석에 대해 POST /reserve 요청을 동시에 수행합니다.
서버는 Redis 기반 분산 락을 사용하여 동시성을 제어합니다.
테스트 종료 후 handleSummary에서 성공/실패 건수를 집계합니다.
테스트
[ 3명의 사용자 ]

[ 50명의 사용자 ]

[ 200명의 사용자 ]

50 ~ 200 명의 사용자로 중복 예약 테스트를 진행한 결과 단 한건의 요청만 성공하는 것을 확인할 수 있었습니다.
특정 사용자가 동일한 예약 요청을 여러 번 요청하여 이중 하나의 요청만 성공하고, 나머지 요청은 저장된 성공 응답을 반환하는지 확인하는 테스트입니다.
테스트
[ 동일한 요청 10번 발생 ]

이처럼 하나의 요청만 성공하고 나머지 요청은 저장된 성공 응답을 반환하는 것을 확인할 수 있습니다.
테스트
[ 동일한 요청 20번 발생 ]
