할당량 구성

이 페이지에서는 API의 할당량을 구성하는 방법을 설명합니다. 단계를 간단히 살펴보면 다음과 같습니다.

  1. gRPC API 구성 파일에 할당량 정보를 추가합니다.
  2. gRPC API 구성 파일을 배포합니다.
  3. 확장 가능 서비스 프록시(ESP)를 배포합니다.

할당량이 있는 기능의 개요는 할당량 정보를 참조하세요.

기본 요건

이 페이지에서는 아래 작업이 이미 완료되었다고 가정합니다.

gRPC API 구성 파일에 할당량 추가

다음 절차에서는 할당량 설정을 위해 gRPC API 구성 파일에 필요한 설정을 추가하는 방법을 설명합니다. 이 페이지에서는 gRPC API 구성 파일을 간단히 api_config.yaml 파일로 지칭하겠습니다.

다음 3개 섹션을 api_config.yaml 파일에 추가합니다.

  • metrics: API 요청 수를 계산하는 명명된 측정항목입니다. 카운터를 설명하는 이름을 지정하세요. 이름은 read-requests 또는 write-requests와 같은 카테고리일 수 있습니다. 또는 특정 메서드에 대한 할당량을 정의할 경우 메서드 이름을 포함할 수 있습니다(예: echo-api/echo_requests).

  • quota.limits: 명명된 측정항목에 적용 가능한 단일 한도를 나타냅니다. 여기에서는 정의한 측정항목의 허용 요청 수를 구성합니다. 현재는 분당, 프로젝트당 한도만 지원됩니다.

  • quota.metric_rules: metric_rule는 메서드를 측정항목에 매핑합니다(다대다). 메서드 요청은 매핑된 측정항목마다 카운터를 할당합니다. 메서드를 측정항목과 연결할 때는 항상 요청에 대한 비용을 지정합니다. 각 메서드 비용을 독립적으로 구성할 수 있습니다. 이를 통해 동일 측정항목에서 메서드별로 서로 다른 속도가 사용될 수 있습니다. 할당량을 복잡하게 구성할 필요가 없는 경우에는 모든 측정항목 비용을 1로 구성할 수 있습니다.

API에서 할당량을 구성하려면 다음 안내를 따르세요.

  1. 텍스트 편집기에서 프로젝트의 api_config.yaml 파일을 엽니다.
  2. 파일의 최상위 수준에서 apis 필드 아래에 metrics 필드를 추가합니다(들여쓰거나 중첩하지 않음).

    metrics:
      - name: "YOUR_METRIC_NAME"
        display_name: "YOUR_METRIC_DISPLAY_NAME"
            value_type: INT64
        metric_kind: DELTA`
    
    • YOUR_METRIC_NAME을 API 요청 카운터를 설명하는 이름으로 바꿉니다.
    • 측정항목을 식별할 수 있도록 YOUR_METRIC_DISPLAY_NAMEEndpoints > 서비스 > 할당량 페이지에 표시된 텍스트로 바꿉니다.
    • value_type 필드는 INT64여야 합니다.
    • metric_kind 필드는 DELTA여야 합니다.
  3. quota 필드를 metrics와 같은 수준에 추가하고 limits 필드를 quota 섹션 내에 중첩해 추가합니다.

    quota:
      limits:
        - name: "YOUR_LIMIT_NAME"
          metric: "YOUR_METRIC_NAME"
          unit: "1/min/{project}"
          values:
            STANDARD: VALUE_FOR_THE_LIMIT
    
    • YOUR_LIMIT_NAME을 한도를 설명하는 이름으로 바꿉니다.
    • YOUR_METRIC_NAME을 이전에 정의된 metric.name으로 바꿉니다.
    • unit 필드는 "1/min/{project}"여야 합니다. 이는 프로젝트당 분 단위 한도의 식별자입니다.
    • values 필드는 STANDARD를 포함해야 합니다.
    • VALUE_FOR_THE_LIMIT를 정수 값으로 바꿉니다. 이 값은 소비자의 Google Cloud 프로젝트와 연결된 애플리케이션이 1분 동안 수행할 수 있는 요청 수입니다.
  4. 원하는 경우 추가 측정항목과 각 측정항목의 한도를 정의합니다.

  5. limits 섹션 다음에 metric_rules 행을 quota 아래로 들여쓰기로 추가합니다. metric_rules 섹션에서 이전에 정의한 측정항목과 메서드를 다음과 같이 연결합니다.

    metric_rules:
      - metric_costs:
          YOUR_METRIC_NAME: YOUR_METRIC_COST
        selector: [METHODS]
    
    • YOUR_METRIC_NAME을 이전에 정의된 metric.name으로 바꿉니다.
    • YOUR_METRIC_COST를 정수로 바꿉니다. 각 요청마다 측정항목의 요청 카운터가 비용으로 지정한 수만큼 증가합니다.
    • selector 필드에는 다음 중 하나를 지정할 수 있습니다.

      • 모든 API의 전체 메서드를 metric_cost로 연결하려면 selector: "*" 사용
      • 한 API의 전체 메서드를 metric_cost로 연결하려면 selector: YOUR_API_NAME.* 사용
      • 한 API의 특정 메서드를 metric_cost로 연결하려면 selector: YOUR_API_NAME.YOUR_METHOD_NAME 사용
  6. api_config.yaml 파일을 저장합니다.

할당량 구성 예

다음 세 가지 예에서는 API에 할당량을 구성하는 방법을 보여줍니다.

다음 예시에서는 metric 필드 구성 방법을 보여줍니다.

metrics:
  # Define a metric for read requests.
  - name: "read-requests"
    display_name: "Read requests"
    value_type: INT64
    metric_kind: DELTA`

다음 예시에서는 quota 섹션 내에서 quotalimits 필드를 구성하는 방법을 보여줍니다.

metrics:
  # Define a metric for read requests.
  - name: "read-requests"
    display_name: "Read requests"
    value_type: INT64
    metric_kind: DELTA
quota:
  limits:
    # Define the limit or the read-requests metric.
    - name: "read-limit"
      metric: "read-requests"
      unit: "1/min/{project}"
      values:
        STANDARD: 1000

다음 예시에서는 limits 섹션 다음에 metrics 행을 구성하는 방법을 보여줍니다.

  metrics:
    # Define a metric for read requests.
    - name: "read-requests"
      display_name: "Read requests"
      value_type: INT64
      metric_kind: DELTA
  quota:
    limits:
      # Define the limit or the read-requests metric.
      - name: "read-limit"
        metric: "read-requests"
        unit: "1/min/{project}"
        values:
          STANDARD: 1000
    metric_rules:
      - metric_costs:
          "read-requests": 1
        selector: *

api_config.yaml 파일 및 ESP 배포

할당량을 적용하려면 다음과 같이 실시해야 합니다.

  1. Endpoints에서 구성을 업데이트하는 Service Management에 api_config.yaml 파일을 배포합니다. 자세한 단계는 Endpoints 구성 배포를 참조하세요.
  2. ESP를 배포합니다. 자세한 단계는 API 백엔드 배포를 참조하세요.