사용량 한도

Google Chat API는 공유 서비스이므로 모든 사용자가 공정하게 사용할 수 있도록 하고 Google Workspace의 전반적인 성능을 보호하기 위해 할당량과 제한을 적용합니다.

할당량을 초과하면 429: Too many requests HTTP 상태 코드 응답을 받게 됩니다. 채팅 백엔드에서 추가 비율 제한을 확인할 때도 동일한 오류 응답이 생성될 수 있습니다. 이 오류가 발생하면 지수 백오프 알고리즘을 사용하고 나중에 다시 시도해야 합니다. 다음 표에 나열된 분당 할당량을 넘지 않는 한, 하루에 수행할 수 있는 요청 수에는 제한이 없습니다.

Chat API 메서드에는 공간별 할당량과 프로젝트별 할당량이라는 두 가지 할당량 유형이 적용됩니다.

공간당 할당량

스페이스별 할당량은 특정 스페이스의 쿼리 비율을 제한하며, 각 할당량에 나열된 Chat API 메서드를 호출하는 해당 스페이스에서 작동하는 모든 Chat 앱 간에 공유됩니다.

다음 표에서는 공간당 쿼리 한도를 자세히 설명합니다.

공간당 할당량

Chat API 메서드

제한 (60초당,
스페이스의 모든 Chat 앱 간에 공유됨)

분당 읽기

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

900

분당 쓰기

media.upload

spaces.delete

spaces.patch

spaces.messages.create (수신 웹훅에도 적용)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.create

spaces.messages.reactions.delete

60

프로젝트당 할당량

프로젝트별 할당량은 Google Cloud 프로젝트의 쿼리 비율을 제한하므로 각 할당량에 지정된 Chat API 메서드를 호출하는 단일 채팅 앱에 적용됩니다.

다음 표에는 프로젝트별 쿼리 한도가 자세히 나와 있습니다. 할당량 페이지에서도 이 한도를 확인할 수 있습니다.

프로젝트당 할당량

Chat API 메서드

한도 (60초당)

분당 메시지 쓰기 수

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3,000

분당 메시지 읽기

spaces.messages.get

spaces.messages.list

3,000

분당 멤버십 쓰기 수

spaces.members.create

spaces.members.delete

300

분당 멤버십 읽기

spaces.members.get

spaces.members.list

3,000

분당 스페이스 쓰기

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

분당 공간 읽기

spaces.get

spaces.list

spaces.findDirectMessage

3,000

분당 연결 쓰기 수

media.upload

600

분당 연결 읽기

spaces.messages.attachments.get

media.download

3,000

분당 반응 쓰기

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

분당 반응 읽기

spaces.messages.reactions.list

3,000

추가 사용량 한도

GROUP_CHAT 또는 SPACE 유형의 스페이스를 만들 때는 추가 할당량 한도가 있습니다 (spaces.create 또는 spaces.setup 메서드 사용). 이러한 유형의 스페이스는 분당 35개 미만, 시간당 210개 미만으로 만들어야 합니다. DIRECT_MESSAGE 유형의 공간에는 이러한 추가 할당량 한도가 적용되지 않습니다.

동일한 공간을 타겟팅하는 API의 대규모 초당 쿼리 수 (QPS)는 할당량 페이지에 표시되지 않는 추가 내부 한도를 트리거할 수 있습니다.

시간 기반 할당량 오류 해결

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

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

예시 알고리즘

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

  1. Google Chat 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초마다 재시도할 수 있습니다. 특정 시점이 되면 클라이언트가 무기한 재시도되지 않도록 해야 합니다.

재시도 사이의 대기 시간과 재시도 횟수는 사용 사례와 네트워크 조건에 따라 다릅니다.

프로젝트당 할당량 상향 요청

프로젝트의 리소스 사용량에 따라 할당량 증가를 요청할 수 있습니다. 서비스 계정을 통한 API 호출은 단일 계정을 사용하는 것으로 간주됩니다. 할당량 증가를 신청한다고 해서 반드시 승인되는 것은 아닙니다. 할당량을 크게 늘리면 승인되기까지 시간이 더 걸릴 수 있습니다.

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

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