터미널 한 줄로 웹 서버에 부하를 걸어 응답 속도를 확인하는 방법
서버가 얼마나 버틸 수 있는지 궁금할 때, 터미널에 한 줄만 치면 요청을 보내고 결과를 보여줍니다. hey는 ApacheBench를 대체하는 작은 프로그램으로, 웹 애플리케이션에 부하를 주고 통계 정보를 출력합니다. 복잡한 설정 없이도 실제 트래픽 상황에서 서버가 어떻게 반응하는지 파악할 수 있습니다.
이름 변경의 이유
hey는 원래 boom이라는 이름으로 시작했습니다. 하지만 다른 개발자의 도구와 이름이 겹쳐 바이너리 충돌로 혼란이 생겼습니다. 원래 소유자의 이름을 존중하기 위해 프로젝트 이름을 hey로 바꿨습니다. 이 변경은 도구의 기능과 무관하게, 오픈소스 커뮤니티 내 이름 충돌 문제를 해결하기 위한 조치였습니다.
부하 테스트 실행 방법
hey는 지정된 수의 요청을 지정된 동시성 수준으로 실행하고 통계를 출력합니다. 기본값은 200개의 요청과 50개의 동시 워커입니다. -n 옵션으로 요청 수를, -c 옵션으로 동시 실행할 워커 수를 조절할 수 있습니다. 또한 -z 옵션을 사용하면 시간 단위로 테스트를 제한할 수 있어, 30초나 3분처럼 특정 기간 동안의 성능을 측정하는 데 유용합니다. HTTP/2 엔드포인트도 지원하므로 최신 프로토콜 환경에서의 테스트도 가능합니다.
다양한 요청 시나리오 구성
단순 GET 요청 외에도 POST, PUT, DELETE 등 다양한 HTTP 메서드를 지원합니다.
- 요청 제어 요청 수, 동시성, 시간 제한, QPS 제한을 통해 부하 강도를 조절합니다.
- HTTP 옵션 메서드, 헤더, 본문, 인증, 프록시, 타임아웃 등 HTTP 요청의 세부 사항을 설정합니다.
- 출력 형식 기본적으로 요약 통계를 출력하며, -o csv 옵션을 사용하면 CSV 형식으로 결과를 저장할 수 있습니다.
설치 및 사용 환경
Linux, macOS, Windows의 amd64 아키텍처를 위한 바이너리를 제공합니다. macOS 사용자는 Homebrew를 통해 brew install hey 명령으로 쉽게 설치할 수 있습니다. Go 언어로 작성되어 있어 단일 바이너리로 실행되며, 추가적인 런타임 의존성이 없습니다. 설치 후 터미널에서 hey <url> 형식으로 실행하면 바로 테스트를 시작할 수 있습니다.
사용 전 확인 사항
hey는 부하 생성 도구이므로, 테스트 대상 서버에 실제 부하를 가합니다. 프로덕션 환경에서 실행하기 전에는 반드시 테스트 환경이나 승인된 시기에만 사용해야 합니다. README는 특정 운영체제 버전이나 Go 버전 요구 사항을 명시하지 않지만, 제공된 바이너리는 amd64 아키텍처에 한정됩니다. ARM 기반 Mac이나 다른 아키텍처를 사용하는 경우 소스에서 직접 빌드해야 할 수 있습니다. 또한, 네트워크 대역폭과 서버 자원이 테스트에 영향을 미치므로, 결과 해석 시 이러한 환경 요인을 고려해야 합니다.