1. 테스트 개요
1.1 목적
본 테스트는 실시간 입찰 기능의 동시성 제어 방식에 따른 성능 차이를 비교 분석하는 것을 목적으로 합니다.
기존의 DB 비관적 락(Pessimistic Lock) 방식과 새로 도입한 Redis Lua Script 방식의 성능을 동일한 부하 조건에서 측정하여, Redis 도입의 효과를 정량적으로 검증하고 시스템의 안정성 개선을 확인합니다.
1.2 테스트 환경
| 구분 |
사양 |
| 부하 발생 도구 |
Apache JMeter (Local PC) |
| 테스트 대상 서버 |
AWS EC2 (Application + DB Server) |
| 테스트 데이터 |
사전에 DB에 생성된 테스트 사용자 1,000명 |
2. 동시성 제어 방식 비교
| 구분 |
A) DB 비관적 락 |
B) Redis Lua Script (개선 방식) |
| 동작 원리 |
DB의 특정 Row에 직접 Lock을 설정하여, 트랜잭션이 끝날 때까지 대기 |
Redis의 In-Memory와 Single-Thread 기반 Lua Script를 활용한 Atomic 연산 |
| 장점 |
- 데이터 정합성 보장 |
- 매우 빠른 처리 속도- DB 부하 최소화- 분산 환경에서도 적용 용이 |
| 단점 |
- 락으로 인한 대기 시간 증가- 데드락 발생 가능성 |
- 별도의 Redis 서버 운영 필요 |
3. 테스트 시나리오
- 시나리오: 1,000명의 사용자가 각기 다른 금액으로 동시에 입찰 1회 시도
- 인증 방식: 인증 우회 적용 (모든 테스트 동일하게 적용)
- 부하 프로파일:
- 가상 사용자 수: 1,000명
- Ramp-up Period: 10초
4. 테스트 결과 비교
4.1 핵심 성능 지표 (KPI)
| KPI |
A) DB 비관적 락 |
B) Redis Lua Script |
개선 효과 |
| 성공률 |
⚠️ 50.00% |
🏆 100% |
에러율 0% 달성 |
| 처리량 (TPS) |
🐌 14.35 req/sec |
🚀 91.58 req/sec |
6.4배 (538%) 증가 |
| 95% 응답 시간 |
🐢 60,037 ms (60초) |
⏱️ 128 ms (0.13초) |
469배 (99.79%) 단축 |
| 평균 응답 시간 |
🐢 31,863 ms (32초) |
⏱️ 86 ms (0.09초) |
370배 (99.73%) 단축 |
4.2 응답 시간 분포 (ms)