Azure API Management 속도 제한을 구현하는 방법

속도 제한을 사용하면 사용자 또는 서비스가 지정된 시간 프레임에서 수행할 수 있는 API 호출 수를 제한할 수 있습니다. 속도 제한을 사용하면 공정한 사용을 보장하고 단일 사용자 또는 서비스가 API 리소스를 독점하지 못하도록 방지할 수 있습니다. APIM(Azure API Management)은 API에 대한 속도 제한을 구현하는 편리한 방법을 제공합니다.

Azure API Management 이유는 무엇인가요?

Azure API Management 조직이 외부, 파트너 및 내부 개발자에게 API를 게시하는 데 도움이 되는 강력하고 다양한 클라우드 서비스입니다. API 호출을 보호, 관리 및 크기 조정하기 위한 도구를 제공합니다. 해당 기능 중 하나는 API의 상태 및 안정성을 유지하는 데 유용한 속도 제한을 제어하는 것입니다.

Azure API Management 속도 제한 구성

Azure API Management 정책을 사용하여 속도 제한을 적용합니다. 전역, 제품 또는 API별 범위에서 이러한 정책을 정의할 수 있습니다. 이러한 유연성을 통해 API의 요구 사항 및 사용 패턴에 따라 속도 제한을 조정할 수 있습니다.

속도 제한 구현을 시작하기 전에 속도 제한을 결정합니다. 설정한 제한은 API의 용량과 예상 트래픽에 따라 달라집니다. 일반적인 제한은 초당 호출 수, 분 또는 시간 단위로 설정됩니다. instance 경우 사용자당 분당 1,000건의 호출을 허용할 수 있습니다.

Azure API Management API에 대한 속도 제한을 정의하려면 또는 rate-limit-by-key 정책을 사용합니다rate-limit. 전자는 모든 사용자에 대해 제한을 설정하는 반면, 후자는 식별된 키당 제한(예: 구독 또는 사용자 ID)을 허용합니다.

다음은 호출을 분당 1000으로 제한하는 정책의 예입니다.

<policies>
  <inbound>
    <base />
    <rate-limit calls="1000" renewal-period="60" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

지정된 호출 수를 초과하면 Azure API Management 응답 헤더 및 다시 시도할 수 있는 시기를 나타내는 메시지와 함께 retry-after 429 너무 많은 요청 상태 코드를 보냅니다.

HTTP/1.1 429 Too Many Requests
content-type: application/json
retry-after: 60
    
{
  "statusCode": 429,
  "message": "Rate limit is exceeded. Try again in 60 seconds."
}

응답 헤더에 속도 제한 정보 노출

기본적으로 Azure API Management 응답 헤더에 대한 속도 제한 정보를 노출하지 않습니다. 속도 제한을 전달하지 않으면 앱이 제한을 초과하고 제한을 받는 것을 피하기가 어렵습니다. 속도 제한 정보를 노출하려면 및 total-calls-header-name 속성을 사용하여 rate-limitremaining-calls-header-name 정책을 확장합니다.

<policies>
  <inbound>
    <base />
    <rate-limit calls="1000" renewal-period="60" remaining-calls-header-name="ratelimit-remaining" total-calls-header-name="ratelimit-limit" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

지금 API를 호출할 때 각 응답에는 제한을 초과하기 전에 API가 처리할 수 있는 호출 수를 더 많이 전달하는 및 ratelimit-limit 헤더가 포함됩니다ratelimit-remaining.

요약

Azure API Management 속도 제한을 구현하면 강력하고 확장 가능한 API를 만들 수 있습니다. 속도 제한을 사용하면 API가 사용자에게 안정적이고 효율적으로 서비스를 제공하도록 할 수 있습니다. 핵심은 적절한 균형을 찾는 것입니다. 너무 엄격하며 유용성을 저해할 수 있습니다. 너무 관대하고 API를 압도할 위험이 있습니다. 신중한 계획 및 지속적인 모니터링을 통해 이 균형을 달성하고 정상 API 환경을 유지할 수 있습니다.

다음 단계