rtapi – NGINX를 위한 실시간 API latency 분석 도구

rtapi – API Gateway 및 엔드포인트의 응답성을 테스트하고 피어 간에 쉽게 배포하고 소셜화할 수 있는 보고서를 생성하는 NGINX 에서 만든 실시간 API 대기 시간(latency) 벤치마킹 도구입니다. 두 가지 보고서 형식을 사용할 수 있습니다. 요약 그래프가 포함된 PDF와 ASCII 형식의 자세한 메트릭 테이블입니다.

현대 애플리케이션과 진화하는 디지털 아키텍처에서 API는 매우 중요한 역할을 합니다. Akamai의 ‘인터넷 보안 보고서‘에 따르면, 웹 트래픽의 83%는 API 호출을 통한 것입니다. 현재의 경험에서는 소비자가 디지털 경쟁사로 쉽게 전환할 수 있기 때문에, 사이트나 앱에서 긍정적인 경험을 제공하는 것이 매우 중요합니다. 속도는 매우 중요하며, 반응성이 좋고 안정적이며 적응력 있는 API로 이루어져야 합니다. 만약 여러분의 API가 경쟁사의 것보다 더 빠르다면, 개발자들은 여러분을 선택할 것입니다.

IDC 보고서 ‘API – 디지털 비즈니스의 성공 또는 실패를 결정하는 요소’에 따르면, 조직의 90% 이상이 50밀리초(ms) 미만의 지연 시간을 기대하고 있으며, 약 60%는 20ms 이하의 지연 시간을 기대하고 있습니다. (지연 시간은 API 인프라가 API 호출에 응답하기까지 걸리는 시간을 의미하며, 요청이 API Gateway에 도착한 순간부터 응답의 첫 번째 바이트가 클라이언트에 반환되는 시점까지의 시간입니다.)

이 데이터와 API lifecycle의 end-to-end 분석을 통해, 우리는 실시간 API를 30밀리초(ms) 이하의 지연 시간을 갖는 API로 정의했습니다. 더 나아가, 30밀리초(ms)의 지연 시간 임계 값은 처리된 요청의 99번째 백분위까지 유지되어야 합니다. (즉, 평균적으로 100개 중 1개의 요청만이 30밀리초(ms)보다 더 오랜 시간이 소요됩니다).

대부분의 기업들에게 API 호출을 가능한 한 실시간으로 처리하는 것은 주요 도전입니다. 특히 API Gateway와 같은 복잡한 아키텍처를 사용하여 API 엔드포인트로 진입점을 만들 때는 더욱 어려워집니다. 그래서 여러분의 API는 어떻게 성능을 내고 있을까요? 이미 실시간으로 간주할 만큼 충분히 빠른가요, 아니면 개선이 필요한가요? 제품이 다소 느린 느낌이 드는데 왜 그런지 정확히 파악하기 어려운가요? 아마도 API 대기 시간에 대해 확실하게 알지 못할 수도 있을 것입니다.

[참고 – 이 포스트는 rtapi 버전 0.2.0에서 도입된 수정된 보고서에 대한 정보로 업데이트되었습니다.]

목차

1. rtapi 실행
2. PDF 보고서 해석
3. NGINX가 어떻게 도움이 될까요?

1. rtapi 실행

1. 다음 두 가지 방법 중 하나를 사용하여 GitHub에서 rtapi 바이너리를 다운로드합니다.

  • Golang이 설치되어 있으면 다음 명령을 실행합니다.
$ go get github.com/nginxinc/rtapi
  • Golang이 설치되어 있지 않은 경우 github.com/nginxinc/rtapi/releases로 이동하여 플랫폼용 바이너리를 다운로드하고 실행 가능하게 만드십시오.

2. 다음 예제와 같이 JSON 또는 YAML 형식으로 쿼리하려는 하나 이상의 API 엔드포인트(대상)을 지정합니다. endpoints.json 또는 endpoints.yml 이라는 파일에 JSON 또는 YAML을 저장하는 것이 좋습니다. (JSON의 경우 다음 단계에서 –data 플래그에 대한 매개변수로 rtapi 명령줄에 데이터를 포함할 수도 있습니다.)

각 엔드포인트에 필요한 유일한 매개변수는 target.url 및 target.method입니다. target.body 및 target.header를 지정하지 않으면 비어 있습니다. query_parameters 객체에 매개변수를 지정하지 않으면 rtapi 는 다음 예제에 표시된 (default) 값을 사용합니다.

샘플 JSON 입력

[
  {
    "target": {
      "url": "https://www.example.com",
      "method": "POST",
      "body": "{\"id\":\"0\"}",
      "header": {
        "Content-Type": [
          "application/json"
        ]
      }
    },
    "query_parameters": {
      "threads": 2,
      "max_threads": 2,
      "connections": 10,
      "duration": "10s",
      "request_rate": 500
    }
  }
]

샘플 YAML 입력

- target:
    url: https://example.com/api/id
    method: POST
    body: '{"id":"0"}'
    header:
      Content-Type:
        - application/json
  query_parameters:
    threads: 2
    max_threads: 2
    connections: 12
    duration: 10s
    request_rate: 500

3. 다음 명령을 실행합니다. 여기서 –file은 API 엔드포인트의 JSON/YAML 형식 목록이 포함된 파일의 이름을 지정하고 –output은 rtapi 에서 생성할 PDF 보고서의 이름을 지정합니다. (2단계에서 설명한 것처럼 명령줄에 JSON 입력을 제공할 수 있습니다. –file endpoints.json의 경우 –data 뒤에 JSON 문자열을 입력합니다.)

$ rtapi --file endpoints.json --output report.pdf

터미널에 ASCII 형식의 메트릭 테이블을 표시하려면 –output 플래그 대신(또는 추가로) –print 플래그를 포함하십시오.

$ rtapi --file endpoints.json --print

2. PDF 보고서 해석


rtapi 가 생성하는 PDF 보고서에는 다음과 같은 응답 대기 시간의 HDR 히스토그램이 포함됩니다. Y축은 대기 시간을 밀리초(ms) 단위로 나타내고, X축은 주어진 대기 시간보다 더 짧게 처리된 호출의 비율을 백분위로 표시합니다. (다음 예시에서는 공간을 절약하기 위해 Y축을 압축했습니다.)

API에 대한 결과를 강조표시하기 위해 축과 평행한 점선이 교차하여 99번째 백분위수(그래프의 99%)에서 API의 측정된 지연 시간을 표시합니다. API가 실시간으로 간주되려면 교차 지점의 대기 시간이 30ms 미만이어야 합니다.

rtapi 차트

3. NGINX 가 어떻게 도움이 될까요?

당신의 API는 대기 시간이 30ms 미만으로 실시간 조건을 충족합니까?

당신이 우리와 이야기하는 많은 회사와 같다면 그렇지 않을 가능성이 있습니다. 많은 API Gateway 및 API 관리 솔루션에서 100ms의 대기 시간이 일반적이며 500ms도 드문 일이 아닙니다.

rtapi 는 API 성능을 개선하는 데 도움을 드릴 수 있습니다. NGINX 및 NGINX Plus는 업계에서 가장 빠른 API Gateway이며 30ms 이내에 API 호출을 라우팅, 인증, 보호, 구성 및 캐시할 수 있습니다. nginx.com/real-time-api에서 자세히 알아보고 NGINX 전문가와 대화하고 NGINX가 실시간 API를 향한 여정에서 어떻게 도움이 되는지 알아보십시오.

NGINX Plus를 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 문의하십시오.

아래 뉴스레터를 구독하고 NGINX의 최신 정보들을 빠르게 전달 받아보세요.