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의 용량과 예상 트래픽에 따라 달라집니다. 일반적인 제한은 초당 호출 수, 분 또는 시간 단위로 설정됩니다. 예를 들어 사용자당 분당 1000건의 호출을 허용할 수 있습니다.
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는 응답 헤더에 속도 제한 정보를 노출하지 않습니다. 속도 제한을 전달하지 않으면 앱이 제한을 초과하고 제한을 받지 않도록 하는 것이 어려워집니다. 속도 제한 정보를 노출하려면 정책 remaining-calls-header-name
및 total-calls-header-name
속성을 사용하여 확장 rate-limit
합니다.
<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 환경을 유지할 수 있습니다.
다음 단계
Dev Proxy