이 페이지에서는 사용한 만큼만 지불하는 Blaze 요금제에 따른 Cloud Functions의 확장 가능한 사용량 기반 한도를 자세히 설명합니다. 이러한 한도는 함수를 Node.js 10 런타임 환경에 배포하는 Firebase 프로젝트에 적용됩니다.
Blaze 요금제는 넉넉한 양의 호출, 컴퓨팅 시간, 인터넷 트래픽이 무료로 제공됩니다. 하지만 함수 배포 시 함수의 컨테이너에 사용되는 저장공간에 대해 소규모 요금이 부과됩니다. 자세한 내용은 Firebase FAQ를 참조하세요.
Firebase의 할당량에는 4가지 영역이 있습니다.
리소스 한도
함수에서 사용할 수 있는 총 리소스 양에 영향을 줍니다.
시간 제한
실행할 수 있는 시간에 영향을 줍니다.
비율 한도
Firebase API를 호출하여 함수를 관리할 수 있는 비율에 영향을 줍니다.
네트워킹 한도
이는 아웃바운드 연결 및 인스턴스 한도에 영향을 미칩니다.
아래에서 다양한 한도 유형에 대해 자세히 설명합니다. 해당하는 경우 Firebase (1세대)와 Firebase (2세대)의 한도 차이를 설명합니다.
리소스 한도
리소스 한도는 함수에서 사용할 수 있는 총 리소스 양에 영향을 줍니다. 리전 범위는 프로젝트별로 적용되며 프로젝트마다 고유한 한도가 유지됩니다.
할당량 | 설명 | 한도(1세대) | 한도(2세대) | 상향 가능성 | 범위 |
---|---|---|---|---|---|
함수 수 | 리전당 배포 가능한 함수의 총 개수 | 1,000 | 1,000에서 배포된 Cloud Run 서비스 수를 뺀 수 | 없음 | 리전별 |
최대 배포 크기 | 단일 함수 배포의 최대 크기 | 소스의 경우 100MB(압축) 소스 및 모듈의 경우 500MB(비압축) |
해당 사항 없음 | 아니요 | 함수당 |
최대 비압축 HTTP 요청 크기 | HTTP 요청에서 HTTP 함수로 전송되는 데이터 | 10MB | 32MB | 아니요 | 호출당 |
최대 비압축 HTTP 응답 크기 | HTTP 응답의 HTTP 함수에서 전송되는 데이터 | 10MB | 스트리밍 응답의 경우 10MB 비 스트리밍 응답의 경우 32MB |
아니요 | 호출당 |
이벤트 기반 함수의 최대 이벤트 크기 | 이벤트에서 백그라운드 함수로 전송되는 데이터 | 10MB | Eventarc 이벤트의 경우 512KB 기존 이벤트의 경우 10MB |
아니요 | 이벤트당 |
최대 함수 메모리 | 각 함수 인스턴스에서 사용할 수 있는 메모리 양 | 8GiB | 32GiB | 아니요 | 함수당 |
최대 프로젝트 메모리 | 프로젝트에서 사용할 수 있는 메모리 양(By)입니다. 1분 동안 함수 인스턴스에서 사용자가 요청한 메모리의 총 합계로 측정됩니다. | 선택한 리전에 따라 다릅니다. 이 한도는 대용량 리전에서 더 높을 수 있으며 최근에 열린 리전의 경우 더 낮을 수 있습니다. | 해당 사항 없음 | 예 | 프로젝트 및 리전별 |
최대 프로젝트 CPU | 프로젝트에서 사용할 수 있는 CPU 양(밀리 vCPU)입니다. 1분 동안 함수 인스턴스에서 사용자가 요청한 CPU의 총 합계로 측정됩니다. | 선택한 리전에 따라 다릅니다. 이 한도는 대용량 리전에서 더 높을 수 있으며 최근에 열린 리전의 경우 더 낮을 수 있습니다. | 해당 사항 없음 | 예 | 프로젝트 및 리전별 |
시간 제한
할당량 | 설명 | 한도(1세대) | 한도(2세대) | 상향 가능성 | 범위 |
---|---|---|---|---|---|
최대 함수 실행 기간 | 강제 종료되기 전에 함수를 실행할 수 있는 최대 시간 | 540초 | HTTP 함수의 경우 60분 이벤트 기반 함수의 경우 9분 |
아니요 | 호출당 |
비율 한도
할당량 | 설명 | 한도(1세대) | 한도(2세대) | 상향 가능성 | 범위 |
---|---|---|---|---|---|
API 호출(READ) | Firebase API를 통해 함수를 설명하거나 나열하는 호출 | 100초당 5,000 | 60초당 1,200 | 1세대 전용 | 프로젝트당(1세대) 리전당(2세대) |
API 호출(WRITE) | Firebase API를 통해 함수를 배포하거나 삭제하는 호출 | 100초당 80 | 60초당 60 | 없음 1 | 프로젝트당(1세대) 리전당(2세대) |
API 호출(CALL) | '호출' API에 대한 호출 | 100초당 16 | 해당 사항 없음 | 없음 2 | 프로젝트당 |
네트워킹 한도
Firebase (2세대) 네트워킹 요청 및 대역폭 한도에 관한 자세한 내용은 네트워킹 한도를 참고하세요.
Firebase (1세대)에는 다음과 같은 네트워킹 제한이 적용됩니다.
- 인스턴스별 초당 아웃바운드 연결 수: 500개 (증가 불가)
- 인스턴스별 초당 아웃바운드 DNS 변환 수: 100 (증가 불가)
확장성
HTTP에서 호출된 Firebase는 수신 트래픽을 처리하기 위해 빠르게 확장되는 반면 백그라운드 함수는 보다 점진적으로 확장됩니다. 함수의 확장 기능은 다음을 포함하여 몇 가지 요인으로 결정됩니다.
- 함수 실행이 완료되는 데 걸리는 시간(단기 실행 함수는 일반적으로 더 많은 동시 요청을 처리하도록 확장 가능)
- 콜드 스타트에서 함수를 초기화하는 데 걸리는 시간
- 함수의 오류율
리전별 부하 및 데이터 센터 용량과 같은 일시적 요인
백그라운드 함수의 추가 할당량
할당량 | 설명 | 한도 | 상향 가능성 | 범위 | 제품 버전 |
---|---|---|---|---|---|
최대 동시 호출 수 | 단일 함수의 최대 동시 호출 수 예: 각 이벤트를 처리하는 데 100초가 걸릴 경우 호출 비율은 초당 평균 30개로 제한됩니다. |
3,000 | 예 | 함수당 | 1세대만 |
최대 호출 비율 | 단일 함수로 처리되는 이벤트의 최대 비율 예: 한 이벤트를 처리하는 데 100ms가 걸릴 경우 동시에 처리되는 요청이 평균 100개여도 호출 비율은 초당 1,000개로 제한됩니다. |
초당 1,000 | 없음 | 함수당 | 1세대만 |
최대 동시 이벤트 데이터 크기 | 단일 함수의 동시 호출에 수신되는 이벤트의 최대 전체 크기 예: 1MB 크기의 이벤트를 처리하는 데 10초가 걸리는 경우 처음 10개의 이벤트 중 하나를 처리 완료될 때까지 11번째 이벤트는 처리되지 않으므로 평균 비율은 초당 이벤트 1개입니다. |
10MB | 없음 | 함수당 | 1세대 및 2세대 |
수신 이벤트의 최대 처리량 | 단일 함수에 수신되는 이벤트의 최대 처리량 예: 이벤트 크기가 1MB인 경우 함수가 100ms 이내에 완료되더라도 호출 비율은 초당 최대 10개입니다. |
초당 10MB | 없음 | 함수당 | 1세대 및 2세대 |
할당량 한도에 도달하는 경우
함수에서 할당된 모든 리소스를 소진하게 되면 할당량이 보충되거나 상향 조정될 때까지 리소스를 사용할 수 없게 됩니다. 즉, 할당량이 보충되거나 상향 조정되기 전에는 내 함수와 동일한 프로젝트의 다른 모든 함수가 작동하지 않을 수도 있습니다. 리소스 중 하나가 할당량을 초과하고 함수를 실행할 수 없는 경우 함수에서 HTTP 500 오류 코드를 반환합니다.
여기에 나온 기본값 이상으로 할당량을 상향 조정하려면 Firebase 할당량 페이지로 이동하여 수정할 할당량을 선택하고 할당량 수정을 클릭합니다. 그런 다음 사용자 정보에 대한 메시지가 표시되면 해당 정보를 입력하고 선택한 각 할당량에 대한 새 할당량 한도를 입력합니다.
Firebase CLI 배포의 할당량 한도
Firebase CLI가 배포하는 각 함수에 다음과 같은 유형의 비율과 시간 제한이 적용됩니다.
- API 호출(READ) - 함수 개수에 관계없이 배포당 호출 1번
- 한도: 100초당 5,000
- API 호출(WRITE) - 함수당 호출 1번
- 한도: 100초당 80
Firebase CLI 참조도 확인하세요.