서비스의 맞춤 확장 제어 구성

기본적으로 Cloud Run은 CPU와 동시 실행의 사용률 타겟을 60% 로 설정하여 높은 성능을 위해 최적화하고 모든 수신 요청을 처리하기 위해 인스턴스 수를 자동으로 확장합니다. 하지만 일부 사용 사례에서는 CPU만과 같은 사용할 확장 요인을 구성하고 사용률에 대한 맞춤 타겟을 설정하는 기능이 필요할 수 있습니다.

Cloud Run은 서비스의 확장 동작을 더 세밀하게 관리할 수 있는 확장 제어 기능을 제공하므로 요구사항에 따라 워크로드 확장에 대해 정보에 입각한 결정을 내릴 수 있습니다. 기본 사용률 타겟을 유지하여 향상된 확장 동작을 선택하거나 다음 맞춤 사용률 타겟을 구성할 수 있습니다.

  • CPU 기반 확장의 대상 사용률
  • 동시 실행 기반 확장의 목표 사용률

확장 제어를 사용하면 서비스의 비용을 최적화하고 예측 가능성을 개선할 수 있습니다. Cloud Run 서비스의 기본 자동 확장 동작에 대한 자세한 내용은 Cloud Run 서비스의 인스턴스 자동 확장 정보를 참고하세요.

구성 제한사항

커스텀 확장 타겟에는 다음 한도가 적용됩니다.

확장 드라이버 기본 % 최소 구성 가능한 비율 최대 구성 가능한 비율
CPU target utilization 60% 10% 95%
Concurrency target utilization 60% 10% 95%

향상된 확장 동작 선택

Cloud Run의 자동 스케일러는 인스턴스 수가 적은 서비스의 경우에도 구성한 타겟에 긴밀하게 대응합니다. CPU와 동시 실행 모두에 기본 사용률 타겟 60% 를 유지하려는 경우에도 확장 예측 가능성을 개선하기 위해 이 기능을 선택하는 것이 좋습니다.

선택하려면 새 버전을 배포할 때 gcloud CLI 또는 YAML을 사용하면 됩니다.

구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.

gcloud

다음 gcloud beta run services update 명령어를 실행하여 지정된 버전의 대상 CPU 사용률대상 동시 실행 사용률 값을 설정합니다.

gcloud beta run services update SERVICE --scaling-cpu-target=0.6 \
--scaling-concurrency-target=0.6

SERVICE를 서비스 이름으로 바꿉니다.

YAML

  1. 새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. run.googleapis.com/scaling-cpu-targetrun.googleapis.com/scaling-concurrency-target 속성을 추가합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: '0.6'
            run.googleapis.com/scaling-concurrency-target: '0.6'

    SERVICE를 서비스 이름으로 바꿉니다.

  3. 다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.

    gcloud run services replace service.yaml

    gcloud run services replace 명령어는 service.yaml 파일이 있으면 기본적으로 이 파일을 사용합니다.

맞춤 타겟 구성

구성 한도 내에서 특정 CPU 및 동시 실행 사용률 타겟을 구성하여 워크로드의 비용을 최적화하거나 성능을 개선하기 위해 맞춤 사용률 타겟을 정의합니다.

구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.

새 버전을 배포할 때 gcloud CLI 또는 YAML을 사용하여 확장 제어를 구성할 수 있습니다.

gcloud

gcloud beta run services update 명령어를 실행하여 지정된 버전의 대상 CPU 사용률대상 동시 실행 사용률 값을 업데이트합니다.

  • 타겟 CPU 사용률을 업데이트하려면 다음 명령어를 실행합니다.

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET

    다음을 바꿉니다.

    • SERVICE를 서비스 이름으로 바꿉니다.

    • CPU_TARGET: CPU 사용률의 타겟입니다. 0.1~0.95 사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다.

  • 타겟 동시 실행 사용률을 업데이트하려면 다음 명령어를 실행합니다.

    gcloud beta run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET

    다음을 바꿉니다.

    • SERVICE를 서비스 이름으로 바꿉니다.

    • CONCURRENCY_TARGET: 동시 실행 사용률의 타겟입니다. 0.1~0.95 사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다.

  • 타겟 CPU와 동시 실행 활용률을 모두 업데이트하려면 다음 명령어를 실행합니다.

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET \
    --scaling-concurrency-target=CONCURRENCY_TARGET

    다음을 바꿉니다.

    • SERVICE를 서비스 이름으로 바꿉니다.
    • CPU_TARGET: CPU 사용률의 타겟입니다. 0.1~0.95 사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다.
    • CONCURRENCY_TARGET: 동시 실행 사용률의 타겟입니다. 0.1~0.95 사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다.

YAML

  1. 새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. 타겟 CPU 및 동시 실행 사용률을 업데이트하려면 run.googleapis.com/scaling-cpu-targetrun.googleapis.com/scaling-concurrency-target 속성을 추가합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      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.95 사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다.
    • CONCURRENCY_TARGET: 동시 실행 사용률의 타겟입니다. 0.1~0.95 사이의 값을 지정합니다. 소수점 이하 자릿수는 최대 2자리까지만 구성할 수 있습니다.
  3. 다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.

    gcloud run services replace service.yaml

    gcloud run services replace 명령어는 service.yaml 파일이 있으면 기본적으로 이 파일을 사용합니다.

확장 제어 사용 중지

CPU 사용률 또는 동시성 사용률 타겟 중 하나를 사용 중지할 수 있지만 둘 다 사용 중지할 수는 없습니다. 확장 드라이버 하나는 항상 활성 상태여야 합니다. 확장 제어를 선택 해제하려면 사용 중지하는 대신 기본 사용률 값을 복원하세요. 확장 드라이버를 사용 중지하면 Cloud Run에서 확장 결정을 내릴 때 해당 측정항목을 무시합니다.

새 버전을 배포할 때 gcloud CLI 또는 YAML을 사용하여 확장 제어를 사용 중지할 수 있습니다.

gcloud

gcloud beta run services update 명령어를 실행하여 타겟 CPU 사용률 또는 타겟 동시 실행 사용률을 사용 중지할 수 있습니다.

  • CPU로만 확장하려면 다음 명령어를 실행하여 동시성 타겟을 사용 중지합니다.

    gcloud beta run services update SERVICE --scaling-concurrency-target=disabled

    SERVICE를 서비스 이름으로 바꿉니다.

  • 동시 실행으로만 확장하려면 다음 명령어를 실행하여 CPU 타겟을 사용 중지합니다.

    gcloud beta run services update SERVICE --scaling-cpu-target=disabled

    SERVICE를 서비스 이름으로 바꿉니다.

YAML

  1. 새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. CPU로만 확장하려면 run.googleapis.com/scaling-concurrency-target 속성을 disabled로 설정하여 동시 실행 대상 설정을 사용 중지하세요.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-concurrency-target: disabled

    SERVICE를 서비스 이름으로 바꿉니다.

  3. 동시 실행으로만 확장하려면 run.googleapis.com/scaling-cpu-target 속성을 disabled로 설정하여 CPU 타겟을 사용 중지합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: disabled

    SERVICE를 서비스 이름으로 바꿉니다.

  4. 다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.

    gcloud run services replace service.yaml

    gcloud run services replace 명령어는 service.yaml 파일이 있으면 기본적으로 이 파일을 사용합니다.

기본값으로 복원

타겟 CPU 또는 타겟 동시 실행 사용률 값을 기본값으로 복원하면 확장 제어 기능이 선택 해제됩니다. 새 버전을 배포할 때 gcloud CLI 또는 YAML을 사용하여 확장 제어를 기본값으로 복원할 수 있습니다.

gcloud

gcloud beta run services update 명령어를 실행하여 대상 CPU 사용률대상 동시 실행 사용률을 기본값으로 복원합니다.

  • 타겟 CPU 사용률을 기본값으로 복원하려면 다음 명령어를 실행합니다.

    gcloud beta run services update SERVICE --scaling-cpu-target=default

    SERVICE를 서비스 이름으로 바꿉니다.

  • 타겟 동시 실행 사용률을 기본값으로 복원하려면 다음 명령어를 실행합니다.

    gcloud beta run services update SERVICE --scaling-concurrency-target=default

    SERVICE를 서비스 이름으로 바꿉니다.

  • 타겟 CPU 사용률과 타겟 동시 실행을 모두 기본값으로 복원하려면 다음 명령어를 실행합니다.

    gcloud beta run services update SERVICE --scaling-cpu-target=default \
    --scaling-concurrency-target=default

    SERVICE를 서비스 이름으로 바꿉니다.

YAML

  1. 새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. CPU 및 동시 실행 수 사용률을 기본 타겟으로 복원하려면 YAML 파일에서 run.googleapis.com/scaling-cpu-targetrun.googleapis.com/scaling-concurrency-target 속성을 삭제하세요.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          # Remove the scaling target annotations to restore defaults
        ...

    SERVICE를 서비스 이름으로 바꿉니다.

  3. 다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.

    gcloud run services replace service.yaml

    gcloud run services replace 명령어는 service.yaml 파일이 있으면 기본적으로 이 파일을 사용합니다.

확장 구성 보기

gcloud CLI 또는 YAML을 사용하여 확장 구성을 볼 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Cloud Run 서비스 페이지로 이동합니다.

    Cloud Run으로 이동

  2. 서비스를 클릭하여 서비스 세부정보 패널을 엽니다.

  3. 버전 탭을 클릭합니다.

  4. 오른쪽의 세부정보 패널에서 컨테이너 탭에 표시된 자동 확장 측정항목 설정을 봅니다.

gcloud

  1. 다음 명령어를 사용하세요.

    gcloud run services describe SERVICE

    SERVICE를 서비스 이름으로 바꿉니다.

  2. 반환된 구성에서 대상 CPU 사용률:대상 동시 실행 사용률: 설정 값을 찾습니다.

권장사항

인스턴스 수를 줄여 비용을 최적화하고 오버스케일링을 방지할 수 있으며, 특정 드라이버에 대응하여 더 적극적으로 확장하여 성능을 개선할 수도 있습니다. 워크로드의 최적 활용률 타겟을 확인하려면 다음 전략을 사용하세요.

  • 타겟을 조정하기 전에 서비스의 확장을 트리거하는 측정항목을 파악하세요. 다음 단계에 따라 확장 측정항목을 확인하세요.

    1. Google Cloud 콘솔의 측정항목 탐색기로 이동하여 CPU 및 동시 실행 사용률의 모니터링 차트를 검토합니다.

    2. run.googleapis.com/scaling/recommended_instances 측정항목을 검색하여 선택하고 집계집계되지 않음으로 설정하여 확장 드라이버별로 그룹화된 측정항목을 확인합니다.

    값이 가장 높은 드라이버가 서비스의 인스턴스 수를 제어합니다. 다른 드라이버가 우선하도록 하거나 더 적극적이거나 소극적으로 확장하려면 해당 드라이버의 활용률 타겟을 조정하세요.

  • 타겟을 점진적으로 조정하고 조정 사이에 몇 분 정도 기다려 실적에 미치는 영향을 관찰합니다.

  • 트래픽 분할을 사용하여 트래픽의 일부를 별도의 버전으로 전달하여 새 확장 타겟을 테스트한 후 전체 서비스에 출시하세요.

낮은 사용률 목표 정보

사용률 타겟을 최소값인 0.1 (10%)로 낮추면 서비스 확장 방식이 크게 달라집니다.

낮은 사용률 타겟을 설정하면 다음과 같은 이점이 있습니다.

  • 높은 서비스 가용성: 서비스가 훨씬 일찍 확장되어 지연 시간 발생 없이 갑작스러운 트래픽 급증을 처리할 수 있도록 유휴 용량 버퍼를 크게 유지합니다.

  • 인스턴스 수가 적을 때 더 빠른 확장: 사용률이 높은 병목 현상이 발생하기 전에 서비스가 더 안정적으로 확장됩니다.

활용률 목표를 낮게 설정할 때의 단점은 다음과 같습니다.

  • 비용 증가 가능성: 현재 부하에 필요한 것보다 더 많은 인스턴스를 실행하여 청구액이 높아집니다.
  • 더 자주 확장 결정: 사용률이 낮을 때 Cloud Run의 허용 범위가 낮아지고 확장하기 전에 오래 기다리지 않습니다.

다음 단계