Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions docs/loadTest/1_부하테스트_계획.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 콘서트 예약 서비스 - 부하 테스트 계획 보고서

## 부하 테스트 목적

- 시스템이 예상되는 부하를 정상적으로 처리할 수 있는지 평가
- 특정한 부하를 제한된 시간 동안 제공해 이상이 없는지 파악

## 대상 선정 및 선정 이유
| 테스트 대상 | 테스트 이유 | 기대 효과 |
| ------------- |----------------------------------------------------------------------| ------------------------------- |
| **포인트 충전 / 사용 API** | 실시간 예매 시 사용자 수백~수천 명이 포인트를 동시에 사용<br>→ 동시성 제어와 DB 정합성 확인 | 동시 처리 상황에서 포인트 충돌 및 음수 잔액 방지 확인 |
| **대기열 진입 API** | 예매 시작과 동시에 수천 건 이상 대기열 진입 요청<br>→ Redis ZSet 순번 부여/상태 전환 로직 부하 확인 | 대량 트래픽 상황에서 순번 충돌 방지 및 응답 시간 유지 |
| **좌석 예약 API** | 동일 좌석을 여러 유저가 동시에 선택할 수 있음<br>→ Redis 분산락 기반 중복 방지 로직 점검 | 중복 예약 방지 및 동시성 처리 성능 검증 |

## 부하 테스트 시나리오
| 기능 | 테스트 시나리오 | 목표 TPS | 중점 검증 항목 |
| --------- |--------------------------------| ----------- | ----------------------- |
| 포인트 충전/사용 | 다수의 유저가 포인트를 동시에 충전하고 사용 | 200 TPS | 음수 잔액 발생 여부, 처리 실패율 |
| 대기열 진입 | 1,000명의 유저가 예매 시작 시 동시에 대기열 진입 | 500 TPS | ZSet 순번 중복/누락 여부, 처리 지연 |
| 좌석 예약 | 동일 좌석에 대해 수백 명이 동시에 임시 예약 요청 | 100~300 TPS | 분산락 적용 여부, 중복 예약 방지 |


## 테스트 도구 및 인프라 구성
- 도구: Apache JMeter (Apache 의 성능 테스팅 툴)
- 서버 환경:
- Spring Boot
- Redis
- MySQL