부하테스트 개념 및 부하테스트 툴 종류

부하테스트란?

시스템이 얼마나 많은 트래픽이나 요청을 안정적으로 처리할 수 있는 지 테스트 하는 것입니다.
서비스를 운영에 배포하기 전에 어느 정도의 사용자 요청을 견딜 수 있는지 미리 파악할 수 있습니다.

부하테스트 활용 사례

트래픽이 늘어나서 서버가 터져서 죽는 것을 미리 감지하고 대처할 수 있습니다.

예를 들어, 초당 100개의 사용자 요청만 감당 가능한 시스템이라면
사용자 요청 수가 80개로 올라갈 쯤 서버 사양 업그레이드를 고려해볼 수 있습니다.

오버 스펙 고사양 컴퓨터로 트래픽을 처리하면 서버 비용이 크기 때문에
필요한 만큼의 적절한 컴퓨터 사양을 선택하는 것이 중요합니다.

처리량 (Throughput)

부하테스트에서 시스템이 단위 시간 동안 실제로 처리한 요청/트랜잭션 수입니다.
단위는 TPS (초당 처리한 트랜잭션 수) 또는 RPS (초당 처리한 요청 수)를 많이 사용합니다.
1초에 최대 100개의 API 요청을 처리하는 서비스의 최대 쓰루풋은 100 RPS입니다.

시스템 전체 인프라에서 처리량이 가장 낮은 병목 구간에 의해 최대 처리량이 제한됩니다.

지연시간 (Latency)

API에 요청을 보낸 시점부터 응답을 받을 때까지 걸리는 시간을 의미합니다.
부하테스트에서 평균 응답 시간이 2.5초면 평균 레이턴시가 2.5초라고 표현합니다.

시스템 전체 인프라에서 순차 처리되는 각 구간의 지연시간이 누적되어 전체 레이턴시에 영향을 줍니다.


부하테스트 툴 종류

부하테스트 툴으로 k6, ngrinder, jmeter, ab, locust 등이 있습니다.

부하테스트 원리를 이해하면 툴 사용법이나 성능 지표를 분석하는 방식은 비슷합니다.

부하테스트 도구는 부하를 발생시키고 데이터를 수집하는 수단이므로
어떤 툴을 사용하는지보다 결과 데이터를 정확하게 해석하고,
병목 지점을 찾아 적절한 방식으로 성능을 개선하는 역량이 더 중요합니다.

k6

적은 리소스로 많은 가상 사용자를 생성하여 많은 요청을 보낼 수 있는 부하테스트 툴입니다. 사용법이 간단해 쉽게 테스트 가능하고 정확도가 높아 현업에서 많이 사용됩니다.