FCM을 사용하여 보낸 모든 메시지를 항상 전송하는 것을 목표로 하고 있지만 모든 메시지를 전송하면 전반적인 사용자 환경의 성능이 저하되는 경우도 있습니다. 그 밖에 FCM이 모든 발신자에게 확장 가능한 서비스를 제공하도록 범위를 지정해야 하는 경우도 있습니다. 다음 섹션에 설명된 한도 및 할당량의 유형은 이러한 중요한 요인의 균형을 맞추는 데 도움이 됩니다.
다운스트림 메시지 제한
HTTP v1 API는 다운스트림 메시지에 프로젝트별 분당 할당량을 도입했습니다. 분당 60만 개의 메시지라는 기본 할당량은 시스템의 안정성을 보호하고 급증하는 프로젝트의 영향을 최소화하면서 FCM 개발자의 99% 이상을 지원합니다.
급증하는 트래픽 패턴으로 인해 할당량 초과 오류가 발생할 수 있습니다. 할당량 초과 시나리오에서는 다음 분에 할당량이 다시 채워질 때까지 시스템에서 HTTP 상태 코드 429(QUOTA_EXCEEDED)를 제공합니다. 과부하 상황에서도 429 응답이 반환될 수 있으므로 게시된 권장사항에 따라 429를 처리하는 것이 좋습니다.
다음 사항을 참고하세요.
- 다운스트림 할당량은 요청이 아닌 메시지를 측정합니다.
- 클라이언트 오류(HTTP 상태 코드 400~499)가 계산됩니다(429 제외).
- 할당량은 분 단위로 적용되지만 이러한 시간(분)은 시계 기준으로 계산되지 않습니다.
할당량 모니터링
Google Cloud 콘솔에서 할당량, 사용량, 오류를 확인할 수 있습니다.
- Google Cloud 콘솔로 이동
- API 및 서비스를 선택합니다.
- 표 목록에서 Firebase Cloud Messaging API를 선택합니다.
- 할당량 및 시스템 한도를 선택합니다.
참고: 이 그래프는 할당량 분과 정확하게 시간 정렬되지 않으므로 트래픽이 할당량 미만으로 보일 때 429가 제공될 수 있습니다.
할당량 상향 조정 요청
할당량 상향을 요청하기 전에 다음 사항을 확인하세요.
- 사용량이 연속 5분 이상 할당량의 80% 이상입니다.
- 특히 트래픽이 급증할 때 클라이언트 오류율 5% 미만입니다.
- 대규모 메시지 전송 권장사항을 준수합니다.
이 기준을 충족하는 경우 최대 25%까지 할당량 상향 요청을 제출할 수 있으며 FCM에서는 요청을 처리하기 위해 모든 실질적인 노력을 기울입니다(할당량 상향은 보장되지 않음).
임박한 출시 또는 임시 이벤트로 인해 더 많은 다운스트림 메시징 할당량이 필요한 경우, 최소 15일 전에 할당량을 요청하여 요청을 처리할 수 있는 충분한 시간을 확보해야 합니다. 대규모 요청(분당 메시지 1,800만 개 이상)의 경우 최소 30일 이전에 통지해야 합니다. 출시 및 특별 이벤트 요청에도 클라이언트 오류율 및 권장사항 요구사항이 계속 적용됩니다.
FCM 할당량에 관한 FAQ도 참조하세요.
주제 메시지 한도
주제 구독 추가 또는 삭제 속도는 프로젝트당 3,000QPS로 제한됩니다.
메시지 전송 속도는 팬아웃 제한을 참조하세요.
팬아웃 제한
메시지 팬아웃이란 주제 및 그룹을 타겟팅하거나 알림 작성기를 사용하여 잠재고객 및 사용자 세그먼트를 타겟팅하는 경우와 같이 여러 기기로 메시지를 전송하는 프로세스입니다.
메시지 팬아웃은 즉각적인 프로세스가 아니므로 경우에 따라 여러 개의 팬아웃을 동시에 진행하는 것이 가능합니다. 프로젝트당 동시 메시지 팬아웃 수는 1,000개로 제한되며, 제한 수에 도달하면 일부 진행 중인 팬아웃이 완료될 때까지 추가 팬아웃 요청이 거부되거나 팬아웃 요청이 지연될 수 있습니다.
실제 가능한 팬아웃 속도는 동시에 팬아웃을 요청하는 프로젝트 수의 영향을 받습니다. 개별 프로젝트의 팬아웃 속도 10,000QPS는 드물지 않지만 이 속도는 보장되지 않으며 시스템 전체 부하에 따라 달라집니다. 사용 가능한 팬아웃 용량은 팬아웃 요청이 아닌 프로젝트 간에 분할됩니다. 따라서 프로젝트에 진행 중인 팬아웃이 두 개 있으면 각 팬아웃 속도는 사용 가능한 팬아웃 속도의 절반이 됩니다. 따라서 팬아웃 속도를 최대화하려면 활성 팬아웃을 한 번에 하나만 진행하는 것이 가장 좋습니다.
축소형 메시지 제한
축소형 메시지에 설명된 대로 축소형 메시지는 서로 겹쳐서 축소되도록 설계되었으며, 콘텐츠가 없는 알림입니다. 개발자가 앱에 동일한 메시지를 너무 자주 반복하는 경우에는 사용자 배터리에 미치는 영향을 줄이기 위해 메시지 전송을 지연(제한)합니다.
예를 들어 기기 하나에 새 이메일 동기화 요청을 많이 보내는 경우 기기가 더 낮은 평균 속도로 동기화할 수 있도록 다음 이메일 동기화 요청이 몇 분 지연될 수 있습니다. 이 제한은 사용자가 느끼는 배터리 영향을 제한하기 위한 목적으로만 수행됩니다.
사용 사례에 높은 버스트 전송 패턴이 필요한 경우에는 비축소형 메시지를 선택하는 것이 좋습니다. 이러한 메시지의 경우 배터리 소모를 줄이기 위해 메시지에 콘텐츠를 포함시켜야 합니다.
축소형 메시지를 기기 하나당 앱별로 메시지 20개로 제한하고 3분마다 메시지 1개를 다시 채웁니다.
단일 기기에 대한 최대 메시지 속도
Android의 경우 단일 기기에 메시지를 분당 최대 240개, 시간당 5,000개 전송할 수 있습니다. 이렇게 기준점이 높은 이유는 사용자가 채팅에서 빠르게 상호작용할 때와 같이 단기간에 트래픽이 급증하도록 허용하기 위해서입니다. 이 한도는 전송 로직 오류로 인해 의도치 않게 기기의 배터리가 방전되는 것을 방지합니다.
iOS에서는 비율이 APN 한도를 초과하면 오류가 반환됩니다.