parallelHTTP를 만나보세요 — API를 위한 간단한 스트레스 테스트 도구

발행: (2025년 12월 13일 오후 03:43 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

ParallelHTTP란

ParallelHTTP는 최소한의 기능을 갖춘 도구로, 다음을 할 수 있게 해줍니다:

  • 여러 HTTP 요청을 병렬로 전송합니다.
  • 메서드(GET, POST 등), 엔드포인트 URL, 요청 본문, 타임아웃을 설정합니다.
  • 응답 시간과 상태 코드를 추적합니다.
  • 성공/오류 개수, 평균 지연시간, 지연시간 백분위수 등 집계된 요약을 제공합니다.
  • 응답을 CSV로 내보내 나중에 검토할 수 있습니다.

사용 방식에 따라 여러 인터페이스를 제공합니다:

  • Web UI – 브라우저를 통한 인터랙티브 테스트.
  • CLI 모드 – 터미널에서 빠르게 테스트, 자동화, 스크립트 또는 CI에 적합.
  • Docker 이미지 – 컨테이너화된 사용, 다른 도구와의 통합이 용이.
  • REST API 엔드포인트 – 프로그래밍 방식으로 부하를 발생시키거나 다른 시스템과 연동.

왜 Parallel HTTP 요청을 사용하나요 — 그리고 parallelHTTP가 어떻게 맞춰지는가

많은 HTTP 요청을 병렬로 보내는 것은 스트레스 테스트, 벤치마크, 로드 테스트를 할 때 흔히 쓰이는 방법입니다. 병렬 요청은 동시 클라이언트를 시뮬레이션하므로, 특히 부하 상황에서 실제 사용 패턴에 가깝습니다.

병렬성을 구현하는 방법은 다양합니다(스레드, 비동기 프로그래밍, 언어별 라이브러리 등). 예를 들어 Python에서는 스레드나 async 라이브러리를 사용해 HTTP 호출을 병렬화할 수 있습니다.

parallelHTTP는 UI, CLI, REST API를 모두 하나로 묶어 제공하므로 별도의 스크립트나 glue code를 작성할 필요가 없습니다. 빠르게 부하 테스트를 실행하고 싶은 개발자나 QA 엔지니어에게 “즉시 사용 가능한” 솔루션을 제공합니다.

parallelHTTP 설치 방법

ParallelHTTP는 바이너리, Docker, Web UI, CLI 중 원하는 방식으로 사용할 수 있습니다.

1. 바이너리로 설치 (CLI 모드)

실행:

./parallelhttp --help

사용 가능한 플래그:

-duration duration
      Max duration for all calls. Example: 0->no limit, 1ms, 1s, 10m
-endpoint string
      Request endpoint to be called.
-format string
      Response format. One of: text, yaml, json. Default json. (default "json")
-method string
      Request Method. Default GET. (default "GET")
-parallel int
      Number of parallel calls. Default 1. (default 1)
-timeout duration
      Request timeout. Default 10s

사용 예시

./parallelhttp \
  --endpoint=http://localhost:8080/test \
  --parallel=5 \
  --method=GET \
  --timeout=2s \
  --duration=10s \
  --format=json

샘플 출력(JSON):

{
  "requests": [
    {
      "response": {
        "status_code": 200,
        "time": "2025-12-02T04:39:26.450811405+01:00",
        "duration": 176680135,
        "duration_h": "176.680135ms"
      },
      "error": null,
      "error_message": null
    },
    {
      "response": {
        "status_code": 200,
        "time": "2025-12-02T04:39:26.450838753+01:00",
        "duration": 177105875,
        "duration_h": "177.105875ms"
      },
      "error": null,
      "error_message": null
    },
    {
      "response": {
        "status_code": 200,
        "time": "2025-12-02T04:39:26.450989804+01:00",
        "duration": 176999320,
        "duration_h": "176.99932ms"
      },
      "error": null,
      "error_message": null
    },
    {
      "response": {
        "status_code": 200,
        "time": "2025-12-02T04:39:26.450761076+01:00",
        "duration": 177158817,
        "duration_h": "177.158817ms"
      },
      "error": null,
      "error_message": null
    },
    {
      "response": {
        "status_code": 200,
        "time": "2025-12-02T04:39:26.450879196+01:00",
        "duration": 179940733,
        "duration_h": "179.940733ms"
      },
      "error": null,
      "error_message": null
    }
  ],
  "stats": {
    "start_time": "2025-12-02T04:39:26.450727731+01:00",
    "end_time": "2025-12-02T04:39:26.630824982+01:00",
    "duration": "180.097251ms",
    "latency": {
      "p50": "177.105875ms",
      "p90": "179.940733ms",
      "p99": "179.940733ms"
    }
  }
}

2. Web UI (Docker)

docker run --rm -p 8080:8080 -it nicumicle/parallelhttp

브라우저에서 http://localhost:8080을 열면 엔드포인트 선택, 파라미터 설정, 테스트 실행을 할 수 있는 UI가 표시됩니다. 결과는 브라우저에 바로 나타납니다.

사용 사례 — parallelHTTP가 빛을 발하는 순간

  • API 성능 테스트 – 100, 1 000, 혹은 10 000개의 동시 요청을 시뮬레이션하고 지연시간, 오류, 타임아웃을 관찰합니다.
  • 새 서버 버전 벤치마킹 – 릴리즈 간 지연시간이나 오류율을 비교합니다.
  • 프로덕션 전 스트레스/로드 테스트 – 기능 출시나 트래픽 급증 전에 안정성을 검증합니다.
  • 부하 하에서 회귀 테스트 – CI/CD 파이프라인에 통합해 변경 후 자동으로 부하 테스트를 실행합니다.
  • 상세 메트릭 내보내기 – CSV 내보내기로 결과를 스프레드시트나 시각화 도구에 연결해 심층 분석이 가능합니다.

마무리

parallelHTTP는 병렬 HTTP 요청을 손쉽게 보내고, 지연시간과 상태 코드를 측정하며, 결과를 내보낼 수 있는 간단한 도구입니다. 개발자, QA 엔지니어, 혹은 빠른 API 스트레스 테스트가 필요한 모든 사람에게 유용한 툴킷이 될 것입니다.

레포지토리를 살펴보고 직접 API에 적용해 보세요.

Back to Blog

관련 글

더 보기 »

Dev tools 허브 API

제가 만든 제출물: Xano AI-Powered Backend Challenge https://dev.to/challenges/xano-2025-11-20: Production-Ready Public API 제목: DevTools Resource…