Skip to content

Latest commit

 

History

History
65 lines (43 loc) · 2.73 KB

File metadata and controls

65 lines (43 loc) · 2.73 KB

[계획서] 선착순 쿠폰 발급 시스템 부하 테스트

1. 테스트 대상 및 목적

1.1. 테스트 대상

  • 대상 API: POST /api/v2/me/coupons/{couponId}/issue

1.2. 왜 이 부분을 테스트해야 하는가?

1) 동시성 제어 검증

선착순 이벤트는 1초 사이에 수천 건의 요청이 몰립니다. 적절한 잠금이나 원자적 연산이 동작하지 않으면, 준비된 수량(1,000개)보다 더 많은 쿠폰(1,005개)이 발급되는 초과 발급사고가 발생하여 금전적 손실과 애플리케이션 신뢰도 하락으로 이어집니다.

2) 순간 부하 견딜 수 있는지 확인

이벤트 오픈 시각(14:00)에 트래픽이 수직 상승하는 스파이크 트래픽을 시스템이 견딜 수 있는지 확인 해야 합니다.

3) 과거 장애 재발 방지

작년 선착순 쿠폰 발급 이벤트 시점에, 약 1초 안에 500명의 요청이 유입되며 시스템 장애가 발생한 이력이 있습니다. 이번 선착순 쿠폰 이벤트에는 동일한 장애가 발생하지 않도록 사전 부하 테스트를 통해 병목을 제거하고자 합니다.

2. 테스트 시나리오 및 전략

2.1. 테스트 전략: Spike Test(스파이크 테스트)

일반적인 점진적 부하가 아닌, 특정 시점에 부하를 집중시키는 시나리오를 적용합니다.

  • 상황: 쿠폰 1,000장 배포, 이벤트 시작 시간: 14:00.
  • 부하 패턴:
    1. Ready: VUser(가상 유저) 2,000명, 수량 1,000개를 가지고 있는 쿠폰 데이터을 사전에 세팅합니다.
    2. Fire: 14:00:00 정각에 2,000명이 동시에 발급 버튼을 클릭합니다.
    3. Check
      • 준비된 1,000장이 정확히 소진되었는가?
      • 나머지 1,000명은 재고 소진 응답을 정상적으로 받았는가?

2.2. 성공 기준

  • 정합성: 발급된 쿠폰의 총 개수가 정확히 1,000개인가? (1,001이상일 경우 실패)
  • 가용성: 시스템 장애가 발생하지 않고, 실패 요청에 대해 정상적인 예외 처리를 반환하는가?
  • 성능
    • 목표 TPS: 1,000 TPS 이상
    • 응답 시간: 평균 500ms 이내, p99(상위 99%) 2초 이내

3. 인프라 구성 및 일정 계획

3.1. 인프라 구성 (Docker 기반)

  • App Container: CPU: 4.0, Memory: 2GB (Resource Limit 설정)
  • DB Container: MySQL 8.0
  • Redis Container: 선착순 쿠폰 발급을 위한 캐시 서버

3.2. 일정 계획(총 2일)

  • Day 1. 환경 구성 및 스크립트 작성
    • Docker Compose 기반 테스트 환경 구축
    • 더미 데이터 생성(User 3,000건, Coupon 1건)
    • K6 스크립트 작성
  • Day 2. 수행 및 결과 보고서 작성
    • 시나리오별 테스트 수행
    • 결과 보고서 작성