리니어 트래픽 시프팅 - 아마존 SageMaker

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

리니어 트래픽 시프팅

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

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

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

3단계 리니어 트래픽이 이전 플릿에서 새 플릿으로 성공적으로 시프팅하고, 각 단계는 트래픽의 33%를 이동합니다.

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

필수 조건

선형 트래픽 이동으로 배포를 설정하기 전에 엔드포인트에서 메트릭을 모니터링하는 CloudWatch 경보를 생성해야 합니다. 베이킹 기간 중에 경보가 활성화되어 있고 알람이 하나라도 발생하면 모든 엔드포인트 트래픽이 블루 플릿으로 롤백됩니다. 엔드포인트에서 CloudWatch 경보를 설정하는 방법을 알아보려면 사전 요구 사항 페이지를 참조하십시오. 자동 롤백 구성 및 모니터링 CloudWatch 경보에 대한 자세한 내용은 Amazon 사용 CloudWatch 설명서의 Amazon CloudWatch 경보 사용을 참조하십시오.

리니어 트래픽 시프팅 구성

배포할 준비가 되고 엔드포인트에 대한 CloudWatch 경보를 설정한 후에는 Amazon SageMaker UpdateEndpointAPI 또는 에서 update-endpoint 명령을 사용하여 AWS CLI 배포를 시작할 수 있습니다.

엔드포인트를 업데이트하는 방법(API)

다음 UpdateEndpointAPI 예제는 선형 트래픽 이동으로 엔드포인트를 업데이트하는 방법을 보여줍니다.

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에는 사용할 엔드포인트 구성 이름을 사용합니다.

  • DeploymentConfigBlueGreenUpdatePolicyTrafficRoutingConfiguration에서 Type 파라미터를 LINEAR로 설정합니다. 이렇게 지정하면 배포가 리니어 트래픽 시프팅을 사용하게 됩니다.

  • LinearStepSize 필드에서 및 TypeValue 파라미터를 수정하여 단계의 크기를 변경할 수 있습니다. Type에는 CAPACITY_PERCENT를 사용합니다. 이것은 그린 플릿 중에서 단계 크기로 사용하고 싶은 비율을 의미합니다. 그런 다음에는 Value20으로 설정합니다. 이 예제에서는 각 트래픽 시프팅 단계에 대해 그린 플릿 용량의 20%를 설정합니다. 리니어 단계 크기를 사용자 지정할 때는 그린 플릿 용량의 10~50%에 해당하는 단계만 사용해야 한다는 점을 유의해 주십시오.

  • WaitIntervalInSeconds에는 300을 사용합니다. 파라미터는 각 트래픽 이동 사이에 지정된 시간 (초) 동안 SageMaker 대기하도록 지시합니다. 이 간격은 각 리니어 단계 사이의 베이킹 기간입니다. 위 예제에서는 각 트래픽 이동 사이에 5분간 SageMaker 기다립니다.

  • TerminationWaitInSeconds에는 300을 사용합니다. 이 파라미터는 그린 플릿이 완전히 활성화된 후 지정된 시간 (초) SageMaker 까지 기다렸다가 블루 플릿의 인스턴스를 종료하도록 지시합니다. 이 예시에서는 최종 베이킹 기간이 지난 후 5분간 SageMaker 기다린 후 블루 플릿을 종료합니다.

  • MaximumExecutionTimeoutInSeconds에는 3600을 사용합니다. 이 파라미터는 시간이 초과되기 전에 배포를 실행할 수 있는 최대 시간을 설정합니다. 위 예제에서는 배포를 완료하는 데 걸리는 시간이 1시간으로 제한되어 있습니다.

  • AutoRollbackConfiguration에서는 Alarms 필드 내에서 이름별로 CloudWatch 알람을 추가할 수 있습니다. 사용하려는 각 알람에 대해 AlarmName: <your-cw-alarm> 항목을 하나씩 생성합니다.

기존의 블루/그린 업데이트 정책(API)으로 엔드포인트를 업데이트하는 방법

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

이전 배포 구성을 사용하는 옵션은 UpdateEndpointAPI를 사용하여 엔드포인트를 업데이트할 때 발생합니다. 엔드포인트를 업데이트할 때 RetainDeploymentConfig 옵션을 사용하여 엔드포인트를 생성할 때 지정한 배포 구성을 유지할 수 있습니다.

UpdateEndpointAPI를 호출할 때는 원래 엔드포인트 구성의 DeploymentConfig 옵션을 RetainDeploymentConfig True 유지하도록 로 설정하십시오.

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

엔드포인트를 업데이트하는 방법(CLI)

를 사용하는 경우 다음 예제는 update-endpoint 명령을 사용하여 블루/그린 선형 배포를 시작하는 방법을 보여줍니다. AWS CLI

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 경우 JSON 객체를 사용하십시오. BlueGreenUpdatePolicy

참고

JSON 객체를 파일로 저장하려면 사용 안내서의 AWS CLI 스켈레톤 및 입력 매개변수 생성을 참조하십시오.AWS CLI