

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 프로덕션에서 모델을 업데이트하기 위한 배포 가드레일
<a name="deployment-guardrails"></a>

배포 가드레일은 프로덕션 환경에서 기계 학습 모델을 업데이트하기 위한 Amazon SageMaker AI Inference의 모델 배포 옵션 세트입니다. 완전 관리형 배포 옵션으로 프로덕션에 있는 현재 모델에서 새 모델로의 전환을 제어할 수 있습니다. 캐너리 및 리니어와 같은 블루/그린 배포의 트래픽 시프팅 모드를 사용하면 업데이트 과정에서 현재 모델에서 새 모델로의 트래픽 시프팅 프로세스를 세밀하게 제어할 수 있습니다. 또한, 자동 롤백과 같이 기본 제공된 보호 기능을 통해 문제를 조기에 파악하고 프로덕션에 심각한 영향을 미치기 전에 자동으로 수정 조치를 취할 수 있습니다.

배포 가드레일에는 다음과 같은 이점이 있습니다.
+ **프로덕션 환경을 업데이트하는 동안 안전하게 배포할 수 있습니다.** 프로덕션 환경으로 회귀 업데이트하면 모델 지연 시간이 증가하고 오류율이 높아지는 등 예상치 못한 다운타임이 발생하므로 비즈니스에 영향을 미칠 수 있습니다. 배포 가드레일은 모범 사례와 기본 제공된 운영 안전 가드레일을 제공하여 이러한 위험을 완화하는 데 도움이 됩니다.
+ **완전 관리형 배포.** SageMaker AI는 이러한 배포의 설정 및 오케스트레이션을 담당하고 이를 엔드포인트 업데이트 메커니즘과 통합합니다. 오케스트레이션, 모니터링 또는 롤백 메커니즘을 구축하고 유지할 필요가 없습니다. SageMaker AI를 활용하여 이러한 배포를 설정 및 오케스트레이션하고 애플리케이션에 ML을 활용하는 데 집중할 수 있습니다.
+ **표시 여부** [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API 또는 Amazon CloudWatch Events([지원되는 엔드포인트](deployment-guardrails-exclusions.md)의 경우)를 통해 배포 진행 상황을 추적할 수 있습니다. SageMaker AI의 이벤트에 대해 자세히 알아보려면 [Amazon SageMaker AI에서 Amazon EventBridge로 보내는 이벤트](automating-sagemaker-with-eventbridge.md)에서 엔드포인트 배포 상태 변경 섹션을 참조하세요. 참고로 엔드포인트가 [제외](deployment-guardrails-exclusions.md) 페이지의 기능 중 하나를 사용하는 경우 CloudWatch Events를 사용할 수 없습니다.

**참고**  
배포 가드레일은 [비동기 추론](async-inference.md) 및 [실시간 추론](realtime-endpoints.md) 엔드포인트 유형에만 적용됩니다.

## 시작하는 방법
<a name="deployment-guardrails-get-started"></a>

프로덕션 환경에서 모델을 업데이트하기 위해 블루/그린 배포와 롤링 배포라는 두 가지 유형의 배포를 지원합니다.
+ [블루/그린 배포](deployment-guardrails-blue-green.md): 업데이트를 통해 기존 플릿(블루 플릿)에서 새 플릿(그린 플릿)으로 트래픽을 시프트할 수 있습니다. 블루/그린 배포는 [다양한 트래픽 시프팅 모드](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-blue-green.html)를 제공합니다. 트래픽 전환 모드는 SageMaker AI가 업데이트가 포함된 새 플릿으로 엔드포인트 트래픽을 라우팅하는 방법을 지정하는 구성입니다. 다음 트래픽 시프팅 모드는 엔드포인트 업데이트 프로세스에 대해 다양한 수준의 제어를 제공합니다.
  + [올앳원스 트래픽 시프팅 사용](deployment-guardrails-blue-green-all-at-once.md)은 모든 엔드포인트 트래픽을 블루 플릿에서 그린 플릿으로 시프팅합니다. 트래픽이 그린 플릿으로 시프팅하면 사전 지정된 Amazon CloudWatch 경보가 설정된 시간(*베이킹 기간*) 동안 그린 플릿을 모니터링하기 시작합니다. 베이킹 기간 동안 경보가 발생하지 않으면 SageMaker AI는 블루 플릿을 종료합니다.
  + [캐너리 트래픽 시프팅 사용](deployment-guardrails-blue-green-canary.md)는 소량의 트래픽(*캐너리*)을 그린 플릿으로 시프팅하고 베이킹 기간 동안 모니터링합니다. 카나리가 그린 플릿에서 성공하면 SageMaker AI는 블루 플릿을 종료하기 전에 나머지 트래픽을 블루 플릿에서 그린 플릿으로 전환합니다.
  + [리니어 트래픽 시프팅 사용](deployment-guardrails-blue-green-linear.md)은 트래픽 시프팅 단계 수와 각 단계에서 시프팅할 트래픽 비율을 훨씬 더 세부적으로 사용자 지정할 수 있는 기능을 제공합니다. 캐너리 시프팅을 사용하면 두 단계로 트래픽을 시프팅할 수 있지만 리니어 시프팅을 사용하면 선형 간격이 *n*단계로 확장됩니다.
+ [롤링 배포 사용](deployment-guardrails-rolling.md): SageMaker AI가 용량을 점진적으로 프로비저닝하고 지정한 배치 크기 단계에 따라 트래픽을 새 플릿으로 전환하므로 엔드포인트를 업데이트할 수 있습니다. 새 플릿의 인스턴스는 새 배포 구성으로 업데이트되며, 베이킹 기간 동안 CloudWatch 경보가 발생하지 않으면 SageMaker AI는 이전 플릿의 인스턴스를 정리합니다. 이 옵션을 사용하면 각 단계에서 시프팅되는 인스턴스 수 또는 용량 비율을 세밀하게 제어할 수 있습니다.

[UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) 및 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API 및 AWS Command Line Interface 명령을 통해 배포를 생성하고 관리할 수 있습니다. 배포 설정 방법에 대한 자세한 내용은 개별 배포 페이지를 참조하세요. 참고로 엔드포인트가 [제외](deployment-guardrails-exclusions.md) 페이지에 나열된 기능 중 하나를 사용하는 경우 배포 가드레일을 사용할 수 없습니다.

배포 가드레일을 사용하는 방법을 보여주는 안내 예제를 따라가려면 캐너리 및 리니어 트래픽 시프팅 모드에 대한 [Jupyter notebook](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-inference-deployment-guardrails) 예제를 참조하세요.

# 자동 롤백 구성 및 모니터링
<a name="deployment-guardrails-configuration"></a>

Amazon CloudWatch 경보는 배포 가드레일에서 베이킹 기간을 사용하기 위한 필수 조건입니다. 엔드포인트를 모니터링할 수 있는 CloudWatch 경보를 설정한 경우에만 배포 가드레일에서 자동 롤백 기능을 사용할 수 있습니다. 지정된 모니터링 기간 동안 경보가 하나라도 발생하면 SageMaker AI는 이전 엔드포인트로 전체 롤백을 시작하여 애플리케이션을 보호합니다. 엔드포인트를 모니터링하도록 CloudWatch 경보를 설정하지 않으면 배포 중에 자동 롤백 기능이 작동하지 않습니다.

Amazon CloudWatch에 대한 자세한 내용은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)의 *Amazon CloudWatch란 무엇입니까?*를 참고하세요.

**참고**  
IAM 실행 역할에 지정한 자동 롤백 경보에 대한 `cloudwatch:DescribeAlarms` 작업을 수행할 권한이 있는지 확인하세요.

## 경보 예제
<a name="deployment-guardrails-configuration-alarm-examples"></a>

시작하는 데 도움이 되도록 CloudWatch 경보의 기능을 보여주는 다음 예제를 제공합니다. 다음 예제를 사용하거나 수정하는 것 외에도 자체 경보를 생성하고 특정 기간 동안 지정된 플릿의 다양한 지표를 모니터링하도록 경보를 구성할 수 있습니다. 경보에 추가할 수 있는 SageMaker AI 지표 및 차원을 더 확인하려면 [Amazon CloudWatch의 Amazon SageMaker AI 지표](monitoring-cloudwatch.md) 섹션을 참조하세요.

**Topics**
+ [기존 플릿과 새 플릿 모두에서 호출 오류를 모니터링합니다.](#deployment-guardrails-configuration-alarm-examples-errors-both)
+ [새 플릿의 모델 지연 시간을 모니터링합니다.](#deployment-guardrails-configuration-alarm-examples-latency-new)

### 기존 플릿과 새 플릿 모두에서 호출 오류를 모니터링합니다.
<a name="deployment-guardrails-configuration-alarm-examples-errors-both"></a>

다음 CloudWatch 경보는 엔드포인트의 평균 오류율을 모니터링합니다. 이 경보를 모든 배포 가드레일의 트래픽 시프팅 유형과 함께 사용하여 기존 플릿과 새 플릿 모두에 대해 전반적인 모니터링을 제공할 수 있습니다. 경보가 발생하면 SageMaker AI는 이전 플릿으로의 롤백을 시작합니다.

기존 플릿과 새 플릿 모두에서 발생하는 호출 오류가 평균 오류율에 영향을 미칩니다. 평균 오류율이 지정된 임계값을 초과하면 경보가 발생합니다. 이 특정 예제는 배포 기간 동안 기존 플릿과 새 플릿 모두에서 4xx 오류(클라이언트 오류)를 모니터링합니다. 또한, `Invocation5XXErrors` 지표를 사용하여 5xx 오류 (서버 오류)를 모니터링할 수도 있습니다.

**참고**  
이 경보 유형의 경우 이전 플릿이 배포 중에 경보를 발생시키면 SageMaker AI가 배포를 종료합니다. 따라서 현재 프로덕션 플릿에서 이미 오류가 발생한 경우 새 플릿의 오류만 모니터링하는 다음 예제 중 하나를 사용하거나 수정하는 것이 좋습니다.

```
#Applied deployment type: all types
{
    "AlarmName": "EndToEndDeploymentHighErrorRateAlarm",
    "AlarmDescription": "Monitors the error rate of 4xx errors",
    "MetricName": "Invocation4XXErrors",
    "Namespace": "AWS/SageMaker",
    "Statistic": "Average",
    "Dimensions": [
        {
            "Name": "EndpointName",
            "Value": <your-endpoint-name>
        },
        {
            "Name": "VariantName",
            "Value": "AllTraffic"
        }
    ],
    "Period": 600,
    "EvaluationPeriods": 2,
    "Threshold": 1,
    "ComparisonOperator": "GreaterThanThreshold",
    "TreatMissingData": "notBreaching"
}
```

이전 예제에서 다음 필드의 값을 확인합니다.
+ `AlarmName` 및 `AlarmDescription`에는 경보에 대해 선택한 이름과 설명을 입력합니다.
+ `MetricName`에는 `Invocation4XXErrors` 값을 사용하여 엔드포인트에서 4xx 오류를 모니터링합니다.
+ `Namespace`에는 `AWS/SageMaker` 값을 입력합니다. 해당하는 경우 사용자 지정 지표를 직접 지정할 수도 있습니다.
+ `Statistic`에는 `Average`을 사용합니다. 즉, 오류율이 임계값을 초과했는지 여부를 계산할 때 경보가 평가 기간 동안의 평균 오류율을 사용합니다.
+ `EndpointName` 차원에는 업데이트 중인 엔드포인트의 이름을 값으로 사용합니다.
+ `VariantName` 차원에는 `AllTraffic` 값을 사용하여 모든 엔드포인트 트래픽을 지정합니다.
+ `Period`에는 `600`을 사용합니다. 이렇게 하면 경보의 평가 기간이 10분으로 설정됩니다.
+ `EvaluationPeriods`에는 `2`을 사용합니다. 이 값은 경보 상태를 확인할 때 가장 최근의 두 평가 기간을 고려하도록 경보에 지시합니다.

### 새 플릿의 모델 지연 시간을 모니터링합니다.
<a name="deployment-guardrails-configuration-alarm-examples-latency-new"></a>

다음 CloudWatch 경보 예제는 배포 중에 새 플릿의 모델 지연 시간을 모니터링합니다. 이 경보를 사용하여 새 플릿만 모니터링하고 기존 플릿은 제외할 수 있습니다. 이 경보는 전체 배포 기간 동안 지속됩니다. 이 예제는 새 플릿에 대해 포괄적인 엔드투엔드 모니터링을 제공하며 새 플릿에 응답 시간 문제가 있는 경우 이전 플릿으로의 롤백을 시작합니다.

CloudWatch는 새 플릿이 트래픽을 수신하기 시작한 후 `EndpointConfigName:{New-Ep-Config}` 차원과 함께 게시하며, 이러한 지표는 배포가 완료된 후에도 지속됩니다.

다음 경보 예제를 모든 배포 유형에 사용할 수 있습니다.

```
#Applied deployment type: all types
{
    "AlarmName": "NewEndpointConfigVersionHighModelLatencyAlarm",
    "AlarmDescription": "Monitors the model latency on new fleet",
    "MetricName": "ModelLatency",
    "Namespace": "AWS/SageMaker",
    "Statistic": "Average",
    "Dimensions": [
        {
            "Name": "EndpointName",
            "Value": <your-endpoint-name>
        },
        {
            "Name": "VariantName",
            "Value": "AllTraffic"
        },
        {
            "Name": "EndpointConfigName",
            "Value": <your-config-name>
    ],
    "Period": 300,
    "EvaluationPeriods": 2,
    "Threshold": 100000, # 100ms
    "ComparisonOperator": "GreaterThanThreshold",
    "TreatMissingData": "notBreaching"
}
```

이전 예제에서 다음 필드의 값을 확인합니다.
+ `MetricName`에는 `ModelLatency` 값을 사용하여 모델의 응답 시간을 모니터링합니다.
+ `Namespace`에는 `AWS/SageMaker` 값을 사용합니다. 해당하는 경우 사용자 지정 지표를 직접 지정할 수도 있습니다.
+ `EndpointName` 차원에는 업데이트 중인 엔드포인트의 이름을 값으로 사용합니다.
+ `VariantName` 차원에는 `AllTraffic` 값을 사용하여 모든 엔드포인트 트래픽을 지정합니다.
+ `EndpointConfigName` 차원의 경우, 이 값은 새 엔드포인트 또는 업데이트된 엔드포인트의 엔드포인트 구성 이름을 참조해야 합니다.

**참고**  
새 플릿 대신 기존 플릿을 모니터링하려면 `EndpointConfigName` 차원을 변경하여 이전 플릿의 구성 이름을 지정할 수 있습니다.

# 블루/그린 배포
<a name="deployment-guardrails-blue-green"></a>

엔드포인트를 업데이트하면 Amazon SageMaker AI는 블루/그린 배포를 자동으로 사용하여 엔드포인트의 가용성을 극대화합니다. 블루/그린 배포에서 SageMaker AI는 업데이트를 통해 새 플릿(그린 플릿)을 프로비저닝합니다. 그러면 SageMaker AI는 트래픽을 기존 플릿(블루 플릿)에서 그린 플릿으로 전환합니다. 그린 플릿이 정해진 평가 기간(베이킹 기간이라고 함) 동안 순조롭게 작동하면 SageMaker AI는 블루 플릿을 종료합니다. 블루/그린 배포의 추가 기능을 통해, 트래픽 시프팅 모드와 자동 롤백 모니터링을 활용하여 중대한 프로덕션 영향으로부터 엔드포인트를 보호할 수 있습니다.

다음 목록에는 SageMaker AI의 블루/그린 배포의 주요 기능이 설명되어 있습니다.
+ **트래픽 시프팅 모드.** 배포 가드레일의 트래픽 시프팅 모드를 사용하면 블루 플릿과 그린 플릿 사이의 트래픽 양과 트래픽 시프팅 단계 수를 제어할 수 있습니다. 이 기능을 사용하면 100% 트래픽 시프팅에 완전히 커밋하지 않고도 그린 플릿의 성능을 점진적으로 평가할 수 있습니다.
+ **베이킹 기간.** 베이킹 기간은 다음 배치 단계로 진행하기 전에 그린 플릿을 모니터링하는 데 필요한 정해진 시간입니다. 베이킹 기간 중에 사전 지정된 알람 중 하나라도 트립되면 모든 엔드포인트 트래픽이 블루 플릿으로 롤백됩니다. 베이킹 기간은 트래픽 변화를 영구적으로 적용하기 전에 업데이트에 대한 확신을 심어주는 데 도움이 됩니다.
+ **자동 롤백.** SageMaker AI가 그린 플릿을 모니터링하는 데 사용하는 Amazon CloudWatch 경보를 지정할 수 있습니다. 업데이트된 코드 문제로 인해 경보가 끊어지는 경우 SageMaker AI는 가용성을 유지하기 위해 블루 플릿으로 자동 롤백을 시작하여 위험을 최소화합니다.

## 트래픽 시프팅 모드.
<a name="deployment-guardrails-blue-green-traffic-modes"></a>

블루/그린 배포의 다양한 트래픽 시프팅 모드를 사용하면 블루 플릿과 그린 플릿 사이의 트래픽 시프팅을 보다 세밀하게 제어할 수 있습니다. 블루/그린 배포에 사용할 수 있는 트래픽 시프팅 모드는 올앳원스, 캐너리, 리니어 모드입니다. 다음 표는 이 옵션을 비교한 내용입니다.

**중요**  
여러 단계의 트래픽 시프팅 또는 베이킹 기간이 포함된 블루/그린 배포의 경우, 플릿으로 가는 트래픽과 관계없이 업데이트 기간 동안 두 플릿 모두에 대해 요금이 청구됩니다. 이것은 모든 트래픽이 한꺼번에 시프팅되고 베이킹 기간이 없으며 업데이트가 진행되는 동안 한 플릿에 대해서만 요금이 청구되는 블루/그린 배포와는 대조적입니다.


| 명칭 | 무엇인가? | 장점 | 단점 | 권장 사항 | 
| --- | --- | --- | --- | --- | 
| 한 번에 모두 | 모든 트래픽이 한 단계로 새 플릿으로 시프팅합니다. | 전체 업데이트 기간을 최소화합니다. | 회귀 업데이트는 트래픽의 100%에 영향을 미칩니다. | 이 옵션을 사용하면 업데이트 시간과 비용을 최소화할 수 있습니다. | 
| 캐너리 | 트래픽은 두 단계로 시프팅합니다. 첫 번째 (캐너리) 단계는 소량의 트래픽을 시프팅하고 두 번째 단계는 나머지 트래픽을 시프팅합니다. | 회귀 업데이트의 폭발 반경을 캐너리 플릿으로만 제한합니다. | 두 플릿 모두 전체 배포에서 병렬로 운영됩니다. | 이 옵션을 사용하면 회귀 업데이트의 폭발 반경을 최소화하는 것과 두 플릿이 작동하는 시간을 최소화하는 것 사이에서 균형을 맞출 수 있습니다. | 
| Linear | 트래픽 중 정해진 양이 미리 지정된 수의 동일한 간격의 단계로 시프팅합니다. | 트래픽을 여러 단계로 시프팅하여 회귀 업데이트의 위험을 최소화합니다. | 업데이트 기간과 비용은 단계 수에 비례합니다. | 이 옵션을 사용하면 배포를 여러 단계로 분산하여 위험을 최소화할 수 있습니다. | 

## 시작하기
<a name="deployment-guardrails-blue-green-get-started"></a>

원하는 배포 구성을 지정하면 SageMaker AI가 새 인스턴스 프로비저닝, 기존 인스턴스 종료, 트래픽 전환을 처리합니다. 기존 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) 및 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API 및 AWS Command Line Interface 명령을 통해 배포를 생성하고 관리할 수 있습니다. 참고로 엔드포인트가 [제외](deployment-guardrails-exclusions.md) 페이지에 나열된 기능 중 하나를 사용하는 경우 배포 가드레일을 사용할 수 없습니다. 배포 설정 방법에 대한 자세한 내용은 개별 배포 페이지를 참고하세요.
+ [ 올앳원스 트래픽 시프팅을 사용한 블루/그린 업데이트](deployment-guardrails-blue-green-all-at-once.md)
+ [ 캐너리 트래픽 시프팅을 사용한 블루/그린 업데이트](deployment-guardrails-blue-green-canary.md)
+ [ 리니어 트래픽 시프팅을 사용한 블루/그린 업데이트](deployment-guardrails-blue-green-linear.md)

배포 가드레일을 사용하는 방법을 보여주는 안내 예제를 따라가려면 캐너리 및 선형 트래픽 시프팅 모드에 대한 [Jupyter notebook](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-inference-deployment-guardrails) 예제를 참고하세요.

# 올앳원스 트래픽 시프팅 사용
<a name="deployment-guardrails-blue-green-all-at-once"></a>

올앳원스 트래픽 시프팅을 이용하면 블루/그린 배포의 안전 가드레일을 사용하여 엔드포인트 업데이트를 신속하게 롤아웃할 수 있습니다. 이 트래픽 시프팅 옵션을 사용하면 블루/그린 배포의 가용성 보장을 계속 활용하면서 업데이트 기간을 최소화할 수 있습니다. 베이킹 기간 기능은 이전 인스턴스를 종료하기 전에 새 인스턴스의 성능과 기능을 모니터링하여 새 플릿이 제대로 작동하는지 확인할 수 있습니다.

다음 다이어그램은 올앳원스 트래픽 시프팅이 기존 플릿과 새 플릿을 관리하는 방법을 보여줍니다.

![\[트래픽이 이전 플릿에서 새 플릿으로 100% 성공적으로 이동했습니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/deployment-guardrails-blue-green-all-at-once.png)


한번에 트래픽 전환을 사용하는 경우 SageMaker AI는 트래픽의 100%를 새 플릿(그린 플릿)으로 라우팅합니다. 그린 플릿에 트래픽이 들어오기 시작하면 베이킹 기간이 시작됩니다. 베이킹 기간은 미리 지정된 Amazon CloudWatch 경보가 그린 플릿의 성능을 모니터링하기 위해 정한 시간입니다. 베이킹 기간 동안 경보가 울리지 않으면 SageMaker AI는 기존 플릿(블루 플릿)을 종료합니다. 베이킹 기간 중에 경보가 발생하면 자동 롤백이 시작되고 트래픽의 100% 가 다시 블루 플릿으로 이동합니다.

## 사전 조건
<a name="deployment-guardrails-blue-green-all-at-once-prereqs"></a>

올앳원스 트래픽 시프팅을 사용하여 배포를 설정하기 전에 Amazon CloudWatch 경보를 생성하여 엔드포인트에서 지표를 관찰해야 합니다. 베이킹 기간 중에 경보가 하나라도 발생하면 트래픽이 블루 플릿으로 롤백됩니다. 엔드포인트에서 CloudWatch 경보를 설정하는 방법은 필수 조건 페이지 [자동 롤백 구성 및 모니터링](deployment-guardrails-configuration.md)를 참고하세요. CloudWatch 경보에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [Amazon CloudWatch 경보 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)을 참고하세요.

## 올앳원스 트래픽 시프팅 구성
<a name="deployment-guardrails-blue-green-all-at-once-configure"></a>

배포할 준비가 되고 엔드포인트에 대한 CloudWatch 경보를 설정하면 SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API 또는 AWS Command Line Interface의 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 명령을 사용하여 배포를 시작할 수 있습니다.

**Topics**
+ [엔드포인트를 업데이트하는 방법(API)](#deployment-guardrails-blue-green-all-at-once-configure-api-update)
+ [기존의 블루/그린 업데이트 정책(API)으로 엔드포인트를 업데이트하는 방법](#deployment-guardrails-blue-green-all-at-once-configure-api-existing)
+ [엔드포인트를 업데이트하는 방법(CLI)](#deployment-guardrails-blue-green-all-at-once-configure-cli-update)

### 엔드포인트를 업데이트하는 방법(API)
<a name="deployment-guardrails-blue-green-all-at-once-configure-api-update"></a>

다음 예제는 Amazon SageMaker API의 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)를 사용하여 올앳원스 트래픽 시프팅으로 엔드포인트를 업데이트하는 방법을 보여줍니다.

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "BlueGreenUpdatePolicy": {
            "TrafficRoutingConfiguration": {
                "Type": "ALL_AT_ONCE"
            },
            "TerminationWaitInSeconds": 600,
            "MaximumExecutionTimeoutInSeconds": 1800
        },
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                },
            ]
        }
    }
)
```

올앳원스 트래픽 시프팅 옵션을 구성하려면 다음을 수행합니다.
+ `EndpointName`의 경우 업데이트할 기존 엔드포인트의 이름을 사용합니다.
+ `EndpointConfigName`에는 사용할 엔드포인트 구성 이름을 사용합니다.
+ `DeploymentConfig` 및 `BlueGreenUpdatePolicy`의 `TrafficRoutingConfiguration`에서 `Type` 파라미터를 `ALL_AT_ONCE`로 설정합니다. 이렇게 지정하면 배포가 올앳원스 트래픽 시프팅 모드를 사용하게 됩니다.
+ `TerminationWaitInSeconds`에는 `600`을 사용합니다. 이 파라미터는 그린 플릿이 완전히 사용 설정된 후 지정된 시간(초)을 기다린 다음, 블루 플릿의 인스턴스를 종료하도록 SageMaker AI에 지시합니다. 이 예시에서 SageMaker AI는 최종 베이킹 기간이 지난 후 10분간 기다린 후 블루 플릿을 종료합니다.
+ `MaximumExecutionTimeoutInSeconds`에는 `1800`을 사용합니다. 이 파라미터는 시간이 초과되기 전에 배포를 실행할 수 있는 최대 시간을 설정합니다. 위 예제에서는 배포를 완료하는 데 걸리는 시간이 30분으로 제한되어 있습니다.
+ `AutoRollbackConfiguration`의 `Alarms` 필드 내에서 이름을 기준으로 하여 CloudWatch 경보를 추가할 수 있습니다. 사용하려는 각 알람에 대해 `AlarmName: <your-cw-alarm>` 항목을 하나씩 생성합니다.

### 기존의 블루/그린 업데이트 정책(API)으로 엔드포인트를 업데이트하는 방법
<a name="deployment-guardrails-blue-green-all-at-once-configure-api-existing"></a>

[CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) API를 사용하여 엔드포인트를 생성할 때 향후 엔드포인트 업데이트에 재사용할 배포 구성을 선택적으로 지정할 수 있습니다. 이전 UpdateEndpoint API 예제와 동일한 `DeploymentConfig` 옵션을 사용할 수 있습니다. CreateEndpoint API 동작에는 변경 사항이 없습니다. 배포 구성을 지정해도 엔드포인트에서 블루/그린 업데이트가 자동으로 수행되지는 않습니다.

이전 배포 구성을 사용하는 옵션은 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API를 사용하여 엔드포인트를 업데이트할 때 발생합니다. 엔드포인트를 업데이트할 때 `RetainDeploymentConfig` 옵션을 사용하여 엔드포인트를 생성할 때 지정한 배포 구성을 유지할 수 있습니다.

[UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API를 호출할 때는 원래 엔드포인트 구성의 `DeploymentConfig` 옵션을 유지하도록 `RetainDeploymentConfig`를 `True`로 설정하세요.

```
response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    RetainDeploymentConfig=True
)
```

### 엔드포인트를 업데이트하는 방법(CLI)
<a name="deployment-guardrails-blue-green-all-at-once-configure-cli-update"></a>

AWS CLI를 사용하는 경우 다음 예제는 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 명령을 사용하여 블루/그린 배포를 한 번에 시작하는 방법을 보여줍니다.

```
update-endpoint
--endpoint-name <your-endpoint-name> 
--endpoint-config-name <your-config-name> 
--deployment-config '"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "ALL_AT_ONCE"},
    "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800},
    "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'
```

올앳원스 트래픽 시프팅 옵션을 구성하려면 다음을 수행합니다.
+ `endpoint-name`에는 업데이트할 엔드포인트의 이름을 사용합니다.
+ `endpoint-config-name`에는 사용할 엔드포인트 구성 이름을 사용합니다.
+ `deployment-config`에는 [BlueGreenUpdatePolicy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BlueGreenUpdatePolicy.html) JSON 객체를 사용합니다.

**참고**  
JSON 객체를 파일로 저장하려면 *AWS CLI 사용 설명서*의 [AWS CLI 스켈레톤 및 입력 파라미터 생성](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)을 참고하세요.

# 캐너리 트래픽 시프팅 사용
<a name="deployment-guardrails-blue-green-canary"></a>

캐너리 트래픽 시프팅을 사용하면 기존 플릿이 나머지 트래픽을 처리하는 동안 새 플릿에서 엔드포인트 트래픽의 일부를 테스트할 수 있습니다. 이 테스트 단계는 모든 트래픽을 새 플릿으로 옮기기 전에 새 플릿의 기능을 검증하는 안전 가드레일입니다. 블루/그린 배포의 이점은 여전히 남아 있으며, 추가된 캐너리 기능을 통해 새 (그린) 플릿이 트래픽을 100% 처리하기 전에 추론 기능을 제공할 수 있는지 확인할 수 있습니다.

그린 플릿에서 트래픽을 수신하기 위해 켜지는 부분을 캐너리라고 하며, 이 캐너리의 크기를 선택할 수 있습니다. 참고로 캐너리의 크기는 새 플릿 용량의 50% 이하여야 합니다. 베이킹 기간이 끝나고 사전 지정된 Amazon CloudWatch 경보가 발생하지 않으면 나머지 트래픽은 이전(블루) 플릿에서 그린 플릿으로 이동합니다. 업데이트된 모델과 관련된 모든 문제는 캐너리에만 영향을 미치므로 캐너리 트래픽 시프팅은 배포 중에 더 안전하게 배포할 수 있습니다.

다음 다이어그램은 캐너리 트래픽 시프팅이 블루 플릿과 그린 플릿 간의 트래픽 분산을 관리하는 방법을 보여줍니다.

![\[이전 플릿에서 새 플릿으로 시프팅되는 2단계 캐너리 트래픽의 성공적인 시프팅\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/deployment-guardrails-blue-green-canary.png)


SageMaker AI가 그린 플릿을 프로비저닝하면 SageMaker AI는 들어오는 트래픽의 일부(예: 25%)를 카나리로 라우팅합니다. 그러면 베이킹 기간이 시작되며, 이 기간 동안 CloudWatch 경보가 그린 플릿의 성능을 모니터링합니다. 이 기간 동안에는 블루 플릿과 그린 플릿이 모두 부분적으로 활성화되어 트래픽을 수신합니다. 베이킹 기간 중에 경보가 하나라도 발생하면 SageMaker AI가 롤백을 시작하고 모든 트래픽이 블루 플릿으로 돌아옵니다. 알람이 하나도 발생하지 않으면 모든 트래픽이 그린 플릿으로 시프팅하고 최종 베이킹 기간으로 들어갑니다. 경보가 전혀 발생하지 않고 최종 베이킹 기간이 끝나면 그린 플릿이 모든 트래픽을 처리하고 SageMaker AI가 블루 플릿을 종료합니다.

## 사전 조건
<a name="deployment-guardrails-blue-green-canary-prereqs"></a>

캐너리 트래픽 시프팅을 사용하여 배포를 설정하기 전에 Amazon CloudWatch 경보를 생성하여 엔드포인트에서 지표를 모니터링해야 합니다. 베이킹 기간 중에 경보가 활성화되어 있고 알람이 하나라도 발생하면 모든 엔드포인트 트래픽이 블루 플릿으로 롤백됩니다. 엔드포인트에서 CloudWatch 경보를 설정하는 방법은 필수 조건 페이지 [자동 롤백 구성 및 모니터링](deployment-guardrails-configuration.md)를 참고하세요. CloudWatch 경보에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [Amazon CloudWatch 경보 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)을 참고하세요.

## 캐너리 트래픽 시프팅 구성
<a name="deployment-guardrails-blue-green-canary-configure"></a>

배포할 준비가 완료되고 엔드포인트에 대한 Amazon CloudWatch 경보를 설정하면 Amazon SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API 또는 AWS CLI의 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 명령을 사용하여 배포를 시작할 수 있습니다.

**Topics**
+ [엔드포인트를 업데이트하는 방법(API)](#deployment-guardrails-blue-green-canary-configure-api-update)
+ [기존의 블루/그린 업데이트 정책(API)으로 엔드포인트를 업데이트하는 방법](#deployment-guardrails-blue-green-canary-configure-api-existing)
+ [엔드포인트를 업데이트하는 방법(CLI)](#deployment-guardrails-blue-green-canary-configure-cli-update)

### 엔드포인트를 업데이트하는 방법(API)
<a name="deployment-guardrails-blue-green-canary-configure-api-update"></a>

아래의 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API 예제는 캐너리 트래픽 시프팅을 이용하여 엔드포인트를 업데이트하는 방법을 보여줍니다.

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "BlueGreenUpdatePolicy": {
            "TrafficRoutingConfiguration": {
                "Type": "CANARY",
                "CanarySize": {
                    "Type": "CAPACITY_PERCENT",
                    "Value": 30
                },
                "WaitIntervalInSeconds": 600
            },
            "TerminationWaitInSeconds": 600,
            "MaximumExecutionTimeoutInSeconds": 1800
        },
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                }
            ]
        }
    }
)
```

캐너리 트래픽 시프팅 옵션을 구성하려면 다음을 수행합니다.
+ `EndpointName`의 경우 업데이트할 기존 엔드포인트의 이름을 사용합니다.
+ `EndpointConfigName`에는 사용할 엔드포인트 구성 이름을 사용합니다.
+ `DeploymentConfig` 및 `BlueGreenUpdatePolicy`의 `TrafficRoutingConfiguration`에서 `Type` 파라미터를 `CANARY`로 설정합니다. 이렇게 지정하면 배포가 캐너리리 트래픽 시프팅을 사용하게 됩니다.
+ `CanarySize` 필드에서 및 `Type` 및 `Value` 파라미터를 수정하여 캐너리의 크기를 변경할 수 있습니다. `Type`에는 `CAPACITY_PERCENT`를 사용합니다. 이것은 그린 플릿 중에서 캐너리로 사용하고 싶은 비율을 의미합니다. 그런 다음에는 `Value`를 `30`으로 설정합니다. 이 예제에서는 그린 플릿 용량의 30%를 캐너리로 사용합니다. 참고로 캐너리의 크기는 그린 플릿 용량의 50% 이하여야 합니다.
+ `WaitIntervalInSeconds`에는 `600`을 사용합니다. 이 파라미터는 각 간격 시프트 간에 지정된 시간(초)을 기다리도록 SageMaker AI에 지시합니다. 이 간격은 캐너리 베이킹 기간의 지속 시간입니다. 위 예시에서 SageMaker AI는 카나리 시프트 후 10분 동안 기다린 다음, 두 번째이자 마지막 트래픽 전환을 완료합니다.
+ `TerminationWaitInSeconds`에는 `600`을 사용합니다. 이 파라미터는 그린 플릿이 완전히 사용 설정된 후 지정된 시간(초)을 기다린 다음, 블루 플릿의 인스턴스를 종료하도록 SageMaker AI에 지시합니다. 이 예시에서 SageMaker AI는 최종 베이킹 기간이 지난 후 10분간 기다린 후 블루 플릿을 종료합니다.
+ `MaximumExecutionTimeoutInSeconds`에는 `1800`을 사용합니다. 이 파라미터는 시간이 초과되기 전에 배포를 실행할 수 있는 최대 시간을 설정합니다. 위 예제에서는 배포를 완료하는 데 걸리는 시간이 30분으로 제한되어 있습니다.
+ `AutoRollbackConfiguration`의 `Alarms` 필드 내에서 이름을 기준으로 하여 CloudWatch 경보를 추가할 수 있습니다. 사용하려는 각 알람에 대해 `AlarmName: <your-cw-alarm>` 항목을 하나씩 생성합니다.

### 기존의 블루/그린 업데이트 정책(API)으로 엔드포인트를 업데이트하는 방법
<a name="deployment-guardrails-blue-green-canary-configure-api-existing"></a>

[CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) API를 사용하여 엔드포인트를 생성할 때 향후 엔드포인트 업데이트에 재사용할 배포 구성을 선택적으로 지정할 수 있습니다. 이전 UpdateEndpoint API 예제와 동일한 `DeploymentConfig` 옵션을 사용할 수 있습니다. CreateEndpoint API 동작에는 변경 사항이 없습니다. 배포 구성을 지정해도 엔드포인트에서 블루/그린 업데이트가 자동으로 수행되지는 않습니다.

이전 배포 구성을 사용하는 옵션은 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API를 사용하여 엔드포인트를 업데이트할 때 발생합니다. 엔드포인트를 업데이트할 때 `RetainDeploymentConfig` 옵션을 사용하여 엔드포인트를 생성할 때 지정한 배포 구성을 유지할 수 있습니다.

[UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API를 호출할 때는 원래 엔드포인트 구성의 `DeploymentConfig` 옵션을 유지하도록 `RetainDeploymentConfig`를 `True`로 설정하세요.

```
response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    RetainDeploymentConfig=True
)
```

### 엔드포인트를 업데이트하는 방법(CLI)
<a name="deployment-guardrails-blue-green-canary-configure-cli-update"></a>

AWS CLI를 사용하는 경우 다음 예제는 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 명령을 사용하여 블루/그린 배포를 한 번에 시작하는 방법을 보여줍니다.

```
update-endpoint
--endpoint-name <your-endpoint-name>
--endpoint-config-name <your-config-name> 
--deployment-config '"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "CANARY",
    "CanarySize": {"Type": "CAPACITY_PERCENT", "Value": 30}, "WaitIntervalInSeconds": 600},
    "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800},
    "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'
```

캐너리 트래픽 시프팅 옵션을 구성하려면 다음을 수행합니다.
+ `endpoint-name`에는 업데이트할 엔드포인트의 이름을 사용합니다.
+ `endpoint-config-name`에는 사용할 엔드포인트 구성 이름을 사용합니다.
+ `deployment-config`에는 [BlueGreenUpdatePolicy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BlueGreenUpdatePolicy.html) JSON 객체를 사용합니다.

**참고**  
JSON 객체를 파일로 저장하려면 *AWS CLI 사용 설명서*의 [AWS CLI 스켈레톤 및 입력 파라미터 생성](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)을 참고하세요.

# 리니어 트래픽 시프팅 사용
<a name="deployment-guardrails-blue-green-linear"></a>

리니어 트래픽 시프팅을 통해 기존 플릿(블루 플릿)에서 새 플릿(그린 플릿)으로 점진적으로 트래픽을 시프팅할 수 있습니다. 리니어 트래픽 시프팅을 사용하면 트래픽을 여러 단계로 시프팅하여 엔드포인트에 장애가 발생할 가능성을 최소화할 수 있습니다. 이 블루/그린 배포 옵션을 사용하면 트래픽 시프팅을 가장 세밀하게 제어할 수 있습니다.

각 단계에서 활성화할 인스턴스 수 또는 그린 플릿 용량 비율을 선택할 수 있습니다. 각 리니어 단계는 그린 플릿 용량의 10\$150% 사이에 불과해야 합니다. 각 단계에는 사전 지정된 Amazon CloudWatch 경보가 그린 플릿의 지표를 모니터링하는 베이킹 기간이 있습니다. 베이킹 기간이 끝나고 알람이 발생하지 않으면, 그린 플릿의 활성 부분이 계속해서 트래픽을 수신하고 새 단계가 시작됩니다. 베이킹 기간 중에 경보가 하나라도 발생하면 엔드포인트 트래픽 100%가 블루 플릿으로 롤백됩니다.

다음 다이어그램은 리니어 트래픽 시프팅이 트래픽을 블루 및 그린 플릿으로 라우팅하는 방법을 보여줍니다.

![\[이전 플릿에서 새 플릿으로 시프팅되는 3단계 리니어 트래픽의 성공적인 시프팅입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/deployment-guardrails-blue-green-linear.png)


SageMaker AI가 새 플릿을 프로비저닝하면 그린 플릿의 첫 번째 부분이 켜지고 트래픽을 수신합니다. SageMaker AI가 블루 플릿의 같은 크기의 부분을 사용 해제하고 베이킹 기간이 시작됩니다. 경보가 하나라도 발생하면 모든 엔드포인트 트래픽이 블루 플릿으로 롤백됩니다. 베이킹 기간이 끝나면 다음 단계가 시작됩니다. 그린 플릿의 다른 부분이 활성화되어 트래픽을 수신하고, 블루 플릿의 일부가 비활성화되며, 또 다른 베이킹 기간이 시작됩니다. 블루 플릿이 완전히 비활성화되고 그린 플릿이 완전히 활성화되어 모든 트래픽을 수신할 때까지 동일한 프로세스가 반복됩니다. 어느 시점에서든 경보가 울리면 SageMaker AI는 전환 프로세스를 종료하고 트래픽의 100%가 블루 플릿으로 롤백합니다.

## 사전 조건
<a name="deployment-guardrails-blue-green-linear-prereqs"></a>

리니어 트래픽 시프팅을 사용하여 배포를 설정하기 전에 CloudWatch 경보를 생성하여 엔드포인트에서 지표를 모니터링해야 합니다. 베이킹 기간 중에 경보가 활성화되어 있고 알람이 하나라도 발생하면 모든 엔드포인트 트래픽이 블루 플릿으로 롤백됩니다. 엔드포인트에서 CloudWatch 경보를 설정하는 방법은 필수 조건 페이지 [자동 롤백 구성 및 모니터링](deployment-guardrails-configuration.md)를 참고하세요. CloudWatch 경보에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [Amazon CloudWatch 경보 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)을 참고하세요.

## 리니어 트래픽 시프팅 구성
<a name="deployment-guardrails-blue-green-linear-configure"></a>

배포할 준비가 완료되고 엔드포인트에 대한 CloudWatch 경보를 설정하면 Amazon SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API 또는 AWS CLI의 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 명령을 사용하여 배포를 시작할 수 있습니다.

**Topics**
+ [엔드포인트를 업데이트하는 방법(API)](#deployment-guardrails-blue-green-linear-configure-api-update)
+ [기존의 블루/그린 업데이트 정책(API)으로 엔드포인트를 업데이트하는 방법](#deployment-guardrails-blue-green-linear-configure-api-existing)
+ [엔드포인트를 업데이트하는 방법(CLI)](#deployment-guardrails-blue-green-canary-configure-cli-update)

### 엔드포인트를 업데이트하는 방법(API)
<a name="deployment-guardrails-blue-green-linear-configure-api-update"></a>

아래의 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API 예제는 리니어 트래픽 시프팅을 이용하여 엔드포인트를 업데이트하는 방법을 보여줍니다.

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "BlueGreenUpdatePolicy": {
            "TrafficRoutingConfiguration": {
                "Type": "LINEAR",
                "LinearStepSize": {
                    "Type": "CAPACITY_PERCENT",
                    "Value": 20
                },
                "WaitIntervalInSeconds": 300
            },
            "TerminationWaitInSeconds": 300,
            "MaximumExecutionTimeoutInSeconds": 3600
        },
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                }
            ]
        }
    }
)
```

리니어 트래픽 시프팅 옵션을 구성하려면 다음을 수행합니다.
+ `EndpointName`에는 업데이트할 기존 엔드포인트의 이름을 사용합니다.
+ `EndpointConfigName`에는 사용할 엔드포인트 구성 이름을 사용합니다.
+ `DeploymentConfig` 및 `BlueGreenUpdatePolicy`의 `TrafficRoutingConfiguration`에서 `Type` 파라미터를 `LINEAR`로 설정합니다. 이렇게 지정하면 배포가 리니어 트래픽 시프팅을 사용하게 됩니다.
+ `LinearStepSize` 필드에서 및 `Type` 및 `Value` 파라미터를 수정하여 단계의 크기를 변경할 수 있습니다. `Type`에는 `CAPACITY_PERCENT`를 사용합니다. 이것은 그린 플릿 중에서 단계 크기로 사용하고 싶은 비율을 의미합니다. 그런 다음에는 `Value`를 `20`으로 설정합니다. 이 예제에서는 각 트래픽 시프팅 단계에 대해 그린 플릿 용량의 20%를 설정합니다. 리니어 단계 크기를 사용자 지정할 때는 그린 플릿 용량의 10\$150%에 해당하는 단계만 사용해야 한다는 점을 유의해 주세요.
+ `WaitIntervalInSeconds`에는 `300`을 사용합니다. 이 파라미터는 각 트래픽 시프트 간에 지정된 시간(초)을 기다리도록 SageMaker AI에 지시합니다. 이 간격은 각 리니어 단계 사이의 베이킹 기간입니다. 이전 예시에서 SageMaker AI는 각 트래픽 시프팅 사이에 5분을 기다립니다.
+ `TerminationWaitInSeconds`에는 `300`을 사용합니다. 이 파라미터는 그린 플릿이 완전히 사용 설정된 후 지정된 시간(초)을 기다린 다음, 블루 플릿의 인스턴스를 종료하도록 SageMaker AI에 지시합니다. 이 예시에서 SageMaker AI는 최종 베이킹 기간이 지난 후 5분간 기다린 후 블루 플릿을 종료합니다.
+ `MaximumExecutionTimeoutInSeconds`에는 `3600`을 사용합니다. 이 파라미터는 시간이 초과되기 전에 배포를 실행할 수 있는 최대 시간을 설정합니다. 위 예제에서는 배포를 완료하는 데 걸리는 시간이 1시간으로 제한되어 있습니다.
+ `AutoRollbackConfiguration`의 `Alarms` 필드 내에서 이름을 기준으로 하여 CloudWatch 경보를 추가할 수 있습니다. 사용하려는 각 알람에 대해 `AlarmName: <your-cw-alarm>` 항목을 하나씩 생성합니다.

### 기존의 블루/그린 업데이트 정책(API)으로 엔드포인트를 업데이트하는 방법
<a name="deployment-guardrails-blue-green-linear-configure-api-existing"></a>

[CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) API를 사용하여 엔드포인트를 생성할 때 향후 엔드포인트 업데이트에 재사용할 배포 구성을 선택적으로 지정할 수 있습니다. 이전 UpdateEndpoint API 예제와 동일한 `DeploymentConfig` 옵션을 사용할 수 있습니다. CreateEndpoint API 동작에는 변경 사항이 없습니다. 배포 구성을 지정해도 엔드포인트에서 블루/그린 업데이트가 자동으로 수행되지는 않습니다.

이전 배포 구성을 사용하는 옵션은 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API를 사용하여 엔드포인트를 업데이트할 때 발생합니다. 엔드포인트를 업데이트할 때 `RetainDeploymentConfig` 옵션을 사용하여 엔드포인트를 생성할 때 지정한 배포 구성을 유지할 수 있습니다.

[UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API를 호출할 때는 원래 엔드포인트 구성의 `DeploymentConfig` 옵션을 유지하도록 `RetainDeploymentConfig`를 `True`로 설정하세요.

```
response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    RetainDeploymentConfig=True
)
```

### 엔드포인트를 업데이트하는 방법(CLI)
<a name="deployment-guardrails-blue-green-canary-configure-cli-update"></a>

AWS CLI를 사용하는 경우 다음 예제는 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 명령을 사용하여 블루/그린 선형 배포를 한 번에 시작하는 방법을 보여줍니다.

```
update-endpoint
--endpoint-name <your-endpoint-name>
--endpoint-config-name <your-config-name> 
--deployment-config '{"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "LINEAR",
    "LinearStepSize": {"Type": "CAPACITY_PERCENT", "Value": 20}, "WaitIntervalInSeconds": 300},
    "TerminationWaitInSeconds": 300, "MaximumExecutionTimeoutInSeconds": 3600},
    "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'
```

리니어 트래픽 시프팅 옵션을 구성하려면 다음을 수행합니다.
+ `endpoint-name`에는 업데이트할 엔드포인트의 이름을 사용합니다.
+ `endpoint-config-name`에는 사용할 엔드포인트 구성 이름을 사용합니다.
+ `deployment-config`에는 [BlueGreenUpdatePolicy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BlueGreenUpdatePolicy.html) JSON 객체를 사용합니다.

**참고**  
JSON 객체를 파일로 저장하려면 *AWS CLI 사용 설명서*의 [AWS CLI 스켈레톤 및 입력 파라미터 생성](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)을 참고하세요.

# 롤링 배포 사용
<a name="deployment-guardrails-rolling"></a>

엔드포인트를 업데이트할 때 롤링 배포를 지정하여 트래픽을 기존 플릿에서 새 플릿으로 점진적으로 이동할 수 있습니다. 트래픽 이동 단계의 크기를 제어할 수 있을 뿐만 아니라 이전 플릿에서 인스턴스를 종료하기 전에 새 인스턴스에 문제가 있는지 모니터링하는 평가 기간을 지정할 수 있습니다. 롤링 배포를 사용하면 트래픽이 새 플릿으로 이동할 때마다 이전 플릿의 인스턴스가 정리되므로 엔드포인트를 업데이트하는 데 필요한 추가 인스턴스의 양이 줄어듭니다. 이는 수요가 많은 액셀러레이티드 인스턴스에 특히 유용합니다.

롤링 배포는 구성 가능한 배치 크기로 엔드포인트를 업데이트하여 이전 모델 버전 배포를 점차 새 버전으로 대체합니다. 롤링 배포의 트래픽 이동 동작은 블루/그린 배포의 [선형 트래픽 이동 모드와](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-blue-green-linear.html) 비슷하지만 롤링 배포는 블루/그린 배포에 비해 용량 요구 사항이 줄어드는 이점을 제공합니다. 롤링 배포를 사용하면 한 번에 활성화되는 인스턴스 수가 줄어들고 새 플릿에서 업데이트하려는 인스턴스 수를 더 세밀하게 제어할 수 있습니다. 모델이 크거나 인스턴스가 많은 대규모 엔드포인트가 있는 경우 블루/그린 배포 대신 롤링 배포를 사용하는 것을 고려해야 합니다.

다음 목록에는 Amazon SageMaker AI의 롤링 배포의 주요 기능이 설명되어 있습니다.
+ **베이킹 기간.** 베이킹 기간은 다음 배치 단계로 진행하기 전에 새 플릿을 모니터링하는 데 필요한 정해진 시간입니다. 베이킹 기간 중에 사전 지정된 알람 중 하나라도 트립되면 모든 엔드포인트 트래픽이 이전 플릿으로 롤백됩니다. 베이킹 기간은 트래픽 변화를 영구적으로 적용하기 전에 업데이트에 대한 확신을 심어주는 데 도움이 됩니다.
+ **롤링 배치 크기.** 트래픽 이동을 위한 각 배치의 크기 또는 각 일괄 처리에서 업데이트하려는 인스턴스의 수를 세밀하게 제어할 수 있습니다. 이 수치의 범위는 플릿 크기의 5\$1 50% 에 달할 수 있습니다. 배치 크기를 인스턴스 수 또는 플릿의 전체 백분율로 지정할 수 있습니다.
+ **자동 롤백입니다.** SageMaker AI가 새 플릿을 모니터링하는 데 사용하는 Amazon CloudWatch 경보를 지정할 수 있습니다. 업데이트된 코드 문제로 인해 경보가 끊어지는 경우 SageMaker AI는 가용성을 유지하기 위해 이전 플릿으로 자동 롤백을 시작하여 위험을 최소화합니다.

**참고**  
엔드포인트가 [제외](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-exclusions.html) 페이지에 나열된 기능 중 하나를 사용하는 경우 롤링 배포를 사용할 수 없습니다.

## 작동 방식
<a name="deployment-guardrails-rolling-how-it-works"></a>

롤링 배포 중 SageMaker AI는 트래픽을 이전 플릿에서 새 플릿으로 이동하기 위한 인프라를 제공합니다. 이때 모든 새 인스턴스를 한 번에 프로비저닝할 필요가 없습니다. SageMaker AI는 다음 단계를 사용하여 트래픽을 전환합니다.

1. SageMaker AI는 새 플릿에서 첫 번째 인스턴스 배치를 프로비저닝합니다.

1. 트래픽의 일부가 이전 인스턴스에서 새 인스턴스의 첫 번째 배치로 이동합니다.

1. 베이킹 기간이 지난 후 Amazon CloudWatch 경보가 끊기지 않으면 SageMaker AI는 오래된 인스턴스를 배치로 정리합니다.

1. SageMaker AI는 배포가 완료될 때까지 계속해서 인스턴스를 배치로 프로비저닝, 전환 및 정리합니다.

베이킹 기간 중 하나에 알람이 트립되면 트래픽이 지정된 크기의 배치로 이전 플릿으로 롤백됩니다. 또는 경보가 발생한 경우 트래픽의 100% 를 이전 플릿으로 다시 이동하도록 롤링 배포를 지정할 수 있습니다.

다음 다이어그램은 이전 단계에서 설명한 대로 성공적인 롤링 배포의 진행 상황을 보여줍니다.

![\[롤링 배포 트래픽이 이전 플릿에서 새 플릿으로 성공적으로 시프팅되는 단계입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/deployment-guardrails-rolling-diagram.png)


롤링 배포를 생성하려면 원하는 배포 구성만 지정하면 됩니다. 그러면 SageMaker AI가 새 인스턴스 프로비저닝, 기존 인스턴스 종료, 트래픽 전환을 대신 처리합니다. 기존 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) 및 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API 및 AWS Command Line Interface 명령을 통해 배포를 생성하고 관리할 수 있습니다.

## 사전 조건
<a name="deployment-guardrails-prereqs"></a>

롤링 배포를 설정하기 전에 Amazon CloudWatch 경보를 생성하여 엔드포인트에서 지표를 관찰해야 합니다. 베이킹 기간 중에 경보가 하나라도 끊기면 트래픽이 이전 플릿으로 롤백되기 시작합니다. 엔드포인트에서 CloudWatch 경보를 설정하는 방법은 사전 요구 사항 페이지의 [자동 롤백 구성 및 모니터링](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-configuration.html)을 참조하세요. CloudWatch 경보에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [Amazon CloudWatch 경보 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)을 참조하세요.

또한 [제외](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-exclusions.html) 페이지를 검토하여 엔드포인트가 롤링 배포의 요구 사항을 충족하는지 확인하세요.

## 롤링 배치 크기를 결정하세요.
<a name="deployment-guardrails-rolling-batch-size"></a>

엔드포인트를 업데이트하기 전에 트래픽을 새 플릿으로 점진적으로 전환하는 데 사용할 배치 크기를 결정하세요.

롤링 배포의 경우 플릿 용량의 5\$1 50% 에 해당하는 배치 크기를 지정할 수 있습니다. 배치 크기를 크게 선택하면 배포가 더 빨리 완료됩니다. 하지만 업데이트하는 동안에는 엔드포인트에 더 많은 용량이 필요하므로 대략 배치 크기 오버헤드가 발생한다는 점을 염두에 두세요. 더 작은 배치 크기를 선택하면 배포 시간이 더 오래 걸리지만 배포 중에 사용하는 용량이 줄어듭니다.

## 롤링 배포 배포 구성
<a name="deployment-guardrails-rolling-configure"></a>

배포 준비가 되고 엔드포인트에 대한 CloudWatch 경보를 설정했으면 SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API 또는의 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 명령을 사용하여 배포 AWS Command Line Interface 를 시작할 수 있습니다.

**엔드포인트를 업데이트하는 방법**

다음 예시는 Boto3 SageMaker AI 클라이언트의 [update\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/update_endpoint.html) 메서드를 사용하여 롤링 배포로 엔드포인트를 업데이트하는 방법을 보여줍니다.

롤링 배포를 구성하려면 다음 예제와 필드를 사용하세요.
+ `EndpointName`의 경우 업데이트할 기존 엔드포인트의 이름을 사용합니다.
+ `EndpointConfigName`의 경우 사용할 엔드포인트 구성 이름을 사용합니다.
+ `AutoRollbackConfiguration` 객체의 `Alarms` 필드 내에서 이름을 기준으로 CloudWatch 경보를 추가할 수 있습니다. 사용하려는 각 알람에 대해 `AlarmName: <your-cw-alarm>` 항목을 하나씩 생성합니다.
+ `DeploymentConfig` 아래에서 `RollingUpdatePolicy` 객체에 대해 다음 필드를 지정합니다.
  + `MaximumExecutionTimeoutInSeconds` - 전체 배포에 대한 시간 제한. 이 제한을 초과하면 타임아웃이 발생합니다. 이 필드에 지정할 수 있는 최대값은 28800초, 즉 8시간입니다.
  + `WaitIntervalInSeconds` - SageMaker AI가 새 플릿의 각 배치에 대한 경보를 모니터링하는 베이킹 기간의 길이입니다.
  + `MaximumBatchSize` - 사용하려는 배치의 `Value`(인스턴스 수 또는 플릿의 전체 비율)과 `Type` 또는 각 배치의 크기를 지정합니다.
  + `RollbackMaximumBatchSize` - 이 객체를 사용하여 경보가 발생한 경우에 대비한 롤백 전략을 지정합니다. 사용하려는 배치의 `Type`(인스턴스 수 또는 플릿의 전체 비율)과 `Value` 또는 각 배치의 크기를 지정합니다. 이러한 필드를 지정하지 않거나 값을 엔드포인트의 100%로 설정하는 경우 SageMaker AI는 블루/그린 롤백 전략을 사용하고 경보가 끊기면 모든 트래픽을 이전 플릿으로 롤백합니다.

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                },
            ]
        },
        "RollingUpdatePolicy": { 
            "MaximumExecutionTimeoutInSeconds": number,
            "WaitIntervalInSeconds": number,
            "MaximumBatchSize": {
                "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default),
                "Value": number
            },
            "RollbackMaximumBatchSize": {
                "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default),
                "Value": number
            },
        }  
    }
)
```

엔드포인트를 업데이트한 후에는 롤링 배포 상태를 확인하고 엔드포인트의 상태를 확인하는 것이 좋습니다. SageMaker AI 콘솔에서 엔드포인트의 상태를 검토하거나 [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API를 사용하여 엔드포인트의 상태를 검토할 수 있습니다.

`DescribeEndpoint` API가 반환한 `VariantStatus` 객체에서 `Status` 필드는 엔드포인트의 현재 배포 또는 운영 상태를 알려줍니다. 가능한 상태와 그 의미에 대한 자세한 내용은 [ProductionVariantStatus](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariantStatus.html)를 참조하세요.

롤링 배포를 시도했는데 엔드포인트의 상태가 `UpdateRollbackFailed`라면 다음 섹션의 문제 해결 도움말을 참조하세요.

## 장애 처리
<a name="deployment-guardrails-rolling-failures"></a>

롤링 배포가 실패하고 자동 롤백도 실패하는 경우 엔드포인트는 `UpdateRollbackFailed`의 상태 그대로 유지될 수 있습니다. 이 상태는 서로 다른 엔드포인트 구성이 엔드포인트 뒤의 인스턴스에 배포되고 엔드포인트는 기존 엔드포인트 구성과 새 엔드포인트 구성이 혼합된 상태로 서비스된다는 것을 의미합니다.

[UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API를 다시 호출하여 엔드포인트를 정상 상태로 되돌릴 수 있습니다. 원하는 엔드포인트 구성 및 배포 구성 (롤링 배포, 블루/그린 배포 또는 둘 다 선택 안 함) 을 지정하여 엔드포인트를 업데이트하세요.

[DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API를 호출하여 엔드포인트의 상태를 다시 확인할 수 있으며, 이는 `VariantStatus` 객체에 `Status` 필드로 반환됩니다. 업데이트가 성공하면 엔드포인트의 `Status`는 `InService`로 돌아갑니다.

# 제외
<a name="deployment-guardrails-exclusions"></a>

블루/그린 배포 또는 롤링 배포를 수행할 경우, 새 엔드포인트 구성의 변형 이름은 이전 엔드포인트 구성과 동일해야 합니다. 현재는 엔드포인트가 배포 가드레일과 호환되지 않게 하는 기능 기반 제외 항목도 있습니다. 엔드포인트에서 다음 기능 중 하나를 사용하는 경우에는 엔드포인트에서 배포 가드레일을 사용할 수 없으며, 엔드포인트가 모든 트래픽이 한꺼번에 이동하고 최종 베이킹 기간이 없는 블루/그린 배포를 사용하는 상태로 되돌아갑니다.
+ Marketplace 컨테이너
+ Inf1(추론 기반) 인스턴스를 사용하는 엔드포인트

롤링 배포를 실행하면 기능 기반 제외 항목이 추가됩니다.
+ 서버리스 추론 엔드포인트
+ 다변량 추론 엔드포인트