부하 테스트 계획
부하 테스트를 진행하기 앞서, 서비스 수준 목표(SLO)를 설정하는 것이 좋습니다. 먼저 척도를 표준화하고, 다음과 같은 목표를 설정합니다.
Latency에 중점을 둔 SLO 예시
- GET 호출의 90%는 1ms 이내에 완료해야 합니다.
- GET 호출의 99%는 10ms 이내에 완료해야 합니다.
- GET 호출의 99.9%는 100ms 이내에 완료해야 합니다.
Throughput에 중점을 둔 SLO 예시
결국 Throughput은 순간적으로 요청이 치솟는 피크(peak) 트래픽에서의 처리량을 바탕으로 합니다.
1일 기준으로 RPS를 계산하고자 할 때, 다음과 같은 시나리오를 생각해 볼 수 있습니다.
- DAU(Daily Active User: 1일 접속자 수): 5만 명
- 1명당 평균 접속 횟수: 20회
- 1일 평균 접속 수에 대한 피크 트래픽 배율: 3배 (보통 평균의 2~3배를 곱합니다)
- 안전 계수 (얼마만큼 넉넉하게 프로비저닝 할 것인가): 3배
이 경우 하루가 총 86400초이므로, 다음과 같이 RPS를 생각해 볼 수 있습니다.
50000 x 20 / 86400 x 3 x 3 = 104RPS (약 100RPS)
이를 바탕으로 도출한 SLO는 다음과 같습니다.
- 서비스는 100 RPS를 달성해야 합니다
부하 테스트 도구
다양한 부하 테스트 도구가 존재합니다.
부하 테스트 툴은 회사/조직별로 사용하는 프로그램의 범위가 넓고 다양하므로, 도구 중 하나를 택하여 문서를 통해 배우고, 직접 계획을 세우고 실행해 보는 데에 의의를 둡니다.
최근 주목받고 있는 부하 테스트 도구를 소개합니다. 기본적으로 무료로 사용할 수 있는 CLI 도구를 제공하지만, 추가 기능을 SaaS 형태로도 제공합니다.