블로그 | NGINX

귀사의 API는 실시간인가요? NGINX의 rtapi 도구로 대기 시간 테스트

NGINX-F5-수평-검정-유형-RGB의 일부
알레산드로 파엘 가르시아 썸네일
알레산드로 파엘 가르시아
2020년 3월 11일 게시

[편집자 - 이 게시물은 rtapi 버전 0.2.0 도입된 개정된 보고서에 대한 정보로 업데이트되었습니다 .]

Akamai 인터넷 보안 보고서 에 따르면 API는 현대적 애플리케이션과 진화하는 디지털 아키텍처의 핵심이며, API 호출은 전체 웹 트래픽의 83%를 차지합니다. 오늘날 소비자가 디지털 경쟁사로 쉽게 전환할 수 있는 환경에서, 소비자가 귀하의 사이트나 앱에서 긍정적인 경험을 하는 것은 매우 중요합니다. 속도는 매우 중요하며, 궁극적으로 반응성 있고 건강하며 적응 가능한 API에 의해 구동됩니다. 이 점을 제대로 충족한다면, 즉 귀사의 API가 경쟁사보다 빠르다면 개발자들이 귀사를 선택하게 될 것입니다.

IDC 보고서 API - 디지털 비즈니스의 성공과 실패를 결정하는 요인 에 따르면, 90%가 넘는 조직이 50밀리초(ms) 미만의 지연 시간을 예상하는 반면, 거의 60%는 20ms 이하의 지연 시간을 예상합니다. (대기 시간이란 API 인프라가 API 호출에 응답하는 데 걸리는 시간으로 정의됩니다. 즉, 요청이 API 게이트웨이에 도착한 순간부터 응답의 첫 바이트가 클라이언트에 반환되는 순간까지입니다.)

우리는 이 데이터와 API 수명 주기의 종단 간 분석을 함께 사용하여 지연 시간이 30ms 이하인 실시간 API를 정의했습니다. 또한, 처리된 요청의 99%에 도달할 때까지 30ms 지연 임계값을 유지해야 합니다(즉, 평균적으로 100개의 요청 중 30ms보다 오래 걸리는 요청은 1개뿐입니다). 자세한 내용은 API 관리 솔루션의 성능 벤치마킹 에 대한 블로그를 참조하세요.

대부분의 기업이 API 호출을 가능한 한 실시간에 가깝게 처리하는 것은 큰 과제입니다. 특히, 구조적으로 복잡한 API 게이트웨이를 API 엔드포인트의 진입점으로 사용하는 경우 더욱 그렇습니다. 그러면 귀사의 API는 어떻습니까? 이미 실시간으로 볼 만큼 빠른가요? 아니면 개선이 필요한가요? 제품이 약간 느리게 느껴지지만, 그 이유가 무엇인지 잘 모르겠어요. API 지연 시간이 어떤지 확실히 모르시겠어요?

NGINX에서 만든 실시간 API 지연 벤치마킹 도구인 rtapi를 입력하세요. 이 도구는 API 게이트웨이와 엔드포인트의 응답성을 테스트하고, 동료들과 쉽게 배포하고 공유할 수 있는 보고서를 생성합니다. 사용 가능한 보고서 형식은 두 가지입니다. 요약 그래프가 포함된 PDF 형식과 자세한 지표가 포함된 ASCII 형식 표 형식입니다.

rtapi 실행

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

    • Golang이 설치되어 있다면 다음 명령을 실행하세요.

      $ go get github.com/nginxinc/rtapi
    • Golang이 설치되어 있지 않으면 github.com/nginxinc/rtapi/releases 로 이동하여 플랫폼에 맞는 바이너리를 다운로드하고 실행 가능하게 만드세요.
  2. 다음 예시와 같이 JSON 또는 YAML 형식으로 쿼리하려는 API 엔드포인트( 대상 )를 하나 이상 지정합니다. JSON 또는 YAML을 Endpoints.json 또는 Endpoints.yml 이라는 파일에 저장하는 것이 좋습니다. (JSON의 경우 다음 단계에서 --data 플래그에 대한 매개변수로 rtapi 명령줄에 데이터를 포함할 수도 있습니다.)

    각 엔드포인트에 필요한 매개변수는 target.urltarget.method 뿐입니다. target.bodytarget.header를 지정하지 않으면 비어 있게 됩니다. query_parameters 개체에서 매개변수를 지정하지 않으면 rtapi는 다음 예에 표시된 (기본값) 값을 사용합니다.

    샘플 JSON 입력

    [
    {
    "대상": {
    "url": "https://www.example.com",
    "메서드": "POST",
    "body": "{\"id\":\"0\"}",
    "header": {
    "Content-Type": [
    "application/json"
    ]
    }
    },
    "query_parameters": {
    "threads": 2,
    "최대 스레드": 2,
    "연결": 10,
    "기간": "10초",
    "요청_속도": 500
    }
    }
    ]

    샘플 YAML 입력

    - 대상: url: https://example.com/api/id
    메서드: POST
    본문: '{"id":"0"}'
    헤더:
          콘텐츠 유형:
    - application/json
    쿼리 매개변수:
    스레드: 2
    최대 스레드: 2
    연결: 12
    기간: 10초
    요청_속도: 500
  3. 다음 명령을 실행합니다. 여기서 --file은 API 엔드포인트의 JSON/YAML 형식 목록이 포함된 파일의 이름을 지정하고 --output은 rtapi 에서 생성할 PDF 보고서의 이름을 지정합니다. (2단계에서 설명한 대로 명령줄에서 JSON 입력을 제공할 수 있습니다. --file Endpoints.json을 --data 뒤에 JSON 문자열로 바꿉니다.)

    $ rtapi --파일 엔드포인트.json --출력 보고서.pdf

    터미널에서 ASCII 형식의 메트릭 표를 표시하려면 --output 플래그 대신(또는 추가로) --print 플래그를 포함합니다.

    $ rtapi --파일 엔드포인트.json --인쇄

PDF 보고서 해석

rtapi 가 생성한 PDF 보고서에는 다음과 같은 응답 지연의 HDR 히스토그램이 포함되어 있습니다( NGINX Controller API 관리 모듈을 사용하여 구성된 NGINX Plus API 게이트웨이에서). Y축은 밀리초 단위의 지연 시간을 보여주고, X축은 주어진 지연 시간 내에 처리된 호출의 비율을 백분율로 표현한 것입니다. (다음 예에서는 공간의 편의를 위해 Y축을 압축했습니다.)

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

NGINX가 어떻게 도움이 될 수 있나요?

API의 지연 시간이 30ms 미만입니까?

우리가 이야기를 나눈 많은 회사와 마찬가지로 여러분의 회사도 그렇지 않을 가능성이 큽니다. 많은 API 게이트웨이와 API 관리 솔루션에서 100ms의 대기 시간은 일반적이며, 500ms도 그리 드문 일은 아닙니다.

NGINX와 NGINX Plus는 업계에서 가장 빠른 API 게이트웨이로, API 성능을 개선하는 데 도움을 드립니다. NGINX Controller와 함께 사용하면 30ms 이내에 API 호출을 라우팅, 인증, 보안, 형성 및 캐싱할 수 있습니다. 자세한 내용을 알아보려면 NGINX 전문가와 상담하고, nginx.com/real-time-api 에서 NGINX가 실시간 API를 향한 여정에 어떻게 도움을 줄 수 있는지 확인하세요.


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."