

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

# Amazon EC2 Auto Scaling의 단계별 조정 및 단순 조정 정책
<a name="as-scaling-simple-step"></a>

단계 조정 및 단순 조정 정책은 CloudWatch 경보를 기반으로 사전 정의된 증분 단위로 Auto Scaling 그룹의 용량을 조정합니다. 경보 임계값 위반 시 스케일 아웃(용량 증가) 및 스케일 인(용량 감소)을 처리하도록 별도의 조정 정책을 정의할 수 있습니다.

Auto Scaling 그룹의 용량은 인스턴스로 측정되며 [인스턴스 가중치](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)를 사용하는 경우 용량 단위로 측정됩니다. 또한 원하는 용량과 현재 용량에는 차이가 있습니다.
+ 원하는 용량 - 그룹에 두고자 하는 인스턴스(또는 용량 단위)의 수를 의미합니다. 원하는 용량은 규모 조정 정책을 통해 수동 또는 자동으로 조절할 수 있습니다.
+ 현재 용량 - 워밍업 및 휴지 기간을 모두 완료하여 실행 중이며 사용할 준비가 된 그룹의 인스턴스(또는 용량 단위) 수를 의미합니다.

단계 조정 및 단순 조정을 사용하여 조정 프로세스를 호출하는 CloudWatch 경보를 생성하고 관리합니다. 경보 위반이 발생하면 Amazon EC2 Auto Scaling에서 해당 경보와 관련된 조정 정책을 시작합니다.

목표 추적 조정 정책을 사용하여 목표당 평균 요청 수 또는 평균 CPU 사용률과 같은 지표에 따라 조정하는 것이 좋습니다 용량이 증가할 때 감소하고 용량이 감소할 때 증가하는 지표를 사용하여 비례적으로 스케일 아웃하거나 대상 추적을 사용하여 인스턴스 수를 늘릴 수 있습니다. 이렇게 하면 Amazon EC2 Auto Scaling이 애플리케이션의 수요 곡선을 근접하게 따를 수 있습니다. 자세한 설명은 [대상 추적 조정 정책](as-scaling-target-tracking.md) 섹션을 참조하세요.

**Contents**
+ [단계 조정 정책 작동 방식](#step-scaling-how-it-works)
+ [단계별 조정 정책에 대한 단계별 조정](#as-scaling-steps)
+ [조정 조절 유형](#as-scaling-adjustment)
+ [인스턴스 워밍업](#as-step-scaling-warmup)
+ [고려 사항](#step-scaling-considerations)
+ [스케일 아웃을 위한 단계 조정 정책 생성](step-scaling-create-scale-out-policy.md)
+ [스케일 인을 위한 단계 조정 정책 생성](step-scaling-create-scale-in-policy.md)
+ [단순 조정 정책](simple-scaling-policies.md)

## 단계 조정 정책 작동 방식
<a name="step-scaling-how-it-works"></a>

단계 조정을 사용하려면 우선 Auto Scaling 그룹의 지표를 모니터링하는 CloudWatch 경보를 생성해야 합니다. 경보 위반을 결정하는 지표, 임계값, 평가 기간 수를 정의합니다. 그런 다음 경보 임곗값이 위반될 때 그룹을 조정하는 방법을 정의하는 단계 조정 정책을 생성합니다. 조정 조절 유형으로 Auto Scaling 그룹의 현재 용량의 백분율 또는 용량 단위를 사용할 수 있습니다. 자세한 내용은 [조정 조절 유형](#as-scaling-adjustment) 단원을 참조하십시오.

정책에 단계 조정을 추가합니다. 경보의 위반 규모에 따라 다양한 단계 조정을 정의할 수 있습니다. 예제:
+ 경보 지표가 60%에 도달하면 10개 인스턴스 단위로 스케일 아웃
+ 경보 지표가 75%에 도달하면 30개 인스턴스 단위로 스케일 아웃
+ 경보 지표가 85%에 도달하면 40개 인스턴스 단위로 스케일 아웃

지정된 수의 평가 기간 동안 경보 임곗값이 위반되면 Amazon EC2 Auto Scaling이 정책에 정의된 단계 조정을 적용합니다. 경보 상태가 `OK`로 돌아갈 때까지 추가 경보 위반에 대해 조정을 계속할 수 있습니다.

각 인스턴스에는 워밍업 기간이 있어 조정 활동이 단기간에 발생하는 변경 사항에 과하게 반응하는 것을 방지합니다. 선택적으로 조정 정책에 대한 워밍업 기간을 구성할 수 있습니다. 하지만 워밍업 시간이 변경될 때 모든 조정 정책을 쉽게 업데이트할 수 있도록 기본 인스턴스 워밍업을 사용하는 것이 좋습니다. 자세한 내용은 [Auto Scaling 그룹의 기본 인스턴스 워밍업 설정](ec2-auto-scaling-default-instance-warmup.md) 단원을 참조하십시오.

단순 조정 정책은 단일 조정을 기반으로 하고 각 조정 활동 사이에 휴지 기간을 둔다는 점을 제외하면 단계 조정 정책과 유사합니다. 자세한 내용은 [단순 조정 정책](simple-scaling-policies.md) 단원을 참조하십시오.

## 단계별 조정 정책에 대한 단계별 조정
<a name="as-scaling-steps"></a>

단계별 조정 정책을 생성할 때 경보 위반의 크기에 따라 인스턴스 수를 동적으로 자동 조정되도록 하나 이상의 단계별 조정을 지정합니다. 각 단계별 조정은 다음을 지정합니다.
+ 지표 값의 하한값입니다.
+ 지표 값의 상한값입니다.
+ 조정 유형에 근거하여 축소하거나 스케일 아웃하는 양입니다.

CloudWatch는 CloudWatch 경보와 연결된 지표의 통계를 바탕으로 지표 데이터 포인트를 집계합니다. 경보를 위반하면 적절한 조정 정책이 호출됩니다. Amazon EC2 Auto Scaling은 집계 유형을 CloudWatch의 최근 지표 데이터 포인트에 적용합니다(원시 지표 데이터와 반대). 이 집계된 지표 값을 단계별 조정으로 정의된 상한값 및 하한값과 비교하여 어느 단계의 조정을 수행할 것인지 결정합니다.

위반 임계값과 연계하여 상한값과 하한값을 지정합니다. 예를 들어 지표가 50%를 초과하는 경우에 대한 CloudWatch 경보와 스케일 아웃 정책을 만들었다고 가정해 보겠습니다. 그런 다음 지표가 50% 미만일 때를 대비한 두 번째 경보와 스케일 인 정책을 만들었습니다. 각 정책에 대해 조정 유형이 `PercentChangeInCapacity`(또는 콘솔의 **그룹 백분율**)인 단계 조정 집합이 있습니다.


**예: 스케일 아웃 정책에 대한 단계 조절**  

| **하한** | **상한** | **조절** | 
| --- | --- | --- | 
|  0  |  10  |  0  | 
|  10  |  20  |  10  | 
|  20  |  null  |  30  | 


**예: 축소 정책에 대한 단계 조절**  

| **하한** | **상한** | **조절** | 
| --- | --- | --- | 
|  -10  |  0  |  0  | 
|  -20  |  -10  |  -10  | 
|  null  |  -20  |  -30  | 

이렇게 하면 다음과 같은 조정 구성이 생성됩니다.

```
Metric value

-infinity          30%    40%          60%     70%             infinity
-----------------------------------------------------------------------
          -30%      | -10% | Unchanged  | +10%  |       +30%        
-----------------------------------------------------------------------
```

현재 용량과 원하는 용량이 모두 10인 Auto Scaling 그룹에 이 조정 구성을 사용한다고 가정해 보겠습니다. 다음은 그룹의 원하는 용량과 현재 용량과 관련된 조정 구성의 동작을 요약한 내용입니다.
+ 집계된 지표 값이 40보다 크고 60보다 작으면 현재 용량과 원하는 용량이 유지됩니다.
+ 지표 값이 60이 되면 스케일 아웃 정책의 2단계 조절(10개의 인스턴스에 10% 합산)에 따라 그룹의 원하는 용량을 1개의 인스턴스만큼 늘려 11개의 인스턴스로 만듭니다. 새 인스턴스가 실행되고 지정된 워밍업 시간이 만료된 후 그룹의 현재 용량을 11개의 인스턴스로 늘립니다. 용량이 이렇게 증가한 후에도 지표 값이 70으로 증가하면 그룹의 원하는 용량이 14개의 인스턴스까지 증가합니다(인스턴스가 3개씩 증가). 이는 스케일 아웃 정책의 세 번째 단계 조절에 근거하여 합니다(11개 인스턴스의 30%인 3.3개 인스턴스가 3개로 반올림되어 추가).
+ 지표 값이 40이 될 경우, 축소 정책의 2단계 조절에 따라(14개의 인스턴스에 10%인 1.4개의 인스턴스를 빼되 1개의 인스턴스로 반내림) 그룹의 원하는 용량을 1개의 인스턴스만큼 더 줄여 13개의 인스턴스로 만듭니다. 이렇게 용량이 감소한 후에도 지표 값이 30으로 떨어지면 그룹의 원하는 용량이 10개의 인스턴스로 감소합니다(인스턴스가 3개씩 감소). 이는 스케일 인 정책의 세 번째 단계 조절에 근거하여 합니다(13개 인스턴스 30%인 3.9개 인스턴스가 3개로 반내림되어 제거).

조정 정책에 대한 단계 조절을 지정할 때는 다음 사항에 유의하세요.
+ 를 사용하는 경우 상한과 하한을 절대값으로 AWS Management Console지정합니다. AWS CLI 또는 SDK를 사용하는 경우 위반 임계값을 기준으로 상한과 하한을 지정합니다.
+ 단계 조절의 범위는 중복되거나 격차가 있어서는 안 됩니다.
+ 1단계 조절에만 null 하한값(negative infinity)이 포함될 수 있습니다. 1단계 조절에 음의 하한값이 포함될 경우, null 하한값으로 단계 조절을 해야 합니다.
+ 1단계 조절에만 null 상한값(positive infinity)이 포함될 수 있습니다. 1단계 조절에 양의 상한값이 포함될 경우, null 상한값으로 단계 조절을 해야 합니다.
+ 상한 및 하한값은 동일한 단계 조절에서 null이 될 수 없습니다.
+ 지표 값이 위반 임계값을 초과할 경우, 하한값은 포함되고 상한값은 제외됩니다. 지표 값이 위반 임계값 미만일 경우, 하한값은 제외되고 상한값은 포함됩니다.

## 조정 조절 유형
<a name="as-scaling-adjustment"></a>

선택한 조정 조절 유형에 따라 최적의 조정 작업을 수행하는 조정 정책을 정의할 수 있습니다. 조절 유형을 Auto Scaling 그룹의 현재 용량의 백분율이나 용량 단위로 지정할 수 있습니다. 일반적으로 인스턴스 가중치 부여 기능을 사용하지 않는 한 용량 단위는 인스턴스 한 개를 의미합니다.

Amazon EC2 Auto Scaling은 다음과 같이 단계별 조정 및 단순 조정을 위한 조절 유형을 지원합니다.
+ `ChangeInCapacity` - 그룹의 현재 용량을 지정된 값만큼 늘리거나 줄입니다. 양의 값은 용량을 늘리고, 음의 조절 값은 용량을 줄입니다. 예: 그룹의 현재 용량이 3개의 인스턴스이고 조절이 5개인 경우, 이 정책이 수행되면 용량 단위가 총 8개가 되도록 용량에 5개의 용량 단위를 추가합니다.
+ `ExactCapacity` - 그룹의 현재 용량을 지정된 값으로 변경합니다. 이 조절 유형에는 음이 아닌 값을 지정합니다. 예: 그룹의 현재 용량이 3개의 인스턴스이고 조절이 5개인 경우, 이 정책이 수행되면 용량을 5개의 용량 단위로 변경합니다.
+ `PercentChangeInCapacity` - 그룹의 현재 용량을 지정된 퍼센트만큼 늘리거나 줄입니다. 양의 값은 용량을 늘리고, 음의 값은 용량을 줄입니다. 예: 현재 용량이 10개이고 조절이 10%인 경우, 이 정책이 수행되면 용량 단위가 총 11개가 되도록 용량에 1개의 용량 단위를 추가합니다.
**참고**  
결과 값이 정수가 아닌 경우, 다음과 같이 반올림(반내림)합니다.  
1보다 큰 값은 반내림합니다. 예컨대, `12.7`은 `12`로 반내림합니다.
0과 1 사이의 값은 1로 반올림합니다. 예컨대, `.67`은 `1`로 반올림합니다.
0과 -1 사이의 값은 1로 반내림합니다. 예컨대, `-.58`은 `-1`으로 반올림합니다.
-1보다 작은 값은 반올림합니다. 예컨대, `-6.67`은 `-6`으로 반올림합니다.

`PercentChangeInCapacity`에서는 `MinAdjustmentMagnitude` 파라미터를 사용하여 조정할 최소 인스턴스 수를 지정할 수도 있습니다. 예컨대, 25퍼센트를 추가하는 정책을 생성하고 최소 증분으로 2개의 인스턴스를 지정한다고 가정해 보세요. Auto Scaling 그룹에 4개 인스턴스가 있고 조정 정책이 실행되는 경우, 4개 인스턴스의 25%는 1개 인스턴스입니다. 그러나 최소 증분을 2로 지정했기 때문에 2개의 인스턴스가 추가됩니다.

[인스턴스 가중치](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)를 사용하면 `MinAdjustmentMagnitude` 파라미터를 0이 아닌 값으로 설정하는 효과가 변경됩니다. 값은 용량 유닛입니다. 조정할 최소 인스턴스 수를 설정하려면 이 파라미터를 가장 큰 인스턴스 가중치 이상의 값으로 설정합니다.

인스턴스 가중치를 사용하는 경우 Auto Scaling 그룹의 현재 용량이 필요에 따라 원하는 용량을 초과할 수 있다는 점에 유의하세요. 절대 감소 수 또는 백분율에서 감소하는 양이 현재 용량과 원하는 용량 간의 차이보다 작으면 조정 작업이 수행되지 않습니다. 임계값 경보가 위반되면 조정 정책의 결과를 확인할 때 이러한 동작을 고려해야 합니다. 예컨대, 원하는 용량이 30개이고 현재 용량이 32개라고 가정해 보겠습니다. 경보가 위반되면 조정 정책이 원하는 용량을 1씩 줄이게 되고 조정 작업이 수행되지 않습니다.

## 인스턴스 워밍업
<a name="as-step-scaling-warmup"></a>

단계별 조정의 경우, 새로 시작된 인스턴스가 워밍업되는 데 걸리는 시간(초)을 선택적으로 지정할 수 있습니다. 지정된 워밍업 시간이 만료될 때까지 인스턴스는 Auto Scaling 그룹의 집계된 EC2 인스턴스 지표에 포함되지 않습니다.

인스턴스가 워밍업 기간에 있는 동안 워밍업되지 않은 인스턴스의 지표 값이 정책의 경보 상한 임곗값보다 큰 경우에만 조정 정책이 스케일 아웃됩니다.

그룹이 다시 스케일 아웃되면 아직 워밍업 중인 인스턴스가 다음 스케일 아웃 활동에 대한 원하는 용량의 일부로 계산됩니다. 따라서 여러 개의 경보 위반이 동일한 단계 조절 범위에 해당하는 경우, 단일 크기 조정 활동이 이루어집니다. 계속적이지만 과도하지는 않게 스케일 아웃하기 위한 목적입니다.

예컨대, 두 단계로 구성된 정책을 만든다고 가정해 보겠습니다. 첫 번째 단계는 지표이 60%에 도달하면 10%를 추가하고, 두 번째 단계는 지표이 70%에 도달하면 30%를 추가합니다. Auto Scaling 그룹의 원하는 용량과 현재 용량은 10입니다. 집계된 지표 값이 60 미만인 동안에는 원하는 및 현재의 용량은 변하지 않습니다. 지표이 60에 도달하여 인스턴스 1개(10개 인스턴스의 10%)가 추가되었다고 가정합니다. 그런 다음 새 인스턴스가 아직 워밍업 중인 동안 지표는 62가 됩니다. 스케일링 정책은 현재 용량(여전히 10)을 기준으로 새로 원하는 용량을 계산합니다. 하지만 그룹의 필요한 용량이 이미 11개 인스턴스로 증가하였으므로 조정 정책이 원하는 용량을 더 이상 늘리지 않습니다. 지표가 70이 되고 새 인스턴스가 여전히 워밍업 중이면 3개의 인스턴스(10개 인스턴스의 30퍼센트)를 추가해야 합니다. 하지만 그룹의 필요한 용량이 이미 11이므로 새로운 필요 용량 13개 인스턴스에 대해 2개의 인스턴스만 추가합니다.

스케일 아웃 활동이 진행 중인 동안에는 인스턴스 워밍업이 완료될 때까지 조정 정책에 의해 시작된 모든 축소 활동이 차단됩니다. 인스턴스 워밍업이 완료된 후 스케일 인 이벤트가 발생하면 현재 해지 중인 인스턴스는 새로 원하는 용량을 계산할 때 그룹의 현재 용량에 포함됩니다. 따라서 Auto Scaling 그룹에서 인스턴스를 필요 이상으로 빼지 않습니다. 예컨대, 인스턴스가 이미 해지되고 있는 동안 원하는 용량을 1씩 감소시킨 동일한 단계별 조정 범위에서 경보가 위반되는 경우, 스케일링 작업이 수행되지 않습니다.

**기본값**  
값을 설정하지 않으면 조정 정책은 그룹에 대해 정의된 [기본 인스턴스 워밍업](ec2-auto-scaling-default-instance-warmup.md)의 값인 기본값을 사용합니다. 기본 인스턴스 워밍업이 null 값이면 그것은 [기본 쿨다운](ec2-auto-scaling-scaling-cooldowns.md#set-default-cooldown) 값으로 돌아갑니다.

## 고려 사항
<a name="step-scaling-considerations"></a>

단계별 및 단순 조정 정책과 관련한 작업을 수행할 때는 다음 고려 사항이 적용됩니다:
+ 단계별 조정을 사용할 수 있을 만큼 애플리케이션의 단계별 조정을 정확하게 예측할 수 있는지 생각해 보세요. 조정 지표가 스케일 아웃 가능한 대상의 용량에 비례하여 증가하거나 감소하는 경우, 대상 추적 조정 정책을 대신 사용하는 것이 좋습니다. 단계별 조정을 고급 구성에 대한 추가 정책으로 사용할 수도 있습니다. 예컨대, 사용률이 일정 수준에 도달할 때 더 공격적인 대응을 구성할 수 있습니다.
+ 플래핑을 방지하려면 스케일 아웃 임계값과 스케일 인 임계값 사이에서 적절한 마진을 선택해야 합니다. 플래핑은 스케일 인과 스케일 아웃의 무한 루프입니다. 즉, 스케일 아웃 작업을 진행하면 지표 값이 변경되고 반대 방향으로 다른 스케일 아웃 작업이 시작됩니다.

# 스케일 아웃을 위한 단계 조정 정책 생성
<a name="step-scaling-create-scale-out-policy"></a>

Auto Scaling 그룹의 스케일 아웃에 대한 단계 조정 정책을 생성하려면 다음 방법 중 하나를 사용합니다.

------
#### [ Console ]

**1단계: 지표 상한 임곗값에 대한 CloudWatch 경보 생성**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 필요한 경우, 지역을 변경합니다. 탐색 모음에서 Auto Scaling 그룹이 상주하는 지역을 선택합니다.

1. 탐색 창에서 **경보(Alarms), 모든 경보(All alarms)**를 선택한 다음 **경보 생성(Create alarm)**을 선택합니다.

1. **지표 선택**을 선택합니다.

1. **모든 지표(All metrics)** 탭에서 **EC2**, **Auto Scaling 그룹 기준**(By Auto Scaling Group)을 선택하고 검색 필드에 Auto Scaling 그룹 명칭을 입력합니다. 그런 다음 `CPUUtilization`을 선택하고 **지표 선택(Select metric)**을 선택합니다. 지표에 대한 그래프와 기타 정보가 표시된 **지표 및 조건 지정(Specify metric and conditions)** 페이지가 나타납니다.

1. **기간(Period)**에 예컨대, 1분과 같은 경보에 대한 평가 기간을 선택합니다. 경보를 평가할 때 각 기간이 하나의 데이터 포인트로 집계됩니다.
**참고**  
기간이 짧을수록 경보가 더 민감해집니다.

1. **조건(Conditions)**에서 다음을 수행하십시오:
   + **임계값 유형(Threshold type)**에서 **정적(Static)**을 선택합니다.
   + **`CPUUtilization`이 다음과 같은 경우 항상**에서 지표 값이 임곗값보다 클 때 또는 크거나 같을 때 중 경보를 트리거할 조건을 지정합니다. 그런 다음 **기준(than)**에 경보를 위반하려는 임계값을 입력합니다.

1. **추가 구성(Additional configuration)**에서 다음을 수행하십시오:
   + **경보에 대한 데이터 포인트(Datapoints to alarm)**에서 지표 값이 경보에 대한 임계값 조건을 충족해야 하는 데이터 포인트(평가 기간)를 입력합니다. 예컨대, 5분의 시간이 두 차례 연속되면 경보 상태를 호출하기까지 10분이 걸립니다.
   + **누락 데이터 처리(Missing data treatment)**에서 **누락 데이터를 불량으로 처리(임계값 위반)(Treat missing data as bad (breaching threshold))**를 선택합니다. 자세한 설명은 *Amazon CloudWatch 사용자 가이드*의 [CloudWatch 경보가 누락된 데이터를 처리하는 방법 구성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)을 참조하세요.

1. **다음**을 선택합니다.

   **작업 구성** 페이지가 표시됩니다.

1. **알림(Notification)**에서 경보가 `ALARM` 상태, `OK` 상태 또는 `INSUFFICIENT_DATA` 상태일 때 알릴 Amazon SNS 주제를 선택합니다.

   경보가 동일한 경보 상태 또는 다른 경보 상태에 대해 여러 개의 알림을 보내도록 설정하려면 **알림 추가**를 선택합니다.

   경보에서 알림을 보내지 않게 하려면 **제거(Remove)**를 선택합니다.

1. **작업 구성(Configure actions)** 페이지의 다른 섹션은 비워둘 수 있습니다. 다른 섹션을 비워 두면 조정 정책에 연결하지 않고도 경보가 생성됩니다. 그런 다음 Amazon EC2 Auto Scaling 콘솔에서 경보를 조정 정책에 연결할 수 있습니다.

1. **다음**을 선택합니다.

1. 경보의 이름(예: `Step-Scaling-AlarmHigh-AddCapacity`)과 설명(옵션)을 입력하고 **다음(Next)**을 선택합니다.

1. **경보 생성**을 선택하세요.

다음 절차에 따라 CloudWatch 경보를 생성한 후부터 계속 진행합니다.

**2단계: 스케일 아웃을 위한 단계 조정 정책 생성**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 열고 탐색 창에서 **Auto Scaling 그룹(Auto Scaling Groups)**을 선택합니다.

1. Auto Scaling 그룹 옆의 확인란을 선택합니다.

   페이지 하단에 분할 창이 열립니다.

1. 스케일링 제한이 적절하게 설정되었는지 확인합니다. 예컨대, 그룹의 원하는 용량이 이미 최대치에 있는 경우, 스케일 아웃하려면 새로운 최대값을 지정해야 합니다. 자세한 설명은 [Auto Scaling 그룹에 대한 스케일링 제한 설정](asg-capacity-limits.md) 섹션을 참조하세요.

1. **자동 크기 조정(Automatic scaling)** 탭의 **동적 크기 조정 정책(Dynamic scaling policies)**에서 **동적 크기 조정 정책 생성(Create dynamic scaling policy)**을 선택합니다.

1. **정책 유형**에서 **단계 조정**을 선택한 다음 정책의 이름을 지정합니다.

1. **CloudWatch 경보(CloudWatch alarm)**에서 경보를 선택합니다. 경보를 아직 생성하지 않은 경우 **CloudWatch 경보 생성**을 선택하고 이전 절차의 4단계\$114단계까지 완료하여 경보를 생성합니다.

1. **다음 작업을 수행(Take the action)**을 사용하여 이 정책을 실행할 때 적용할 현재 그룹 크기 변경을 지정합니다. 특정 인스턴스 개수 또는 기존 그룹 크기의 백분율을 추가하거나 그룹을 정확한 크기로 설정할 수 있습니다.

   예를 들어 그룹의 용량을 30% 늘리는 스케일 아웃 정책을 생성하려면 `Add`를 선택하고 다음 필드에 `30`을 입력한 후 `percent of group`를 선택합니다. 기본적으로 이 단계별 조정의 하한값은 경보 임계값이고 상한값은 양(\$1)의 무한대입니다.

1. 다른 단계를 추가하려면 **단계 추가(Add step)**를 선택한 다음 조정할 양과 경보 임계값에 상대적인 단계 하한 및 상한을 정의합니다.

1. 조정할 최소 인스턴스 수를 설정하려면 **최소 1 단위 용량의 증분으로 용량 단위 추가(Add capacity units in increments of at least** `1` **capacity units)**의 숫자 필드를 업데이트합니다.

1. (옵션) **인스턴스 워밍업**에서 인스턴스 워밍업 값을 필요에 따라 업데이트합니다.

1. **생성(Create)**을 선택합니다.

------
#### [ AWS CLI ]

스케일 아웃(용량 증가)에 대한 단계 조정 정책을 생성하려면 다음 예제 명령을 사용합니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

를 사용하는 경우 AWS CLI먼저 지표 값이 증가할 때 스케일 아웃하는 방법에 대한 지침을 Amazon EC2 Auto Scaling에 제공하는 단계 조정 정책을 생성합니다. 그런 다음 조사하려는 지표를 식별하여 경보를 생성하고 지표 상한 임곗값과 경보에 대한 기타 세부 정보를 정의한 다음, 해당 경보를 조정 정책과 연결합니다.

**1단계: 스케일 아웃을 위한 정책 생성**  
[put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여 다음과 같은 단계별 조정에 따라 그룹 용량을 늘리는 `my-step-scale-out-policy`라는 단계별 조정 정책(조절 유형 `PercentChangeInCapacity`)을 생성합니다(CloudWatch 경보 임계값을 60%로 가정).
+ 지표 값이 60% 이상이고 75% 미만인 경우, 인스턴스 수를 10% 늘립니다.
+ 지표 값이 75% 이상이고 85% 미만인 경우, 인스턴스 수를 20% 늘립니다.
+ 지표 값이 85% 이상이면 인스턴스 수를 30% 증가시킵니다.

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-out-policy \
  --policy-type StepScaling \
  --adjustment-type PercentChangeInCapacity \
  --metric-aggregation-type Average \
  --step-adjustments MetricIntervalLowerBound=0.0,MetricIntervalUpperBound=15.0,ScalingAdjustment=10 \
                     MetricIntervalLowerBound=15.0,MetricIntervalUpperBound=25.0,ScalingAdjustment=20 \
                     MetricIntervalLowerBound=25.0,ScalingAdjustment=30 \
  --min-adjustment-magnitude 1
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다.

```
{
    "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:4ee9e543-86b5-4121-b53b-aa4c23b5bbcc:autoScalingGroupName/my-asg:policyName/my-step-scale-in-policy
}
```

**2단계: 지표 상한 임곗값에 대한 CloudWatch 경보 생성**  
CloudWatch [put-metric-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-alarm.html) 명령을 사용하여 평균 CPU 임계값 60%를 기준으로 최소 2회 연속 2분간의 평가 기간에 Auto Scaling 그룹의 크기를 증가시키는 경보를 생성합니다. 사용자 지정 지표를 사용하려면 `--metric-name`에 지표 이름을 지정하고, `--namespace`에 네임스페이스를 지정합니다.

```
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-AddCapacity \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average \
  --period 120 --evaluation-periods 2 --threshold 60 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --dimensions "Name=AutoScalingGroupName,Value=my-asg" \
  --alarm-actions PolicyARN
```

------

# 스케일 인을 위한 단계 조정 정책 생성
<a name="step-scaling-create-scale-in-policy"></a>

Auto Scaling 그룹의 스케일 인에 대한 단계 조정 정책을 생성하려면 다음 방법 중 하나를 사용합니다.

------
#### [ Console ]

**1단계: 지표 하한 임곗값에 대한 CloudWatch 경보 생성**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 필요한 경우, 지역을 변경합니다. 탐색 모음에서 Auto Scaling 그룹이 상주하는 지역을 선택합니다.

1. 탐색 창에서 **경보(Alarms), 모든 경보(All alarms)**를 선택한 다음 **경보 생성(Create alarm)**을 선택합니다.

1. **지표 선택**을 선택합니다.

1. **모든 지표(All metrics)** 탭에서 **EC2**, **Auto Scaling 그룹 기준**(By Auto Scaling Group)을 선택하고 검색 필드에 Auto Scaling 그룹 명칭을 입력합니다. 그런 다음 `CPUUtilization`을 선택하고 **지표 선택(Select metric)**을 선택합니다. 지표에 대한 그래프와 기타 정보가 표시된 **지표 및 조건 지정(Specify metric and conditions)** 페이지가 나타납니다.

1. **기간(Period)**에 예컨대, 1분과 같은 경보에 대한 평가 기간을 선택합니다. 경보를 평가할 때 각 기간이 하나의 데이터 포인트로 집계됩니다.
**참고**  
기간이 짧을수록 경보가 더 민감해집니다.

1. **조건(Conditions)**에서 다음을 수행하십시오:
   + **임계값 유형(Threshold type)**에서 **정적(Static)**을 선택합니다.
   + **`CPUUtilization`이 다음과 같은 경우 항상**에서 지표 값이 임곗값보다 작을 때 또는 작거나 같을 때 중 경보를 트리거할 조건을 지정합니다. 그런 다음 **기준(than)**에 경보를 위반하려는 임계값을 입력합니다.
**중요**  
스케일 인 정책(지표 하한)과 함께 사용할 경보의 경우, 임곗값보다 큰 항목이나 크거나 같은 항목을 선택하지 않았는지 확인합니다.

1. **추가 구성(Additional configuration)**에서 다음을 수행하십시오:
   + **경보에 대한 데이터 포인트(Datapoints to alarm)**에서 지표 값이 경보에 대한 임계값 조건을 충족해야 하는 데이터 포인트(평가 기간)를 입력합니다. 예컨대, 5분의 시간이 두 차례 연속되면 경보 상태를 호출하기까지 10분이 걸립니다.
   + **누락 데이터 처리(Missing data treatment)**에서 **누락 데이터를 불량으로 처리(임계값 위반)(Treat missing data as bad (breaching threshold))**를 선택합니다. 자세한 설명은 *Amazon CloudWatch 사용자 가이드*의 [CloudWatch 경보가 누락된 데이터를 처리하는 방법 구성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)을 참조하세요.

1. **다음**을 선택합니다.

   **작업 구성** 페이지가 표시됩니다.

1. **알림(Notification)**에서 경보가 `ALARM` 상태, `OK` 상태 또는 `INSUFFICIENT_DATA` 상태일 때 알릴 Amazon SNS 주제를 선택합니다.

   경보가 동일한 경보 상태 또는 다른 경보 상태에 대해 여러 개의 알림을 보내도록 설정하려면 **알림 추가**를 선택합니다.

   경보에서 알림을 보내지 않게 하려면 **제거(Remove)**를 선택합니다.

1. **작업 구성(Configure actions)** 페이지의 다른 섹션은 비워둘 수 있습니다. 다른 섹션을 비워 두면 조정 정책에 연결하지 않고도 경보가 생성됩니다. 그런 다음 Amazon EC2 Auto Scaling 콘솔에서 경보를 조정 정책에 연결할 수 있습니다.

1. **다음**을 선택합니다.

1. 경보의 이름(예: `Step-Scaling-AlarmLow-RemoveCapacity`)과 설명(옵션)을 입력하고 **다음(Next)**을 선택합니다.

1. **경보 생성**을 선택하세요.

다음 절차에 따라 CloudWatch 경보를 생성한 후부터 계속 진행합니다.

**2단계: 스케일 인을 위한 단계 조정 정책 생성**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 열고 탐색 창에서 **Auto Scaling 그룹(Auto Scaling Groups)**을 선택합니다.

1. Auto Scaling 그룹 옆의 확인란을 선택합니다.

   페이지 하단에 분할 창이 열립니다.

1. 스케일링 제한이 적절하게 설정되었는지 확인합니다. 예를 들어 그룹의 원하는 용량이 이미 최소치에 있는 경우, 스케일 인하려면 새로운 최솟값을 지정해야 합니다. 자세한 내용은 [Auto Scaling 그룹에 대한 스케일링 제한 설정](asg-capacity-limits.md) 단원을 참조하십시오.

1. **자동 크기 조정(Automatic scaling)** 탭의 **동적 크기 조정 정책(Dynamic scaling policies)**에서 **동적 크기 조정 정책 생성(Create dynamic scaling policy)**을 선택합니다.

1. **정책 유형**에서 **단계 조정**을 선택한 다음 정책의 이름을 지정합니다.

1. **CloudWatch 경보(CloudWatch alarm)**에서 경보를 선택합니다. 경보를 아직 생성하지 않은 경우 **CloudWatch 경보 생성**을 선택하고 이전 절차의 4단계\$114단계까지 완료하여 경보를 생성합니다.

1. **다음 작업을 수행(Take the action)**을 사용하여 이 정책을 실행할 때 적용할 현재 그룹 크기 변경을 지정합니다. 특정 인스턴스 개수 또는 기존 그룹 크기의 백분율을 제거하거나 그룹을 정확한 크기로 설정할 수 있습니다.

   예를 들어 그룹의 용량을 두 인스턴스만큼 줄이는 스케일 인 정책을 생성하려면 `Remove`를 선택하고 다음 필드에 `2`를 입력한 후 `capacity units`을 선택합니다. 기본적으로 이 단계별 조정의 상한값은 경보 임계값이고 하한값은 음(-)의 무한대입니다.

1. 다른 단계를 추가하려면 **단계 추가(Add step)**를 선택한 다음 조정할 양과 경보 임계값에 상대적인 단계 하한 및 상한을 정의합니다.

1. **생성(Create)**을 선택합니다.

------
#### [ AWS CLI ]

스케일 인(용량 감소)에 대한 단계 조정 정책을 생성하려면 다음 예제 명령을 사용합니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

를 사용하는 경우 AWS CLI먼저 지표 값이 감소할 때 스케일 인하는 방법에 대한 지침을 Amazon EC2 Auto Scaling에 제공하는 단계 조정 정책을 생성합니다. 그런 다음 조사하려는 지표를 식별하여 경보를 생성하고 지표 하한 임곗값과 경보에 대한 기타 세부 정보를 정의한 다음, 해당 경보를 조정 정책과 연결합니다.

**1단계: 스케일 인을 위한 정책 생성**  
연결된 CloudWatch 경보가 지표 하한 임계값을 위반하면 다음 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여 그룹 용량을 인스턴스 2개만큼 줄이는 `ChangeInCapacity` 조절 유형으로 `my-step-scale-in-policy`라는 단계별 조정 정책을 생성합니다.

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-in-policy \
  --policy-type StepScaling \
  --adjustment-type ChangeInCapacity \
  --step-adjustments MetricIntervalUpperBound=0.0,ScalingAdjustment=-2
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다.

```
{
    "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:autoScalingGroupName/my-asg:policyName/my-step-scale-out-policy
}
```

**2단계: 지표 하한 임곗값에 대한 CloudWatch 경보 생성**  
CloudWatch [put-metric-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-alarm.html) 명령을 사용하여 평균 CPU 임계값 40%를 기준으로 최소 2회 연속 2분간의 평가 기간에 Auto Scaling 그룹의 크기를 줄이라는 경보를 생성합니다. 사용자 지정 지표를 사용하려면 `--metric-name`에 지표 이름을 지정하고, `--namespace`에 네임스페이스를 지정합니다.

```
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmLow-RemoveCapacity \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average \
  --period 120 --evaluation-periods 2 --threshold 40 \
  --comparison-operator LessThanOrEqualToThreshold \
  --dimensions "Name=AutoScalingGroupName,Value=my-asg" \
  --alarm-actions PolicyARN
```

------

# 단순 조정 정책
<a name="simple-scaling-policies"></a>

다음 예제에서는 CLI 명령을 사용하여 단순 조정 정책을 생성하는 방법을 보여줍니다. 예제는 이를 사용하려는 모든 고객을 위한 참조로 이 문서에 남아 있지만 대신 대상 추적 또는 단계 조정 정책을 사용하는 것이 좋습니다.

단계 조정 정책과 마찬가지로 단순 조정 정책은 조정 정책에 대한 CloudWatch 경보를 생성해야 합니다. 생성하는 정책에서 인스턴스를 추가 또는 제거할지와 몇 개를 추가 또는 제거할지를 정의하거나 그룹을 정확한 크기로 설정해야 합니다.

단계 조정 정책과 단순 조정 정책의 주요 차이점 중 하나는 단계 조정 정책에서 얻을 수 있는 단계 조정입니다. 단계 조정을 사용하면 지정한 단계 조정을 기반으로 그룹 크기를 더 크게 또는 더 작게 변경할 수 있습니다.

또한 단순 조정 정책은 진행 중인 조정 활동 또는 상태 확인 교체가 완료될 때까지 그리고 추가 경보에 응답하기 전에 [휴지 기간](ec2-auto-scaling-scaling-cooldowns.md)을 기다려야 합니다. 반면 단계 조정에서는 조정 활동 또는 상태 확인 교체가 진행 중인 동안에도 정책이 추가 경보에 계속 응답합니다. 즉 Amazon EC2 Auto Scaling은 경보 메시지를 수신할 때 모든 경보 위반을 평가합니다. 따라서 조정이 하나만 있는 경우에도 단계 조정 정책을 대신 사용하는 것이 좋습니다.

Amazon EC2 Auto Scaling은 초기에 단순 조정 정책만 지원했습니다. 대상 추적 및 단계 조정 정책을 도입하기 전에는 조정 정책을 생성하면 정책이 단순 조정 정책으로 처리되었습니다.

## 스케일 아웃을 위한 단순 조정 정책 생성
<a name="simple-scaling-create-scale-out-policy"></a>

연결된 CloudWatch 경보가 지표 상한 임계값을 위반하면 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여 그룹 용량을 30% 늘리는 `PercentChangeInCapacity` 조절 유형으로 `my-simple-scale-out-policy`라는 단순 조정 정책을 생성합니다.

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-out-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment 30 \
  --adjustment-type PercentChangeInCapacity
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다.

## 스케일 인을 위한 단순 조정 정책 생성
<a name="simple-scaling-create-scale-in-policy"></a>

연결된 CloudWatch 경보가 지표 하한 임계값을 위반하면 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여 그룹 용량을 인스턴스 1개만큼 줄이는 `ChangeInCapacity` 조절 유형으로 `my-simple-scale-in-policy`라는 단순 조정 정책을 생성합니다.

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-in-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment -1 \
  --adjustment-type ChangeInCapacity --cooldown 180
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다.