API 부하 테스트 서비스 — k6 기반으로 최대 10,000건의 동시 트래픽 성능을 측정하고, Claude AI가 오류를 분석합니다.
| 도구 | 버전 | 설치 방법 |
|---|---|---|
| Node.js | v18 이상 | https://nodejs.org |
| k6 | 최신 버전 | 아래 참고 |
Windows (Chocolatey)
choco install k6
Windows (winget)
winget install k6
macOS (Homebrew)
brew install k6
Linux
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update && sudo apt-get install k6
k6 공식 설치 가이드: https://k6.io/docs/get-started/installation/
npm install.env.example을 복사하여 .env 파일을 생성합니다.
cp .env.example .env.env 파일을 열고 Anthropic API 키를 입력합니다.
ANTHROPIC_API_KEY=sk-ant-여기에-실제-API-키-입력
PORT=3000Anthropic API 키는 https://console.anthropic.com 에서 발급받을 수 있습니다.
npm start개발 모드 (파일 변경 자동 재시작):
npm run devhttp://localhost:3000
- 홈 화면에서 Mode 1 카드의 입력란에 Swagger 문서 URL을 입력합니다.
- 예:
https://api.example.com/v3/api-docs - 예:
https://api.example.com/swagger.json
- 예:
- 문서 불러오기 버튼을 클릭합니다.
- 파싱된 엔드포인트 목록에서 테스트할 엔드포인트 하나를 선택합니다.
- 슬라이더로 동시 요청 수(1,000 ~ 10,000)를 설정합니다.
- 테스트 시작 버튼을 클릭합니다.
경로 파라미터가 포함된 엔드포인트(
/users/{id})는 자동으로1로 치환되어 테스트됩니다.
- 홈 화면에서 Mode 2 카드의 메서드(GET, POST 등)를 선택합니다.
- 엔드포인트 URL을 입력합니다.
- 예:
https://api.example.com/api/users
- 예:
- 슬라이더로 동시 요청 수(1,000 ~ 10,000)를 설정합니다.
- 테스트 시작 버튼을 클릭합니다.
| 항목 | 설명 |
|---|---|
| 성공률 (정확성) | 2xx 응답을 받은 요청의 비율 |
| 평균 응답 시간 (Avg) | 전체 요청의 평균 응답 시간 (ms) |
| P95 응답 시간 | 상위 95%의 요청이 이 시간 내에 완료됨 (ms) |
| 중간값 (P50 / Median) | 전체 요청 중 정확히 중간에 해당하는 응답 시간 (ms) |
- 초록색: 95% 이상 (양호)
- 노란색: 70~94% (주의)
- 빨간색: 70% 미만 (위험)
에러율이 10%를 초과하거나 k6 실행 자체가 실패한 경우, Claude AI가 자동으로 원인을 분석하고 해결 방법을 제시합니다.
| 설정 | 값 |
|---|---|
| 최소 요청 수 | 1,000건 |
| 최대 요청 수 | 10,000건 |
| 개별 요청 타임아웃 | 120초 |
| k6 프로세스 타임아웃 | 5분 |
| 최대 VU (가상 사용자) | 500 (요청 수가 500을 초과해도 500 VU로 분산 처리) |
dalgurum-api-tester/
├── src/
│ ├── server.js # Express 서버 진입점
│ ├── routes/
│ │ ├── index.js # 홈 페이지 라우트
│ │ ├── swagger.js # Swagger 분석 라우트
│ │ └── test.js # 테스트 실행 & 결과 라우트
│ ├── services/
│ │ ├── swaggerService.js # Swagger URL 파싱
│ │ ├── k6Service.js # k6 스크립트 생성 & 실행
│ │ └── claudeService.js # Claude AI 에러 분석
│ └── views/ # EJS 서버사이드 렌더링 템플릿
│ ├── layout.ejs
│ ├── index.ejs
│ ├── endpoints.ejs
│ ├── running.ejs
│ └── results.ejs
├── public/
│ └── css/style.css
├── .env # 환경 변수 (직접 생성)
├── .env.example # 환경 변수 예시
├── package.json
└── README.md
- 부하 테스트 대상 서버의 소유권 또는 사용 허가가 있는 경우에만 사용하세요. 무단 부하 테스트는 서비스 장애를 유발하며 법적 문제가 될 수 있습니다.
- k6는 시스템 PATH에 있어야 합니다. 설치 후
k6 version으로 확인하세요. - 테스트 결과는 서버 메모리에 2시간 동안 보관된 후 자동 삭제됩니다.
.env파일은 절대 버전 관리에 포함하지 마세요.