Skip to content

SsogSsog/load-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

서버 부하 테스트

테스트 목적: 실제 유저 트래픽 패턴을 시뮬레이션하여 목표 TPS 달성 여부 및 서버 안정성 검증


1. 🎯 목표 TPS 산정

일일 활성 사용자(DAU) 500명을 기준으로, 피크 시간대 트래픽을 견딜 수 있는 목표치를 산출했습니다.

항목 수치 산출 근거
DAU 500명 초기 서비스 목표 사용자 수
1인당 요청 30회 검색(10) + 상세조회(15) + 스크리닝(5)
평균 TPS 0.52 (500명 × 30회) ÷ 28,800초(8시간)
최종 목표 50 TPS 평균 TPS × 10(성장치) × 3(피크) × 2(안전계수)

2. 🛠 테스트 환경 및 시나리오

2.1 테스트 도구 & 환경

  • Framework: Locust (Python)
  • Server: Spring Boot (Localhost)

2.2 사용자 행동 시나리오

실제 앱 사용 패턴을 반영하여 API별 호출 가중치를 부여했습니다.

class StockApiUser(HttpUser):
    wait_time = between(0.3, 0.7) # 유저가 화면을 보는 시간 (평균 0.5초)
    
    @task(59)
    def autocomplete(self): 
        """자동검색 (59%): 검색창 타이핑 시 실시간 호출"""
        
    @task(24)
    def stock_detail(self): 
        """종목상세 (24%): 개별 종목 정보 조회"""
        
    @task(18)
    def screener(self): 
        """스크리너 (18%): 조건에 맞는 종목 필터링 (Heavy Query)"""

2.3 실행 명령어

locust -f locustfile.py --headless -u 50 -r 5 -t 3m --host http://localhost:8080
  • Users: 50명 (동시 접속자) / Time: 3분 지속

3. 📊 테스트 결과 요약

목표치인 50 TPS를 크게 상회하는 트래픽에서도 매우 안정적인 성능을 보였습니다.

지표 목표값 실측값 달성률 결과
Throughput 50 TPS 163.2 RPS 326% 🚀 초과 달성
Error Rate < 1% 0.00% - Pass
Avg Latency < 200ms 10 ms - 매우 빠름
P95 Latency < 500ms 18 ms - Pass

4. 📈 상세 성능 분석

4.1 API별 세부 지표 (Statistics)

Locust Statistics Table 각 API 엔드포인트별 상세 처리량과 응답 속도입니다. 가장 부하가 높은 '스크리너' 기능도 안정적인 속도를 유지했습니다.

4.2 트래픽 분석 (Charts)

Locust Charts 전체 테스트 구간 동안의 트래픽 추이와 서버 응답 패턴입니다.

  1. RPS (초록색 선): 테스트 시작 직후 166 RPS에 도달하여 종료 시점까지 일정하게 유지됨.
  2. 응답 속도 (보라색 선): P95(상위 95%) 응답 속도가 평균 20ms 매우 안정적임. 후반부에 치솟은 부분이 있으며 GC 처리로 인한 지연으로 예상되고 해당 지연에도 40ms라는 빠른 성능을 유지함
  3. Failure (빨간색 선): 전 구간 0건으로 안정성 입증.

5. 🧪 테스트 한계 및 보완 계획

이번 테스트는 로컬 환경의 특수성이 반영된 결과임을 명시합니다.

  • 서버 스펙: MacBook Air - Local Environment
  • 한계점: 1. 로컬 루프백(Loopback) 통신으로 네트워크 Latency가 배제됨.
  • 한계점: 2. 고성능 프로세서(M칩)로 인해 실제 운영 예상 환경(AWS t3.micro 등)보다 높은 퍼포먼스가 측정됨.

보완 계획: 추후 Docker Resource Limit(cpus: 0.5, memory: 512m)을 적용하여 저사양 환경 재검증. 실제 배포 후 네트워크 지연을 포함한 통합 테스트 진행 예정.


📂 Project Structure

load-test/
├── locustfile.py      # Locust 테스트 시나리오 스크립트
└── results/           # 테스트 결과
└── README.md          # 문서

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages