Skip to content

Commit d8963d8

Browse files
committed
add: 성능테스트 ADR3 작성
1 parent 44091d5 commit d8963d8

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
## 목표 TPS 산정 근거
2+
3+
+ 배경 : 성능 테스트의 합격 기준을 정의하기 위해 목표 TPS 산정이 필요, 실측 트래픽 데이터가 없는 사이드 프로젝트 특성상 가정 기반 역산 방식을 채택
4+
+ 목표 TPS 산정
5+
- DAU 1만명 * 1인당 평균 요청 10회 = 일 10만건
6+
- 피크 집중률 20% : 1시간 집중
7+
+ 100,000 * 0.2 / 3600 = 5.6 TPS
8+
- 여유율 3배 적용
9+
+ 가정 기반 역산이라 불확실성이 높아 보수적으로 3배 적용
10+
+ 17 TPS
11+
+ 인프라 스펙 및 이론상 최대치, 역할 분류
12+
- EC2
13+
+ t3.micro
14+
- RDS
15+
+ db.t4g.micro
16+
+ HikariCP 기본값 10개 사용
17+
- 평균 쿼리 실행시간 30ms (JPA 쿼리 로그 실측값)
18+
- 이론 최대 300 TPS
19+
- 목표 TPS는 달성 가능한 수치
20+
- ElastiCache
21+
+ Redis
22+
+ 역할 분류
23+
- 필수 I/O (캐시아님)
24+
+ JWT 블랙리스트
25+
- 로그아웃 토큰 관리, TTL 10분
26+
- 인증요청마다 Redis 조회
27+
+ 주문 만료 관리
28+
- 만료 주문 재고 방출 및 주문 취소 처리
29+
- 1분 주기로 스케쥴러가 RDS + Redis 접근
30+
+ 결제 재시도
31+
- 실패 결제 주기적 재시도
32+
- 1분 주기로 스케쥴러 동작
33+
+ 평점 집계
34+
- RDS 트랜잭션 동시성 문제 회피를 위해 Redis 원자적 연산 사용
35+
+ 스케쥴러가 테스트에 미치는 영향
36+
- 주문 만료, 결제 재시도 스케쥴러가 1분 주기로 실행되어 테스트 중 반복적으로 동작한다. 스케쥴러 실행 구간에서 응답시간 스파이크가 발생할 수 있지만 실제 운영 환경과 동일한 조건이므로 포함한 상태로 측정한다
37+
+ 테스트 환경 제약
38+
- Artillery 로컬 실행 > AWS 서울 리전 구성으로 네트워크 레이턴시 포함
39+
- 응답시간 수치에 영향을 미칠 수 있음을 감안

0 commit comments

Comments
 (0)