사용량 한도

Google Calendar API에는 모든 사용자가 공정하게 사용할 수 있도록 할당량이 있습니다. Calendar API를 사용할 때는 다음 세 가지 중요한 제한사항을 고려해야 합니다.

  • API 사용량 할당량: 프로젝트별 및 사용자별로 적용됩니다. 자세한 내용은 Calendar API 사용량 할당량 유형을 참고하세요.

  • 일반 Google Calendar 사용량 한도: Google Calendar API는 Google Workspace 시스템의 전반적인 성능을 보호하기 위해 제한이 있는 공유 서비스입니다. 자세한 내용은 캘린더 사용량 한도 피하기를 참고하세요.

  • 운영 한도: 이 한도는 언제든지 제한될 수 있습니다. 예를 들어 단일 캘린더에 연속으로 쓰려고 하면 발생합니다.

Calendar API 할당량

두 가지 유형의 할당량이 적용됩니다.

  • 프로젝트당 분당: Google Cloud 프로젝트가 1분 동안 수행할 수 있는 요청 수입니다.

  • 프로젝트별 사용자별 분당: 특정 사용자가 Cloud 프로젝트에서 수행할 수 있는 요청 수입니다. 이 한도는 사용자 간에 사용량을 공정하게 분배하는 데 도움이 됩니다.

할당량은 슬라이딩 윈도우를 사용하여 분당 계산됩니다. 1분 동안 분당 할당량을 초과하는 트래픽이 급증하면 평균적으로 사용량이 할당량 내에 유지되도록 다음 기간 동안 비율 제한이 적용됩니다.

다음 표에는 이러한 한도가 자세히 나와 있습니다.

사용량 한도 유형 한도
프로젝트별 분당 요청 10,000개
프로젝트별 사용자별 분당 요청 600개

일일 청구 기준액

프로젝트별 일일 한도는 요금이 청구되기 전에 Google Cloud 프로젝트에서 24시간 동안 사용할 수 있는 최대 요청 수를 정의합니다.

이 기준 미만의 사용량에는 추가 요금이 부과되지 않으며 Google Cloud 계정에 요금이 청구되지 않습니다. 전체 청구 세부정보는 2026년 말에 공유되며, 변경사항이 적용되기 최소 90일 전에 공지가 제공됩니다.

이 일일 기준 한도의 상향 조정은 요청할 수 없습니다.

다음 표에 한도가 자세히 나와 있습니다.

기준 한도 유형 한도
프로젝트별 일일 요청 1,000,000개

자세한 내용은 Google Workspace 상담사 도구 및 API의 표준화된 모델을 참고하세요.

시간 기반 할당량 오류 해결

모든 시간 기반 오류 (X분당 최대 N개의 요청)의 경우 코드가 예외를 포착하고 잘린 지수 백오프를 사용하여 기기에서 과도한 부하가 발생하지 않도록 하는 것이 좋습니다.

지수 백오프는 네트워크 애플리케이션의 표준 오류 처리 전략입니다. 지수 백오프 알고리즘은 요청 간 대기 시간을 기하급수적으로 늘려 최대 백오프 시간까지 요청을 재시도합니다. 요청이 여전히 실패하는 경우 요청이 성공할 때까지 요청 간 지연 시간이 시간이 지남에 따라 증가하는 것이 중요합니다.

예시 알고리즘

지수 백오프 알고리즘이 재시도 간 대기 시간을 최대 백오프 시간까지 늘려서 기하급수적으로 요청을 재시도합니다. 예를 들면 다음과 같습니다.

  1. Google Calendar API에 요청을 전송합니다.
  2. 요청이 실패하면 1 + random_number_milliseconds를 대기한 후 요청을 재시도합니다.
  3. 요청이 실패하면 2 + random_number_milliseconds를 대기한 후 요청을 재시도합니다.
  4. 요청이 실패하면 4 + random_number_milliseconds를 대기한 후 요청을 재시도합니다.
  5. maximum_backoff 시간까지 이를 반복합니다.
  6. 최대 재시도 횟수까지 계속 대기하고 재시도하지만 재시도 간 대기 시간을 늘리지는 않습니다.

각 항목의 의미는 다음과 같습니다.

  • 대기 시간은 min(((2^n)+random_number_milliseconds), maximum_backoff)이며, n은 반복 (요청)할 때마다 1씩 증가합니다.
  • random_number_milliseconds는 1,000밀리초 이하의 임의 숫자입니다. 이렇게 하면 특정 상황에 따라 많은 클라이언트가 동기화되고 모두 한 번에 재시도되어 일련의 동기화된 작업으로 요청을 보내지 않도록 하는 데 도움이 됩니다. random_number_milliseconds 값은 각 재시도 요청 후 다시 계산됩니다.
  • maximum_backoff는 일반적으로 32 또는 64초입니다. 적절한 값은 사용 사례에 따라 다릅니다.

클라이언트는 maximum_backoff 시간에 도달한 후 재시도를 계속할 수 있습니다. 이후 재시도는 백오프 시간을 계속 늘릴 필요가 없습니다. 예를 들어 클라이언트가 maximum_backoff 시간으로 64초를 사용하는 경우 이 값에 도달한 후 클라이언트는 64초마다 재시도할 수 있습니다. 특정 시점에서 클라이언트가 무한정 재시도하지 못하게 해야 합니다.

재시도 간 대기 시간과 재시도 횟수는 사용 사례 및 네트워크 조건에 따라 달라집니다.

가격 책정

Google Calendar API의 모든 표준 사용은 추가 비용 없이 가능합니다. 할당량 요청 한도를 초과하면 2026년 말에 Google Cloud 결제 계정에 요금이 청구될 예정입니다. 자세한 내용은 Google Workspace 상담사 도구 및 API의 표준화된 모델을 참고하세요.

할당량 상향 조정 요청

프로젝트의 리소스 사용량에 따라 할당량 조정을 요청할 수 있습니다. 서비스 계정의 API 호출은 단일 계정을 사용하는 것으로 간주됩니다. 조정된 할당량을 신청해도 승인된다고 보장할 수 없습니다. 할당량 값을 크게 늘리는 할당량 조정 요청의 경우 승인에 더 오랜 시간이 걸릴 수 있습니다.

모든 프로젝트의 할당량이 동일하지는 않습니다. 시간이 지남에 따라 Google Cloud 사용량이 늘어나면 할당량 값을 늘려야 할 수 있습니다. 앞으로 사용량이 현저하게 늘어날 것으로 예상되는 경우 Google Cloud 콘솔의 할당량 및 시스템 한도 페이지에서 사전에 할당량 조정을 요청할 수 있습니다.

자세한 내용은 다음 리소스를 참고하세요.

문제 해결

두 할당량 중 하나를 초과하면 비율 제한이 적용되고 쿼리에 대한 응답으로 403 usageLimits 상태 코드 또는 429 usageLimits 상태 코드가 수신됩니다.

이 경우 다음을 시도해 보세요.

  1. 지수 백오프를 사용하고, 트래픽 패턴을 무작위로 지정하고, 푸시 알림을 사용하는 등 모든 권장사항을 따르세요.

  2. 프로젝트가 성장하고 사용자가 늘어나는 경우 할당량 증가를 요청할 수 있습니다.

  3. 사용자별 할당량 한도에 도달한 경우 다음을 수행할 수 있습니다.

    • 서비스 계정을 사용하는 경우 사용자에게 부하를 할당하거나 여러 서비스 계정 간에 분할합니다.

    • 사용자별 할당량의 증가는 요청할 수 있지만, 일반적으로 애플리케이션이 일반 캘린더 사용량 한도나 운영 한도와 같은 다른 유형의 한도에 도달할 수 있으므로 기본값 이상으로 늘리는 것은 권장되지 않습니다.

  4. 프로덕션 프로젝트와 비슷한 구성이 있는 별도의 테스트 전용 프로젝트를 등록하여 할당량 한도를 테스트합니다. 자세한 내용은 테스트 할당량 한도 처리를 참고하세요.

트래픽 패턴 무작위 지정

캘린더 클라이언트는 여러 클라이언트가 동시에 작업을 실행하여 트래픽 패턴이 급증하는 경향이 있습니다. 예를 들어 캘린더 클라이언트의 일반적인 잘못된 관행은 자정에 전체 동기화를 실행하는 것입니다. 이렇게 하면 거의 확실히 분당 할당량을 초과하게 되어 비율 제한 및 백오프가 발생합니다.

이를 방지하려면 가능한 한 하루 종일 트래픽이 분산되도록 하세요. 클라이언트가 매일 동기화해야 하는 경우 클라이언트가 무작위 시간 (클라이언트마다 다름)을 결정하도록 합니다. 정기적으로 작업을 실행해야 하는 경우 간격을 +/- 25%로 변경합니다. 이렇게 하면 트래픽이 더 균등하게 분산되고 사용자 환경이 훨씬 개선됩니다.

푸시 알림 사용

일반적인 사용 사례는 사용자의 캘린더에서 변경사항이 있을 때마다 작업을 실행하는 것입니다. 여기서 안티 패턴은 관심 있는 모든 캘린더를 반복적으로 폴링하는 것입니다. 이렇게 하면 할당량이 매우 빠르게 소진됩니다. 예를 들어 애플리케이션에 5,000명의 사용자가 있고 각 사용자의 캘린더를 분당 한 번씩 폴링하는 경우 작업을 수행하기 전에도 분당 할당량이 최소 5,000개 필요합니다.

서버 측 애플리케이션은 푸시 알림을 등록할 수 있으며, 이를 통해 관심 있는 일이 발생하면 알림을 받을 수 있습니다. 이러한 설정은 더 많은 작업이 필요하지만 할당량을 훨씬 더 효율적으로 사용할 수 있으며 더 나은 사용자 환경을 제공합니다. 알림을 받을 eventType를 지정해야 합니다. 자세한 내용은 푸시 알림을 참고하세요.

서비스 계정을 사용한 적절한 할당

애플리케이션이 도메인 전체 위임을 사용하여 요청을 실행하는 경우 기본적으로 가장하는 사용자가 아닌 서비스 계정에 '프로젝트당 사용자당 분당' 할당량에 따라 요금이 청구됩니다. 즉, 서비스 계정이 여러 사용자의 캘린더에서 작동하더라도 할당량이 소진되고 속도 제한이 적용될 수 있습니다.

quotaUser URL 매개변수 (또는 x-goog-quota-user HTTP 헤더)를 사용하여 요금이 청구되는 사용자를 표시하면 이 문제를 방지할 수 있습니다. 할당량 계산에만 사용됩니다. 자세한 내용은 사용자별 요청 제한을 참고하세요.

할당량 한도 처리 테스트

애플리케이션이 실제로 할당량 한도에 도달하는 상황을 원활하게 처리할 수 있도록 (예: 지수 백오프를 사용한 재시도) 하고 사용자에게 발생할 수 있는 잠재적인 방해 요소를 최소화하려면 실제 환경에서 시나리오를 테스트하는 것이 좋습니다.

실제 애플리케이션 사용에 방해되지 않도록 테스트하려면 Google Cloud 콘솔에 테스트 전용 프로젝트를 별도로 등록한 다음 프로덕션 프로젝트와 유사한 방식으로 OAuth 동의 화면을 구성하는 것이 좋습니다. 그런 다음 이 프로젝트에 대해 인위적으로 낮은 할당량 한도를 설정하고 애플리케이션의 동작을 관찰할 수 있습니다.