Google Play EMM API는 기본적으로 각 EMM에 대해 쿼리가 60,000개로 제한됩니다.
할당량을 초과하면 Google Play EMM API가 HTTP 429 Too Many Requests
를 반환합니다.
명시된 사용량 한도를 초과하지 않고 사용자에게 최적의 환경을 제공하려면 아래 섹션에 설명된 권장사항 중 일부를 구현하는 것이 좋습니다.
API 사용량 한도 미만을 유지하기 위한 권장사항
Google Play EMM API를 사용할 때 요청을 배포하고 사용량 한도를 초과할 위험을 줄이기 위해 구현할 수 있는 몇 가지 권장사항이 있습니다.
시작 시간 및 간격 무작위 지정
기기를 동시에 동기화하거나 체크인하는 등의 활동으로 인해 요청량이 크게 증가할 수 있습니다. 이러한 활동을 정기적으로 예약된 간격으로 수행하는 대신 간격을 무작위로 지정하여 요청 부하를 분산할 수 있습니다. 예를 들어 각 기기를 24시간마다 동기화하는 대신 23~25시간 동안 무작위로 선택된 기간에 각 기기를 동기화할 수 있습니다. 이렇게 하면 요청 수를 분산할 수 있습니다.
마찬가지로 많은 API 호출을 빠르게 연속적으로 실행하는 일일 작업을 실행하는 경우 모든 기업 고객에게 동시에 대량의 요청이 이루어지는 것을 방지하기 위해 매일 임의의 시간에 작업을 시작하는 것이 좋습니다.
지수 백오프를 사용하여 요청 재시도
여러 API 호출로 구성된 작업을 실행하는 경우 할당량에 도달하면 지수 백오프 전략을 사용하세요. 지수 백오프는 요청을 지수로 재시도하는 알고리즘입니다. 간단한 지수 백오프 구현 흐름의 예는 다음과 같습니다.
- Google Play EMM API에 요청합니다.
HTTP 429
응답을 수신합니다.- 2초 +
random_time
를 기다린 후 요청을 재시도합니다. HTTP 429
응답을 수신합니다.- 4초 +
random_time
를 기다린 후 요청을 재시도합니다. HTTP 429
응답을 수신합니다.- 8초 +
random_time
로 기다린 후 요청을 다시 시도하세요.
random_time
는 일반적으로 -0.5 * 대기 시간에서 +0.5 * 대기 시간 사이의 랜덤 숫자입니다. 요청을 다시 시도할 때마다 새 random_time
를 다시 정의합니다. 사용자 대상 작업을 완료하는 데 필요한 API 호출은 빈도가 높은 일정 (예: 0.5초, 1초, 2초)에 따라 재시도할 수 있습니다.
비율 제한 일괄 프로세스
일괄 프로세스가 할당량에 도달할 때마다 API를 호출하는 사용자 작업의 지연 시간이 증가합니다. 이러한 상황에서는 지수 백오프와 같은 전략이 사용자 작업의 짧은 지연 시간을 유지하는 데 효과적이지 않을 수 있습니다.
API의 사용량 한도에 반복적으로 도달하고 사용자에게 표시되는 작업의 지연 시간이 늘어나지 않도록 하려면 일괄 프로세스에 비율 제한을 사용해 보세요 (Google의 RateLimiter 참조). 비율 제한을 사용하면 API 요청 속도를 조정하여 사용량 한도를 일관되게 유지할 수 있습니다.
예를 들어 기본 속도 제한인 50QPS로 일괄 처리를 시작합니다. API가 오류를 반환하지 않는 한 비율 제한을 천천히 (분당 1%) 늘립니다. 할당량에 도달할 때마다 요청 비율을 20% 줄입니다. 이러한 적응형 접근 방식을 사용하면 사용자 대상 작업의 지연 시간을 줄이면서 요청 비율을 최적화할 수 있습니다.