

# 고해상도 지표를 사용한 더 빠른 오토 스케일링
<a name="target-tracking-faster-auto-scaling"></a>

기본적으로 Amazon ECS는 60초 해상도로 `CPUUtilization` 및 `MemoryUtilization` 지표를 게시합니다. 더 빠른 서비스 오토 스케일링을 구동하도록 20초 해상도를 구성할 수 있습니다.

다음과 같은 사전 정의된 고해상도 지표를 대상 추적 조정 정책을 생성할 때 사용할 수 있습니다.


| PredefinedMetricType | 설명 | 
| --- | --- | 
| ECSServiceAverageCPUUtilizationHighResolution | 20초 해상도의 평균 CPU 사용률 | 
| ECSServiceAverageMemoryUtilizationHighResolution | 20초 해상도에서의 평균 메모리 사용률 | 

## 더 빠른 오토 스케일링을 위한 고해상도 지표를 사용하여 새 서비스 생성
<a name="faster-auto-scaling-create-service"></a>

### 콘솔
<a name="faster-auto-scaling-create-service-console"></a>

1. **클러스터** 페이지에서 서비스를 생성하려는 클러스터를 선택하세요.

1. **서비스** 섹션에서 **생성**을 선택합니다.

1. 서비스 생성 양식의 **모니터링 구성** 섹션에서 **지표 구성 추가**를 선택합니다.

1. **지표 이름**에서 고해상도로 수집하려는 지표를 선택합니다. `CPUUtilization` 또는 `MemoryUtilization`를 선택합니다.

1. **해상도(초)**에서 **20**을 선택합니다.

1. (선택 사항) 두 지표를 모두 고해상도로 추가하려면 **지표 구성 추가**를 다시 선택하고 다른 지표에 대해 이전 두 단계를 반복합니다.

1. **서비스 오토 스케일링** 섹션에서 **서비스 오토 스케일링 사용**을 선택합니다.

1. **작업의 최소 개수**에 서비스 Auto Scaling에서 사용할 작업 수의 하한을 입력합니다. 바람직한 수는 이 숫자 이내여야 합니다.

1. **작업의 최대 개수**에 서비스 Auto Scaling에서 사용할 작업 수의 상한을 입력합니다. 바람직한 수는 이 숫자 이내여야 합니다.

1. **조정 정책 유형(Scaling policy type)**에서 **대상 추적(Target tracking)**을 선택합니다.

1. **지표 유형**에서 해당하는 고해상도 지표를 선택합니다. 예를 들어 20초 해상도로 `CPUUtilization`를 구성한 경우 `ECSServiceAverageCPUUtilizationHighResolution`을 선택하고 20초 해상도로 `MemoryUtilization`를 구성한 경우 `ECSServiceAverageMemoryUtilizationHighResolution`을 선택합니다.

1. **목표 값**에 목표 사용률을 입력합니다. 서비스 오토 스케일링에서는 평균 사용률이 목표 값에 도달하거나 사용자가 지정한 최대 태스크 수에 도달할 때까지 용량이 스케일 아웃됩니다.

1. **추가 설정**에서 다음을 구성합니다.

   1. **스케일 아웃 휴지 기간**에는 이전 스케일 아웃 활동이 적용될 때까지 대기하는 시간(초)을 입력합니다.

   1. **스케일 인 휴지 기간**에는 스케일 인 활동 완료 후 다른 스케일 인 활동이 시작될 수 있는 시간(초)을 입력합니다.

1. **생성**을 선택하여 스택을 생성합니다.

### AWS CLI
<a name="faster-auto-scaling-create-service-cli"></a>

1. [create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html) 명령을 사용하여 모니터링 구성으로 서비스를 생성합니다.

   ```
   aws ecs create-service --region {{us-east-1}} \
       --cluster {{my-cluster}} \
       --service-name {{my-service}} \
       --task-definition {{my-app:1}} \
       --desired-count 2 \
       --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"
   ```

1. [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 명령을 사용하여 서비스를 확장 가능 대상으로 등록합니다.

   ```
   aws application-autoscaling register-scalable-target \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --min-capacity {{1}} \
       --max-capacity {{10}} \
       --region {{us-east-1}}
   ```

1. [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 명령을 사용하여 사전 정의된 고해상도 지표로 대상 추적 조정 정책을 생성합니다.

   ```
   aws application-autoscaling put-scaling-policy \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --policy-name {{my-highres-cpu-policy}} \
       --policy-type TargetTrackingScaling \
       --target-tracking-scaling-policy-configuration '{
           "TargetValue": {{50.0}},
           "PredefinedMetricSpecification": {
               "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution"
           }
       }' \
       --region {{us-east-1}}
   ```

1. [describe-scaling-policies](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-policies.html) 명령을 사용하여 정책이 생성되었는지 확인합니다.

   ```
   aws application-autoscaling describe-scaling-policies \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --region {{us-east-1}}
   ```

## 더 빠른 오토 스케일링을 위해 고해상도 지표를 사용하도록 기존 서비스 업데이트
<a name="faster-auto-scaling-update-service"></a>

더 빠른 서비스 오토 스케일링을 위해 고해상도 지표를 사용하도록 기존 서비스를 업데이트하는 것은 2단계 프로세스입니다. 먼저 서비스 배포를 트리거하는 모니터링 해상도를 업데이트해야 합니다. 배포가 성공적으로 완료되고 모든 작업이 20초 해상도로 지표를 내보내고 나면 고해상도 조정 정책을 구성할 수 있습니다.

**중요**  
서비스가 이전에 60초 지표 해상도를 사용한 경우 20초 지표 해상도를 사용하도록 서비스를 업데이트하고 서비스 배포가 완료된 후에만 Amazon ECS 콘솔에서 조정 정책에 대한 고해상도 지표를 사용할 수 있습니다.

### 콘솔
<a name="faster-auto-scaling-update-service-console"></a>

**1단계: 모니터링 해상도 업데이트**  


1. **클러스터** 페이지에서 업데이트하려는 서비스가 포함된 클러스터를 선택하세요.

1. **서비스** 섹션에서 서비스를 선택하고 **업데이트**를 선택합니다.

1. 서비스 업데이트 양식의 **모니터링 구성** 섹션에서 **지표 구성 추가**를 선택합니다.

1. **지표 이름**에서 고해상도로 수집하려는 지표를 선택합니다. `CPUUtilization` 또는 `MemoryUtilization`를 선택합니다.

1. **해상도(초)**에서 **20**을 선택합니다.

1. (선택 사항) 두 지표를 모두 고해상도로 추가하려면 **지표 구성 추가**를 다시 선택하고 다른 지표에 대해 이전 두 단계를 반복합니다.

1. **업데이트**를 선택하여 변경 사항을 제출합니다. 이렇게 하면 서비스 배포가 트리거됩니다.

1. 배포가 완료될 때까지 기다립니다. **배포** 탭의 서비스 세부 정보 페이지에서 진행 상황을 모니터링할 수 있습니다.
**참고**  
배포가 성공하고 모든 작업이 20초 해상도로 방출될 때까지 서비스 오토 스케일링 섹션에서 고해상도 조정 지표 옵션이 회색으로 표시됩니다.

**2단계: 고해상도 조정 정책 구성**  


배포가 완료되면 다음 방법 중 하나를 사용하여 조정 정책을 구성합니다.

옵션 A: 서비스 세부 정보 페이지  

1. 서비스 세부 정보 페이지에서 **서비스 오토 스케일링** 탭을 선택합니다.

1. **조정 정책 생성**을 선택합니다(또는 기존 정책 편집).

1. **조정 정책 유형(Scaling policy type)**에서 **대상 추적(Target tracking)**을 선택합니다.

1. **지표 유형**에서 고해상도 지표를 선택합니다. 예: `ECSServiceAverageCPUUtilizationHighResolution` 또는 `ECSServiceAverageMemoryUtilizationHighResolution`.

1. **목표 값에** 목표 사용률을 입력합니다.

1. **추가 설정**에서 다음을 구성합니다.

   1. **스케일 아웃 휴지 기간**에는 이전 스케일 아웃 활동이 적용될 때까지 대기하는 시간(초)을 입력합니다.

   1. **스케일 인 휴지 기간**에는 스케일 인 활동 완료 후 다른 스케일 인 활동이 시작될 수 있는 시간(초)을 입력합니다.

1. **규모 조정 정책 생성**을 선택합니다.

옵션 B: 서비스 양식 업데이트  

1. 서비스 세부 정보 페이지에서 **업데이트**를 선택합니다.

1. **서비스 오토 스케일링** 섹션에서 **서비스 오토 스케일링 사용**을 선택합니다(아직 활성화되지 않은 경우).

1. **최소 작업 수**에 하한을 입력합니다.

1. **최대 작업 수**에 상한을 입력합니다.

1. **조정 정책 유형(Scaling policy type)**에서 **대상 추적(Target tracking)**을 선택합니다.

1. **지표 유형**에서 고해상도 지표를 선택합니다(배포 완료 후 활성화됨).

1. **목표 값**에 목표 사용률을 입력합니다.

1. **추가 설정**에서 **스케일 아웃 휴지 기간**과 **스케일 인 휴지 기간**을 설정합니다.

1. **업데이트**를 선택하여 변경 사항을 제출합니다.

### AWS CLI
<a name="faster-auto-scaling-update-service-cli"></a>

**1단계: 모니터링 해상도 업데이트**  


1. [update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html) 명령을 사용하여 모니터링 구성으로 서비스를 업데이트합니다.

   ```
   aws ecs update-service --region {{us-east-1}} \
       --cluster {{my-cluster}} \
       --service {{my-service}} \
       --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"
   ```

1. 배포가 완료될 때까지 기다립니다. [describe-services](https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-services.html) 명령을 사용하고 배포 상태를 확인하여 진행 상황을 모니터링할 수 있습니다.

   ```
   aws ecs describe-services --region {{us-east-1}} \
       --cluster {{my-cluster}} \
       --services {{my-service}}
   ```

1. 배포가 완료되면 서비스 개정을 설명하여 모니터링 구성이 활성 상태인지 확인합니다. `describe-services` 출력에서 활성 서비스 개정 ARN을 가져온 후 다음을 실행합니다.

   ```
   aws ecs describe-service-revisions --region {{us-east-1}} \
       --service-revision-arns {{arn:aws:ecs:us-east-1:012345678910:service-revision/my-cluster/my-service/1234567890123456789}}
   ```

   응답에 모니터링 구성이 나타나는지 확인합니다.

   ```
   {
       "serviceRevisions": [
           {
               ...
               "monitoring": {
                   "metricConfigurations": [
                       {
                           "metricNames": ["CPUUtilization", "MemoryUtilization"],
                           "resolutionSeconds": 20
                       }
                   ]
               }
           }
       ]
   }
   ```

**2단계: 고해상도 조정 정책 구성**  


1. 등록되지 않은 경우 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 명령을 사용하여 서비스를 확장 가능 대상으로 등록합니다.

   ```
   aws application-autoscaling register-scalable-target \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --min-capacity {{1}} \
       --max-capacity {{10}} \
       --region {{us-east-1}}
   ```

1. [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 명령을 사용하여 사전 정의된 고해상도 지표로 대상 추적 조정 정책을 생성합니다. 다음 예제에서는 CPU 사용률의 50%를 목표로 합니다.

   ```
   aws application-autoscaling put-scaling-policy \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --policy-name {{my-highres-cpu-policy}} \
       --policy-type TargetTrackingScaling \
       --target-tracking-scaling-policy-configuration '{
           "TargetValue": {{50.0}},
           "PredefinedMetricSpecification": {
               "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution"
           }
       }' \
       --region {{us-east-1}}
   ```

1. 정책이 생성되었는지 확인합니다.

   ```
   aws application-autoscaling describe-scaling-policies \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --region {{us-east-1}}
   ```

## 더 빠른 서비스 오토 스케일링 확인
<a name="faster-auto-scaling-validate"></a>

**1부: 고해상도 지표가 게시 중인지 확인**  


1. CloudWatch 콘솔로 이동합니다.

1. 탐색 창에서 **지표**를 선택한 다음, **모든 지표**를 선택합니다.

1. **AWS/ECS** 네임스페이스를 선택합니다.

1. **ClusterName, ServiceName**을 선택합니다.

1. 서비스에 대한 `CPUUtilization` 및 `MemoryUtilization` 지표를 찾습니다.

1. 기간을 **20초**로 설정합니다. 20초 간격으로 데이터 포인트가 표시되어야 고해상도 지표가 활성 상태임을 확인할 수 있습니다.

**2부: 고해상도 지표를 사용하여 조정 정책이 있는지 확인**  


1. 서비스 세부 정보 페이지에서 **서비스 오토 스케일링** 탭을 선택합니다.

1. 기존 조정 정책을 보고 지표가 고해상도 변형(`ECSServiceAverageCPUUtilizationHighResolution` 또는 `ECSServiceAverageMemoryUtilizationHighResolution`)으로 설정되어 있는지 확인합니다.

1. 또는 CLI를 사용하여 확인합니다.

   ```
   aws application-autoscaling describe-scaling-policies \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --region {{us-east-1}}
   ```

   응답의 `PredefinedMetricType`이 고해상도 지표로 설정되어 있는지 확인합니다.

## 고려 사항
<a name="faster-auto-scaling-considerations"></a>
+ 구성 변경을 모니터링하면 새 서비스 개정이 생성되고 서비스 배포가 필요합니다. 배포가 완료되고 모든 작업이 20초 해상도로 방출될 때까지 고해상도 조정 지표를 사용할 수 없습니다.
+ Application Load Balancer 및 Network Load Balancer를 사용하는 서비스에 대해 고해상도 지표가 지원됩니다. 대상 그룹 없이 Classic Load Balancer를 사용하는 서비스는 지원되지 않습니다.
+ `CODE_DEPLOY` 또는 `EXTERNAL` 배포 컨트롤러 유형을 사용하는 서비스에서는 고해상도 지표가 지원되지 않습니다.
+ `DescribeServiceRevisions`을 사용하여 서비스에 대한 모니터링 구성을 볼 수 있습니다. 모니터링 구성은 `CreateService` 또는 `UpdateService` 응답에 반환되지 않습니다.