이 페이지에서는 Cloud Run 기본 자동 확장 동작을 설명합니다. 확장 동작을 더 세부적으로 제어해야 하는 경우 대체 확장 옵션인 수동 확장에 관해 알아보세요.
기본적으로 각 Cloud Run 버전은 모든 수신 요청, 이벤트 또는 CPU 사용률을 처리하는 데 필요한 인스턴스 수에 맞게 자동으로 확장됩니다.
버전에 트래픽이 수신되지 않으면 기본적으로 버전이 인스턴스 0개로 축소됩니다. 하지만 원하는 경우 이 기본값을 변경하여 최소 인스턴스 설정을 사용해 이 인스턴스를 유휴 또는 '준비' 상태로 유지하도록 지정할 수 있습니다. 요청 외의 CPU를 사용하는 경우 최소 인스턴스를 1
로 설정해야 합니다.
수신 요청 비율, 이벤트 비율 또는 CPU 사용률 외에도 예약된 인스턴스 수가 다음의 영향을 받습니다.
- 기존 인스턴스의 평균 CPU 사용률로 예약된 인스턴스를 1분 이상 60% CPU 사용률로 유지하는 것이 목표입니다.
- 1분 간의 최대 동시 실행과 비교한 현재의 요청 동시 실행
- 최대 인스턴스 수 설정
- 최소 인스턴스 수 설정
Cloud Run 자동 확장 처리는 이를 주기적으로 평가합니다.
인스턴스 기반 결제 및 자동 확장
Cloud Run 서비스에 인스턴스 기반 결제를 구성하는 경우 0 동작으로 축소하거나 0 동작부터 확장하는 것에 유의해야 합니다.
0부터의 확장. 0부터의 확장은 요청에 의해서만 트리거될 수 있으므로 요청을 처리하지 않는 서비스는 0부터 확장할 수 없습니다. 이러한 워크로드의 경우 최소 인스턴스를 0보다 크게 설정하거나 0으로 축소한 후 처리를 다시 시작하도록 설계에 'wake-up 요청'을 포함할 수 있습니다.
0으로 확장 CPU가 0%인 인스턴스가 없는 경우 모든 CPU 사용량을 살펴보면 0으로 축소되지 않습니다. 즉, 인스턴스가 요청을 처리 중인지 확인해야만 1에서 0으로 축소할 수 있습니다.
최대 인스턴스 정보
비용 관리 목적으로 또는 서비스에서 사용하는 다른 리소스와의 호환성을 높이기 위해 시작 가능한 총 인스턴스 수를 제한해야 할 수 있습니다. 예를 들면 Cloud Run 서비스가 동시에 열려 있는 연결을 일정한 개수만 처리할 수 있는 데이터베이스와 상호작용하는 경우가 있습니다.
최대 인스턴스 설정을 사용하여 최대 인스턴스 수 설정에 설명된 대로 동시에 시작할 수 있는 총 인스턴스 수를 제한할 수 있습니다.
최대 인스턴스 수 초과
일반적인 상황에서는 수신 트래픽 로드를 처리하기 위해 새 인스턴스를 만들어 버전을 수평 확장합니다. 하지만 최대 인스턴스 한도를 설정하면 경우에 따라 수신 트래픽 로드를 처리하기에 인스턴스가 부족할 수 있습니다. 이 경우 수신 요청은 다음과 같이 큐에 추가됩니다(대기 상태).
요청은 이 서비스의 컨테이너 인스턴스 평균 시작 시간의 최대 3.5배 또는 10초 중 더 큰 값만큼 대기합니다.
이 기간 동안 인스턴스가 요청의 처리를 완료하면 큐에 추가된 대기 중인 요청을 처리하는 데 인스턴스를 사용할 수 있게 됩니다.
이 기간 동안 사용 가능하게 되는 인스턴스가 없으면 429
오류 코드와 함께 요청이 실패합니다.
확장 보증
최대 인스턴스 한도는 버전별 상한이며, 즉 이 버전의 인스턴스 수가 최댓값을 초과하지 않아야 합니다.
정상적인 상황에서 Cloud Run은 모든 수신 요청 또는 이벤트를 처리하기 위해 최대 인스턴스 한도까지 매우 빠르게 확장할 수 있습니다. 하지만 한도를 높게 설정한다고 해서 버전이 특정 시점에 지정된 인스턴스 수까지 수평 확장할 수 있다는 의미는 아닙니다. 예외적인 상황에서 Cloud Run이 모든 고객에게 양호한 서비스를 보장하기 위해 확장을 제한할 수 있습니다.
트래픽 급증으로 인해 최대 인스턴스 초과
빠르게 트래픽이 증가하거나 시스템 유지보수와 같은 일부 경우에는 Cloud Run이 잠시 동안 최대 인스턴스 설정에 지정된 것보다 많은 인스턴스를 만들 수 있습니다. 최대 인스턴스 설정 초과 시 새 인스턴스를 시작하여 기존 인스턴스를 대체하고 진행 중인 요청이 처리를 완료할 수 있도록 유예 기간을 제공할 수 있습니다.
정상적인 운영 상황에서 1주일에 몇 번 정도는 최대 인스턴스 한도가 초과될 수 있습니다. 유예 기간은 일반적으로 최대 15분 또는 요청 제한 시간 설정에 지정된 값까지 지속됩니다. 이러한 추가 인스턴스는 유휴 상태가 된 후 15분 이내에 폐기됩니다.
대체가 많이 필요한 경우 일반적으로 업데이트는 몇 분 또는 몇 시간에 걸쳐 분산되지만 각 교체에는 유예 기간 동안 초과 인스턴스가 있습니다. 최대 인스턴스 값을 초과하는 인스턴스는 일반적으로 구성된 최대 인스턴스 한도의 두 배 미만이지만, 갑작스러운 대규모 트래픽 급증에는 훨씬 더 커질 수 있습니다.
부하 테스트에서는 최대 인스턴스 설정을 초과하는 더 많은 인스턴스가 발생하는 데, 이는 시스템이 지속적인 로드 패턴을 가진 기존 워크로드의 용량을 보존하기 위해 트래픽 급증의 처리 위치를 변경할 수 있기 때문입니다.
서비스가 이 일시적인 동작을 감당할 수 없으면 안전성이 보장되는 여유를 고려하여 최대 인스턴스 값을 더 낮게 설정해야 할 수 있습니다.
트래픽 분할
최대 인스턴스 한도가 각 버전의 한도이기 때문에 서비스가 여러 버전 간에 트래픽을 분할하는 경우 서비스의 총 인스턴스 수가 버전별 최대 인스턴스 수를 초과할 수 있습니다. 이러한 상황은 인스턴스 수 측정항목에서 확인할 수 있습니다.
배포
트래픽의 100%를 제공하도록 새 버전을 배포하는 경우 Cloud Run에서 트래픽을 전달하기 전에 새 버전의 인스턴스를 충분히 시작합니다. 이렇게 하면 특히 높은 수준의 트래픽을 처리할 때 새 버전 배포가 요청 지연 시간에 미치는 영향이 줄어듭니다. 최대 인스턴스 한도가 각 버전의 한도이기 때문에 배포 중 서비스의 총 인스턴스 수가 버전별 최대 인스턴스 수를 초과할 수 있습니다. 이러한 상황은 인스턴스 수 측정항목에서 확인할 수 있습니다.
유휴 인스턴스 및 콜드 스타트 최소화
인스턴스가 모든 요청을 처리하면 Cloud Run은 즉시 인스턴스를 종료하지 않습니다. 콜드 스타트의 영향을 최소화하기 위해 Cloud Run은 일부 인스턴스를 최대 15분 동안 유휴 상태로 유지할 수 있습니다. GPU가 사용 설정된 Cloud Run 리소스는 일부 인스턴스를 최대 10분 동안 유휴 상태로 유지할 수 있습니다. 이러한 인스턴스는 갑작스러운 트래픽 급증이 발생할 경우 요청을 처리할 수 있습니다.
예를 들어 인스턴스는 요청 처리를 완료한 후 다른 요청을 처리해야 할 경우를 대비하여 일정 기간 동안 유휴 상태로 유지될 수 있습니다. 유휴 인스턴스는 열린 데이터베이스 연결과 같은 리소스를 유지할 수 있습니다. 인스턴스 기반 결제를 위해 서비스를 명시적으로 구성하지 않는 한 기본 결제 설정은 요청 기반 결제라는 점에 유의하세요.
유휴 인스턴스를 영구적으로 유지하려면 min-instance
설정을 사용하세요. 이 기능을 사용하면 서비스에서 요청을 적극적으로 처리하지 않는 경우에도 비용이 발생합니다.
자동 확장 및 대기 중인 요청
요청은 이 서비스의 컨테이너 인스턴스 평균 시작 시간의 최대 3.5배 또는 10초 중 더 큰 값만큼 대기합니다.
자동 확장이 지원 서비스에 미치는 영향
인스턴스 수가 자동으로 증가함에 따라 Cloud Run 서비스에서 지원 서비스에 제한을 적용할 수 있습니다. 예를 들어 Cloud SQL에는 API 할당량 한도가 있습니다. 이러한 지원 서비스에 충분한 할당량이 있고 Cloud Run 서비스의 모든 인스턴스에서 들어오는 연결을 처리할 수 있는지 확인합니다. 지원 서비스가 과부하되지 않도록 최대 인스턴스 수를 설정하는 것이 좋습니다.
자동 확장 및 Pub/Sub
푸시 구독을 사용하여 Cloud Run의 Pub/Sub 주제에서 메시지를 사용하는 것이 좋습니다. 푸시된 메시지는 컨테이너에서 HTTP 요청처럼 수신되므로 동일한 자동 확장 동작이 트리거됩니다.
자동 확장 및 여러 컨테이너(사이드카)
Cloud Run은 자동 확장을 위해 인스턴스의 CPU 사용률을 고려하며 여기서 인스턴스의 CPU 사용률은 사용 중인 할당된 CPU의 비율입니다.
컨테이너 수준에서 CPU 한도를 설정할 때 CPU를 할당합니다. 인스턴스당 여러 컨테이너를 사용하는 경우 해당 인스턴스의 실제 CPU 할당량은 각 컨테이너에 설정된 CPU 한도의 합계입니다.
다음 단계
- 다른 확장 옵션에 대해 알아보려면 수동 확장을 참조하세요.
- Cloud Run 서비스의 최대 인스턴스 수를 관리하려면 최대 인스턴스 수 설정을 참조하세요.
- 각 인스턴스에서 처리하는 최대 동시 요청 수를 관리하려면 동시 실행 설정을 참조하세요.
- 동시 실행 설정을 최적화하려면 동시 실행 조정을 위한 개발 팁을 참조하세요.
- 첫 번째 요청에 대한 지연 시간 또는 콜드 스타트를 최소화하기 위해 유휴 인스턴스가 계속 실행되도록 지정하려면
min-instance
를 사용하여 유휴 인스턴스 사용 설정을 참조하세요.