기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
캐너리 트래픽 시프팅 사용
캐너리 트래픽 시프팅을 사용하면 기존 플릿이 나머지 트래픽을 처리하는 동안 새 플릿에서 엔드포인트 트래픽의 일부를 테스트할 수 있습니다. 이 테스트 단계는 모든 트래픽을 새 플릿으로 옮기기 전에 새 플릿의 기능을 검증하는 안전 가드레일입니다. 블루/그린 배포의 이점은 여전히 남아 있으며, 추가된 캐너리 기능을 통해 새 (그린) 플릿이 트래픽을 100% 처리하기 전에 추론 기능을 제공할 수 있는지 확인할 수 있습니다.
그린 플릿에서 트래픽을 수신하기 위해 켜지는 부분을 캐너리라고 하며, 이 캐너리의 크기를 선택할 수 있습니다. 참고로 캐너리의 크기는 새 플릿 용량의 50% 이하여야 합니다. 베이킹 기간이 끝나고 사전 지정된 Amazon CloudWatch 경보가 발생하지 않으면 나머지 트래픽은 이전(블루) 플릿에서 그린 플릿으로 이동합니다. 업데이트된 모델과 관련된 모든 문제는 캐너리에만 영향을 미치므로 캐너리 트래픽 시프팅은 배포 중에 더 안전하게 배포할 수 있습니다.
다음 다이어그램은 캐너리 트래픽 시프팅이 블루 플릿과 그린 플릿 간의 트래픽 분산을 관리하는 방법을 보여줍니다.

SageMaker AI가 그린 플릿을 프로비저닝하면 SageMaker AI는 들어오는 트래픽의 일부(예: 25%)를 canary로 라우팅합니다. 그러면 베이킹 기간이 시작되며, 이 기간 동안 CloudWatch 경보가 그린 플릿의 성능을 모니터링합니다. 이 기간 동안에는 블루 플릿과 그린 플릿이 모두 부분적으로 활성화되어 트래픽을 수신합니다. 베이킹 기간 동안 경보가 하나라도 트립되면 SageMaker AI는 롤백을 시작하고 모든 트래픽은 블루 플릿으로 돌아갑니다. 알람이 하나도 발생하지 않으면 모든 트래픽이 그린 플릿으로 시프팅하고 최종 베이킹 기간으로 들어갑니다. 경보를 밟지 않고 마지막 베이킹 기간이 완료되면 그린 플릿이 모든 트래픽을 처리하고 SageMaker AI가 블루 플릿을 종료합니다.
사전 조건
캐너리 트래픽 시프팅을 사용하여 배포를 설정하기 전에 Amazon CloudWatch 경보를 생성하여 엔드포인트에서 지표를 모니터링해야 합니다. 베이킹 기간 중에 경보가 활성화되어 있고 알람이 하나라도 발생하면 모든 엔드포인트 트래픽이 블루 플릿으로 롤백됩니다. 엔드포인트에서 CloudWatch 경보를 설정하는 방법은 필수 조건 페이지 자동 롤백 구성 및 모니터링를 참고하세요. CloudWatch 경보에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서의 Amazon CloudWatch 경보 사용을 참고하세요.
캐너리 트래픽 시프팅 구성
배포 준비가 되고 엔드포인트에 대한 Amazon CloudWatch 경보를 설정했으면에서 Amazon SageMaker AI UpdateEndpoint API 또는 update-endpoint 명령을 사용하여 배포를 AWS CLI 시작할 수 있습니다.
엔드포인트를 업데이트하는 방법(API)
아래의 UpdateEndpoint 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는 canary 이동 후 10분 동안 기다린 다음 두 번째 및 최종 트래픽 이동을 완료합니다.TerminationWaitInSeconds
에는600
을 사용합니다. 이 파라미터는 SageMaker AI에 그린 플릿이 완전히 활성화된 후 블루 플릿의 인스턴스를 종료하기 전에 지정된 시간(초) 동안 대기하도록 지시합니다. 이 예제에서 SageMaker AI는 블루 플릿을 종료하기 전에 마지막 베이킹 기간 후 10분 동안 기다립니다.MaximumExecutionTimeoutInSeconds
에는1800
을 사용합니다. 이 파라미터는 시간이 초과되기 전에 배포를 실행할 수 있는 최대 시간을 설정합니다. 위 예제에서는 배포를 완료하는 데 걸리는 시간이 30분으로 제한되어 있습니다.AutoRollbackConfiguration
의Alarms
필드 내에서 이름을 기준으로 하여 CloudWatch 경보를 추가할 수 있습니다. 사용하려는 각 알람에 대해AlarmName:
항목을 하나씩 생성합니다.<your-cw-alarm>
기존의 블루/그린 업데이트 정책(API)으로 엔드포인트를 업데이트하는 방법
CreateEndpoint API를 사용하여 엔드포인트를 생성할 때 향후 엔드포인트 업데이트에 재사용할 배포 구성을 선택적으로 지정할 수 있습니다. 이전 UpdateEndpoint API 예제와 동일한 DeploymentConfig
옵션을 사용할 수 있습니다. CreateEndpoint API 동작에는 변경 사항이 없습니다. 배포 구성을 지정해도 엔드포인트에서 블루/그린 업데이트가 자동으로 수행되지는 않습니다.
이전 배포 구성을 사용하는 옵션은 UpdateEndpoint API를 사용하여 엔드포인트를 업데이트할 때 발생합니다. 엔드포인트를 업데이트할 때 RetainDeploymentConfig
옵션을 사용하여 엔드포인트를 생성할 때 지정한 배포 구성을 유지할 수 있습니다.
UpdateEndpoint API를 호출할 때는 원래 엔드포인트 구성의 DeploymentConfig
옵션을 유지하도록 RetainDeploymentConfig
를 True
로 설정하세요.
response = client.update_endpoint( EndpointName="
<your-endpoint-name>
", EndpointConfigName="<your-config-name>
", RetainDeploymentConfig=True )
엔드포인트를 업데이트하는 방법(CLI)
를 사용하는 경우 AWS CLI다음 예제에서는 update-endpoint 명령을 사용하여 블루/그린 카나리 배포를 시작하는 방법을 보여줍니다.
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 JSON 객체를 사용합니다.
참고
JSON 객체를 파일에 저장하려면 AWS CLI 사용 설명서의 AWS CLI 스켈레톤 및 입력 파라미터 생성을 참조하세요.