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

기본적으로 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

커스텀 목표 구성

구성 제한 내에서 특정 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 사이의 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.

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

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

    다음을 바꿉니다.

    • SERVICE: 서비스 이름입니다.

    • CONCURRENCY_TARGET: 동시 실행 사용률의 목표입니다. 0.1~0.95 사이의 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.

  • 목표 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 사이의 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.
    • CONCURRENCY_TARGET: 동시 실행 사용률의 목표입니다. 0.1~0.95 사이의 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.

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 사이의 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.
    • CONCURRENCY_TARGET: 동시 실행 사용률의 목표입니다. 0.1~0.95 사이의 값을 지정합니다. 소수점 이하 두 자리까지만 구성할 수 있습니다.
  3. 다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.

    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

기본값으로 복원

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

gcloud

목표 CPU 사용률목표 동시 실행 사용률을 기본값으로 복원하려면 gcloud beta run services update 명령어를 실행하세요.

  • 목표 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 CLI 또는 YAML을 사용하여 확장 구성을 볼 수 있습니다.

콘솔

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

    Cloud Run으로 이동

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

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

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

gcloud

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

    gcloud run services describe SERVICE

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

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

권장사항

인스턴스 수를 줄여 비용을 최적화하고 과도한 확장을 방지하거나 특정 드라이버에 대응하여 더 적극적으로 확장하여 성능을 개선할 수 있습니다. 워크로드에 가장 적합한 사용률 목표를 결정하려면 다음 전략을 사용하세요.

  • 목표를 조정하기 전에 서비스 확장을 트리거하는 측정항목을 식별합니다. 확장 측정항목을 식별하려면 다음 단계를 따르세요.

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

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

    값이 가장 큰 드라이버가 서비스의 인스턴스 수를 제어하는 드라이버입니다. 다른 드라이버에 우선순위를 부여하거나 더 적극적으로 또는 덜 적극적으로 확장하려면 해당 특정 드라이버의 사용률 목표를 조정합니다.

  • 목표를 점진적으로 조정하고 조정 사이에 몇 분 정도 기다려 성능에 미치는 영향을 관찰합니다.

  • 트래픽 분할을 사용하여 트래픽의 작은 비율을 별도의 버전으로 전달하여 전체 서비스에 출시하기 전에 새 확장 목표를 테스트합니다.

낮은 사용률 목표 정보

사용률 목표를 최솟값인 0.1 (10%)로 낮추면 서비스 확장 방식이 크게 변경됩니다.

낮은 사용률 목표를 설정하면 다음과 같은 이점이 있습니다.

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

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

낮은 사용률 목표를 설정하면 다음과 같은 단점이 있습니다.

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

다음 단계