기본적으로 Cloud Run 서비스의 최대 인스턴스 수는 다음 관련 할당량 한도 중 가장 낮은 값으로 결정됩니다. 각 리전의 최대 한도는 Cloud Run 서비스의 CPU 및 메모리 구성의 영향을 받습니다. 구체적으로 서비스에 사용할 수 있는 최대 인스턴스 수는 다음 중 최솟값입니다.
- 리전 CPU 할당량을 서비스의 CPU 구성으로 나눈 값
- 리전 메모리 할당량을 서비스의 메모리 구성으로 나눈 값
- 영역 중복성 유무에 관계없이 리전 GPU 할당량을 서비스의 GPU 구성으로 나눈 값
예를 들어 기준 할당량이 vCPU 1,000개 또는 메모리 2,000GiB인 경우 메모리 2GiB 또는 CPU 1개를 사용하는 배포에서 단일 서비스의 최대 인스턴스 수를 1,000개로 지정할 수 있습니다.
이러한 할당량은 Cloud Run 리소스 전반에서 리전의 사용 중인 모든 리소스의 합계로도 계산됩니다. 총 사용량이 이러한 한도 중 하나에 도달하면 확장하거나 새 작업 실행을 시작하지 못할 수 있습니다.
콘솔의 할당량 페이지에서 리전의 리전별 기준 총 CPU, 메모리, GPU 한도를 확인할 수 있습니다.
기준 리전 할당량을 상향 조정하는 방법
Cloud Run 서비스가 배포된 리전에서 CPU, 메모리 또는 GPU의 총 개수를 늘려야 하는 경우 할당량 상향 조정을 요청하면 됩니다.
최대 인스턴스 설정 권장사항
다음 섹션에서는 서비스의 최대 인스턴스 한도 구성에 대한 권장사항을 설명합니다.
이벤트 기반 서비스에 최적화된 최대 인스턴스 값
함수와 같은 이벤트 기반 서비스에서는 수신되는 이벤트에 따라 트래픽이 산발적으로 급증할 수 있습니다. 이러한 서비스에 최적화된 최대 인스턴스 값을 결정하려면 서비스 호출 시간, 예상 평균 호출, 최대 호출 빈도, 호출 실패에 대한 내결함성과 같은 요소를 고려해야 합니다.
일반적으로 최대 인스턴스 값 3으로 시작하여 호출 실패를 모니터링하고 필요에 따라 최대 인스턴스 값을 증가시키는 것이 좋습니다.
모든 인스턴스가 사용 중인 경우의 요청 처리
일반적인 상황에서는 수신 트래픽 로드가 처리되도록 새 인스턴스를 만들어 서비스를 수직 확장합니다. 하지만 최대 인스턴스 한도가 설정되어 있으면 수신 트래픽 로드를 처리하기에 인스턴스가 부족한 경우가 발생할 수 있습니다.
이 시나리오에서 Cloud Run은 새 인바운드 요청을 최대 30초 동안 제공하려고 시도합니다.
- 인스턴스가 이 기간에 요청 처리를 완료하면 새 인바운드 요청을 처리하기 시작할 수 있습니다.
- 사용 가능한 인스턴스가 없으면 요청이 실패합니다.
Cloud Run은 용량을 사용할 수 있을 때까지 이벤트 기반 서비스로 지정된 이벤트를 자동으로 저장합니다.
Cloud Run의 확장 기능을 초과하는 최대 인스턴스 한도
최대 인스턴스 한도를 지정할 때 상한을 지정합니다. 한도를 크게 설정한다고 해서 서비스가 지정한 인스턴스 수로 수직 확장되는 것이 아니며, 특정 시점에 공존할 수 있는 인스턴스의 수가 한도를 초과하지 않아야 함을 의미합니다.
또한 최대 인스턴스 한도를 설정하면 Cloud Run에서 트래픽 수요를 충족하는 데 사용하는 확장 전략이 영향을 받을 수 있습니다. 일반적으로 Cloud Run은 수직 확장하거나 잠재적으로 한도를 초과하지 않고 지정된 한도를 우선적으로 준수합니다.
트래픽 급증 처리
트래픽 급증과 같이 경우에 따라 Cloud Run에서 잠시 동안 지정된 최대 인스턴스 한도보다 더 많은 인스턴스를 만들 수 있습니다. 서비스에서 이 일시적인 동작을 감당할 수 없으면 안전성이 보장되는 요소를 고려하여 최대 인스턴스를 서비스에서 감당할 수 있는 값보다 낮게 설정해야 할 수 있습니다.
배포
새 버전을 배포하면 Cloud Run이 이전 버전에서 새 버전으로 트래픽을 마이그레이션합니다. 버전마다 최대 인스턴스 한도가 개별적으로 설정되므로 배포 후 일정 기간 동안에 지정된 한도를 일시적으로 초과할 수도 있습니다.
예를 들어 서비스의 최대 인스턴스 한도가 5인 경우 일반적인 상황에서는 서비스가 요청을 처리할 때 인스턴스를 최대 5개까지 수직 확장합니다. 새 버전을 배포할 때 새 버전의 자체 최대 인스턴스 한도는 5입니다.
이전 버전에서 이미 처리한 요청은 새 버전을 배포할 때 중단되지 않습니다. 대신 이러한 요청은 계속 진행되며 새 인바운드 요청은 새로 배포된 서비스 버전에서 처리됩니다.
따라서 앞선 예시의 서비스에는 새 버전을 배포한 이후 기간 일정 동안 인스턴스가 최대 10개까지(버전마다 5개) 있을 수 있습니다. 이전 버전의 인스턴스를 종료하는 데 필요한 시간은 인스턴스가 활성 요청 처리를 완료하는 데 필요한 시간에 따라 달라집니다. 이 시간은 적절한 최대 인스턴스 한도를 선택할 때 고려할 추가 요소입니다.