기본적으로 Cloud Run은 CPU와 동시 실행의 사용률 타겟을 모두 60% 로 설정하여 높은 성능을 위해 최적화하고 모든 수신 요청을 처리하기 위해 인스턴스 수를 자동으로 확장합니다. 하지만 일부 사용 사례에서는 CPU만과 같은 사용할 확장 요소를 구성하고 사용률에 대한 맞춤 타겟을 설정하는 기능이 필요할 수 있습니다.
Cloud Run은 서비스의 확장 동작을 더 세밀하게 관리할 수 있는 확장 제어 기능을 제공하므로 요구사항에 따라 워크로드 확장에 대해 정보에 입각한 결정을 내릴 수 있습니다. 다음 맞춤 사용률 타겟을 구성할 수 있습니다.
- CPU 기반 확장의 목표 사용률
- 동시 실행 기반 확장의 목표 사용률
확장 제어를 사용하면 서비스의 비용을 최적화하고 예측 가능성을 개선할 수 있습니다. Cloud Run 서비스의 기본 자동 확장 동작에 대한 자세한 내용은 Cloud Run 서비스의 인스턴스 자동 확장 정보를 참고하세요.
구성 제한사항
커스텀 확장 타겟에는 다음과 같은 제한이 적용됩니다.
| 확장 드라이버 | 기본 % | 최소 구성 가능한 비율 | 최대 구성 가능한 비율 |
|---|---|---|---|
CPU target utilization |
60% | 10% | 90% |
Concurrency target utilization |
60% | 10% | 95% |
맞춤 타겟 구성
구성 한도 내에서 특정 CPU 및 동시 실행 사용률 목표를 구성하여 워크로드의 비용을 최적화하거나 성능을 개선하도록 맞춤 사용률 목표를 정의합니다.
구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.
맞춤 동시성 타겟을 구성하거나 CPU 기반 확장을 사용 중지해도 적응형 동시성 조정 (ACT)은 활성 상태로 유지됩니다. 자세한 내용은 인스턴스 자동 확장 정보를 참고하세요.
새 버전을 배포할 때 Google Cloud 콘솔, gcloud CLI, YAML 또는 Terraform을 사용하여 확장 제어를 구성할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Cloud Run 서비스 페이지로 이동합니다.
새 서비스를 구성하는 경우 컨테이너 배포를 클릭하여 서비스 만들기 페이지를 표시합니다.
기존 서비스를 구성하는 경우 서비스를 클릭하여 서비스 세부정보 페이지를 연 다음 확장 탭을 클릭합니다.
서비스 확장 섹션을 찾습니다. 자동 확장이 선택되어 있는지 확인합니다. 자동 확장 요소 맞춤설정 섹션을 펼쳐 다음 사용률 타겟을 구성합니다.
대상 CPU 사용률을 구성하려면 CPU 사용률을 클릭하고
10~90값을 입력합니다.목표 동시 실행 사용률을 구성하려면 동시 요청 사용률을 클릭하고
10~95값을 입력합니다.각 활용률 구성에서 완료를 클릭합니다.
새 서비스의 경우 만들기를 클릭합니다. 차이점 확인 및 재배포를 클릭한 다음 기존 서비스의 경우 변경사항 배포를 클릭합니다.
gcloud
gcloud run services update 명령어를 실행하여 지정된 버전의 대상 CPU 사용률 및 대상 동시 실행 사용률 값을 업데이트합니다.
타겟 CPU 사용률을 업데이트하려면 다음 명령어를 실행합니다.
gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET
다음을 바꿉니다.
SERVICE를 서비스 이름으로 바꿉니다.
CPU_TARGET: CPU 사용률의 타겟입니다.
0.1~0.90사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다.
타겟 동시 실행 활용률을 업데이트하려면 다음 명령어를 실행합니다.
gcloud run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET
다음을 바꿉니다.
SERVICE를 서비스 이름으로 바꿉니다.
CONCURRENCY_TARGET: 동시 실행 사용률의 타겟입니다. `0.1` ~ `0.95` 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.
타겟 CPU와 동시 실행 사용률을 모두 업데이트하려면 다음 명령어를 실행합니다.
gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET \ --scaling-concurrency-target=CONCURRENCY_TARGET
다음을 바꿉니다.
- SERVICE를 서비스 이름으로 바꿉니다.
- CPU_TARGET: CPU 사용률의 타겟입니다.
0.1~0.90사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다. - CONCURRENCY_TARGET: 동시 실행 사용률의 타겟입니다. `0.1` ~ `0.95` 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.
YAML
새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.
gcloud run services describe SERVICE --format export > service.yaml
타겟 CPU 및 동시 실행 사용률을 업데이트하려면
run.googleapis.com/scaling-cpu-target및run.googleapis.com/scaling-concurrency-target속성을 추가합니다.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: 'CPU_TARGET' run.googleapis.com/scaling-concurrency-target: 'CONCURRENCY_TARGET'
다음을 바꿉니다.
- SERVICE를 서비스 이름으로 바꿉니다.
- CPU_TARGET: CPU 사용률의 타겟입니다.
0.1~0.90사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다. - CONCURRENCY_TARGET: 동시 실행 사용률의 타겟입니다. `0.1` ~ `0.95` 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.
다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.
gcloud run services replace service.yaml
gcloud run services replace명령어는service.yaml파일이 있는 경우 이를 사용하도록 기본 설정됩니다.
Terraform
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
Terraform 구성에서 다음을google_cloud_run_v2_service 리소스에 추가합니다.resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
scaling {
cpu_utilization = CPU_TARGET
concurrency_utilization = CONCURRENCY_TARGET
}
containers {
image = "IMAGE_URL"
}
}
}
다음을 바꿉니다.
- SERVICE를 서비스 이름으로 바꿉니다.
- REGION: Google Cloud 리전(예:
europe-west1) - CPU_TARGET: CPU 사용률의 타겟입니다.
0.1~0.90사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다. - CONCURRENCY_TARGET: 동시 실행 사용률의 타겟입니다. `0.1` ~ `0.95` 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.
IMAGE_URL: 컨테이너 이미지에 대한 참조(예:us-docker.pkg.dev/cloudrun/container/hello:latest). Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL은LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG형식을 따릅니다.
확장 제어 사용 중지
CPU 사용률 또는 동시성 사용률 타겟 중 하나를 사용 중지할 수 있지만 둘 다 사용 중지할 수는 없습니다. 확장 드라이버 하나는 항상 활성 상태여야 합니다. 확장 제어를 선택 해제하려면 사용 중지하는 대신 기본 사용률 값을 복원하세요. 확장 드라이버를 사용 중지하면 Cloud Run에서 확장 결정을 내릴 때 해당 측정항목을 무시합니다.
새 버전을 배포할 때 Google Cloud 콘솔, gcloud CLI, YAML 또는 Terraform을 사용하여 확장 제어를 사용 중지할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Cloud Run 서비스 페이지로 이동합니다.
서비스를 클릭하여 서비스 세부정보 페이지를 연 다음 확장 탭을 클릭합니다.
서비스 확장 섹션을 찾습니다. 자동 확장이 선택되어 있는지 확인합니다. 자동 확장 요소 맞춤설정 섹션을 펼칩니다.
CPU로만 확장하려면 동시 요청 사용률 옆에 있는 삭제 아이콘을 클릭하고 목표 CPU 사용률 값이 누락된 경우 값을 입력합니다.
동시 실행으로만 확장하려면 CPU 사용률 옆에 있는 삭제 아이콘을 클릭하고 대상 동시 실행 사용률 값이 누락된 경우 값을 입력합니다.
각 활용률 구성에서 완료를 클릭합니다.
새 서비스의 경우 만들기를 클릭합니다. 차이점 확인 및 재배포를 클릭한 다음 기존 서비스의 경우 변경사항 배포를 클릭합니다.
gcloud
gcloud run services update 명령어를 실행하여 대상 CPU 사용률 또는 대상 동시 실행 사용률을 사용 중지할 수 있습니다.
CPU로만 확장하려면 다음 명령어를 실행하여 동시성 타겟을 사용 중지합니다.
gcloud run services update SERVICE --scaling-concurrency-target=disabled
SERVICE를 서비스 이름으로 바꿉니다.
동시 실행으로만 확장하려면 다음 명령어를 실행하여 CPU 타겟을 사용 중지합니다.
gcloud run services update SERVICE --scaling-cpu-target=disabled
SERVICE를 서비스 이름으로 바꿉니다.
YAML
새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.
gcloud run services describe SERVICE --format export > service.yaml
CPU로만 확장하려면
run.googleapis.com/scaling-concurrency-target속성을disabled로 설정하여 동시 실행 대상을 사용 중지하세요.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-concurrency-target: disabled
SERVICE를 서비스 이름으로 바꿉니다.
동시 실행으로만 확장하려면
run.googleapis.com/scaling-cpu-target속성을disabled로 설정하여 CPU 타겟을 사용 중지합니다.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: disabled
SERVICE를 서비스 이름으로 바꿉니다.
다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.
gcloud run services replace service.yaml
gcloud run services replace명령어는service.yaml파일이 있는 경우 이를 사용하도록 기본 설정됩니다.
Terraform
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
Terraform 구성에서 다음을google_cloud_run_v2_service 리소스에 추가합니다.CPU로만 확장하려면
concurrency_utilization을0로 설정하여 동시 실행 타겟을 사용 중지하세요.resource "google_cloud_run_v2_service" "default" { name = "SERVICE" location = "REGION" template { scaling { cpu_utilization = CPU_TARGET concurrency_utilization = 0 } containers { image = "IMAGE_URL" } } }다음을 바꿉니다.
- SERVICE를 서비스 이름으로 바꿉니다.
- REGION: Google Cloud 리전(예:
europe-west1) - CPU_TARGET: CPU 사용률의 타겟입니다.
0.1~0.90사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다. IMAGE_URL: 컨테이너 이미지에 대한 참조(예:us-docker.pkg.dev/cloudrun/container/hello:latest). Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL은LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG형식을 따릅니다.
동시 실행으로만 확장하려면
cpu_utilization을0로 설정하여 CPU 타겟을 사용 중지합니다.resource "google_cloud_run_v2_service" "default" { name = "SERVICE" location = "REGION" template { scaling { cpu_utilization = 0 concurrency_utilization = CONCURRENCY_TARGET } containers { image = "IMAGE_URL" } } }다음을 바꿉니다.
- SERVICE를 서비스 이름으로 바꿉니다.
- REGION: Google Cloud 리전(예:
europe-west1) - CONCURRENCY_TARGET: 동시 실행 사용률의 타겟입니다. `0.1` ~ `0.95` 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.
IMAGE_URL: 컨테이너 이미지에 대한 참조(예:us-docker.pkg.dev/cloudrun/container/hello:latest). Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL은LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG형식을 따릅니다.
기본값으로 복원
대상 CPU 또는 대상 동시성 사용률 값을 기본값으로 복원하면 Cloud Run에서 맞춤 타겟 대신 기본 사용률 타겟인 60% 를 사용합니다. 새 버전을 배포할 때 Google Cloud 콘솔, gcloud CLI, YAML 또는 Terraform을 사용하여 확장 제어를 기본값으로 복원할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Cloud Run 서비스 페이지로 이동합니다.
서비스를 클릭하여 서비스 세부정보 페이지를 연 다음 확장 탭을 클릭합니다.
서비스 확장 섹션을 찾습니다. 자동 확장이 선택되어 있는지 확인합니다. 자동 확장 요소 맞춤설정 섹션을 펼쳐 다음 사용률 타겟을 구성합니다.
CPU 사용률 및 동시 요청 사용률 타겟이 삭제된 경우 신호 추가를 클릭하여 각 타겟을 다시 추가합니다.
CPU 사용률 및 동시 요청 사용률 값을
60로 설정합니다.각 활용률 구성에서 완료를 클릭합니다.
새 서비스의 경우 만들기를 클릭합니다. 차이점 확인 및 재배포를 클릭한 다음 기존 서비스의 경우 변경사항 배포를 클릭합니다.
gcloud
gcloud run services update 명령어를 실행하여 대상 CPU 사용률과 대상 동시 실행 사용률을 기본값으로 복원합니다.
타겟 CPU 사용률을 기본값으로 복원하려면 다음 명령어를 실행합니다.
gcloud run services update SERVICE --scaling-cpu-target=default
SERVICE를 서비스 이름으로 바꿉니다.
타겟 동시 실행 사용률을 기본값으로 복원하려면 다음 명령어를 실행합니다.
gcloud run services update SERVICE --scaling-concurrency-target=default
SERVICE를 서비스 이름으로 바꿉니다.
타겟 CPU 사용률과 타겟 동시 실행을 모두 기본값으로 복원하려면 다음 명령어를 실행합니다.
gcloud run services update SERVICE --scaling-cpu-target=default \ --scaling-concurrency-target=default
SERVICE를 서비스 이름으로 바꿉니다.
YAML
새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.
gcloud run services describe SERVICE --format export > service.yaml
CPU 및 동시 실행 사용률을 기본 타겟으로 복원하려면 YAML 파일에서
run.googleapis.com/scaling-cpu-target및run.googleapis.com/scaling-concurrency-target속성을 삭제합니다.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: # Remove the scaling target annotations to restore defaults ...
SERVICE를 서비스 이름으로 바꿉니다.
다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.
gcloud run services replace service.yaml
gcloud run services replace명령어는service.yaml파일이 있는 경우 이를 사용하도록 기본 설정됩니다.
Terraform
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
Terraform 구성에서 다음을google_cloud_run_v2_service 리소스에 추가합니다.CPU 및 동시 실행 사용률을 기본 타겟으로 복원하려면 Terraform 구성의 scaling 블록에서 cpu_utilization 및 concurrency_utilization 속성을 삭제하세요.
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
scaling {
# Remove the scaling target attributes to restore defaults
}
containers {
image = "IMAGE_URL"
}
}
}
다음을 바꿉니다.
- SERVICE를 서비스 이름으로 바꿉니다.
- REGION: Google Cloud 리전(예:
europe-west1) IMAGE_URL: 컨테이너 이미지에 대한 참조(예:us-docker.pkg.dev/cloudrun/container/hello:latest). Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL은LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG형식을 따릅니다.
확장 구성 보기
Google Cloud 콘솔이나 gcloud CLI를 사용하여 확장 구성을 볼 수 있습니다.
콘솔
Google Cloud 콘솔에서 Cloud Run 서비스 페이지로 이동합니다.
서비스를 클릭하여 서비스 세부정보 패널을 엽니다.
스케일링 탭을 클릭하여 스케일링 설정을 확인합니다.
gcloud
다음 명령어를 사용하세요.
gcloud run services describe SERVICE
SERVICE를 서비스 이름으로 바꿉니다.
반환된 구성에서 대상 CPU 사용률: 및 대상 동시성 사용률: 설정 값을 찾습니다.
권장사항
인스턴스 수를 줄여 비용을 최적화하고 과도한 확장 방지할 수 있으며, 특정 드라이버에 대응하여 더 적극적으로 확장하여 성능을 개선할 수도 있습니다. 워크로드의 최적 활용률 타겟을 확인하려면 다음 전략을 사용하세요.
타겟을 조정하기 전에 서비스의 확장 트리거가 되는 측정항목을 파악하세요. 다음 단계에 따라 확장 측정항목을 확인하세요.
Google Cloud 콘솔의 측정항목 탐색기로 이동하여 확장 드라이버의 모니터링 차트를 검토합니다.
run.googleapis.com/scaling/recommended_instances측정항목을 검색하여 선택하고 집계를 집계되지 않음으로 설정하여 확장 드라이버별로 그룹화된 측정항목을 확인합니다.
값이 가장 높은 드라이버가 서비스의 인스턴스 수를 제어합니다. 다른 드라이버가 우선하도록 하거나 더 적극적으로 또는 덜 적극적으로 확장하려면 해당 드라이버의 사용률 타겟을 조정하세요.
적응형 동시성 조정 (ACT)이 확장 드라이버인 경우 1초 CPU 사용률이 개별 인스턴스에서 90% 를 초과하고 Cloud Run이 서비스를 보호하기 위해 요청 동시성을 동적으로 제한하고 있음을 나타냅니다. ACT로 인해 확장되는 것을 방지하려면 CPU 할당을 늘리거나 동시 실행 설정을 조정하세요. 자세한 내용은 인스턴스 자동 확장 정보를 참고하세요.
타겟을 점진적으로 조정하고 조정 사이에 몇 분 정도 기다려 실적에 미치는 영향을 확인합니다.
트래픽 분할을 사용하여 트래픽의 일부를 별도의 버전으로 전달하여 새 확장 목표를 테스트한 후 전체 서비스에 출시하세요.
낮은 사용률 목표 정보
활용률 타겟을 최소값인 0.1 (10%)로 낮추면 서비스 확장 방식이 크게 달라집니다.
사용률 타겟을 낮게 설정하면 다음과 같은 이점이 있습니다.
높은 서비스 가용성: 서비스가 훨씬 일찍 확장되어 지연 시간 발생 없이 갑작스러운 트래픽 급증을 처리할 수 있는 유휴 용량 버퍼를 크게 유지합니다.
인스턴스 수가 적을 때 더 빠른 확장: 사용률이 높은 병목 현상이 발생하기 전에 서비스가 더 안정적으로 확장됩니다.
낮은 사용률 타겟 설정의 단점은 다음과 같습니다.
- 비용 증가 가능성: 현재 부하에 필요한 것보다 더 많은 인스턴스를 실행하여 청구액이 높아집니다.
- 더 자주 확장 결정: 사용률이 낮을 때 Cloud Run의 허용 범위가 낮아지고 확장되기까지 기다리는 시간이 짧아집니다.
다음 단계
- 자동 확장 개념과 동작에 대해 자세히 알아보려면 Cloud Run 서비스의 인스턴스 자동 확장 정보를 참고하세요.
- 다른 확장 옵션에 대해 알아보려면 수동 확장을 참조하세요.
- Cloud Run 서비스의 최대 인스턴스 수를 관리하려면 최대 인스턴스 수 설정을 참조하세요.
- 각 인스턴스에서 처리하는 최대 동시 요청 수를 관리하려면 동시 실행 설정을 참조하세요.
- 동시 실행 설정을 최적화하려면 동시 실행 조정을 위한 개발 팁을 참조하세요.
- 첫 번째 요청에 대한 지연 시간 또는 콜드 스타트를 최소화하기 위해 유휴 인스턴스가 계속 실행되도록 지정하려면
min-instance를 사용하여 유휴 인스턴스 사용 설정을 참조하세요.