현재 부트캠프에서 뽀시래기라는 프로젝트를 진행하고 있다.

도메인은 https://pposiraegi.cloud/login 이며, 타임딜 서비스 특성상 특정 시간대에 트래픽이 순간적으로 폭증하는 상황이 발생한다. 이 트래픽을 실제로 버틸 수 있는지 검증하기 위해 부하 테스트 도구인 k6를 사용해보기로 했다.
k6란? JavaScript로 테스트 스크립트를 작성해 HTTP 요청을 대량으로 보내고, 응답 시간·성공률 등을 측정할 수 있는 오픈소스 부하 테스트 도구다.
공식 설치 문서: https://grafana.com/docs/k6/latest/set-up/install-k6/
Windows 환경이므로 PowerShell에서 아래 명령어를 실행한다.
winget install k6 --source winget

test.js 파일을 생성하고 아래 스크립트를 작성했다.
import http from 'k6/http';
import { sleep, check } from 'k6';
export const options = {
vus: 300, // 동시 접속 가상 유저 300명
duration: '30s', // 30초 동안 테스트 실행
};
// 테스트 시작 전 1회 실행 - 로그인해서 토큰을 가져옴
export function setup() {
const res = http.post(
'https://pposiraegi.cloud/api/v1/auth/login',
JSON.stringify({ email: 'test@test.com', password: '123456' }),
{ headers: { 'Content-Type': 'application/json' } }
);
console.log('로그인 응답:', res.status, res.body);
const token = res.json('data.accessToken');
console.log('토큰:', token);
return { token };
}
// 가상 유저 300명이 30초 동안 반복 실행하는 시나리오
export default function (data) {
const body = `{"orderItems":[{"skuId":839470480585919574,"quantity":1}]}`;
const res = http.post(
'https://pposiraegi.cloud/api/v1/orders',
body,
{
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${data.token}`,
}
}
);
console.log('주문 응답:', res.status, res.body);
check(res, {
'status is 200': (r) => r.status === 200,
});
sleep(1);
}
작성 후 아래 명령어로 실행한다.
k6 run test.js


결과를 해석하면 다음과 같다.
| 항목 | 결과 |
|---|---|
| checks_succeeded | 100% (1856개 요청 전부 성공) |
| 평균 응답 시간 (avg) | 4.15초 |
| 90% 응답 시간 (p90) | 5.73초 이내 |
| 95% 응답 시간 (p95) | 6.09초 이내 |
| 최대 응답 시간 (max) | 9.7초 |
요청 자체는 전부 성공했지만 응답 속도가 너무 느리다. 평균 4초, 최대 약 10초는 타임딜 서비스에서는 치명적인 수치다. DB 커넥션 풀을 관리하는 HikariCP 튜닝이 필요할 것 같다.