

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

# Elastic Beanstalk 롤링 환경 구성 업데이트
<a name="using-features.rollingupdates"></a>

[구성 변경 사항으로 인해 인스턴스의 교체가 필요한 경우](environments-updating.md) Elastic Beanstalk는 업데이트를 배치 형태로 수행해 변경 사항이 전파되는 동안 가동 중지를 방지할 수 있습니다. 롤링 업데이트 중 용량은 단일 배치 크기만큼만 줄어들며 이 크기는 직접 구성할 수 있습니다. Elastic Beanstalk는 인스턴스 배치 하나를 서비스에서 제외하고 종료한 다음 새 구성 배치를 시작합니다. 새 배치가 요청을 처리하기 시작하면 Elastic Beanstalk는 다음 배치를 시작합니다.

롤링 구성 업데이트 배치는 배치 간 지연 시간을 설정하거나(시간 기반) 상태 확인 내용에 기반하는 방식으로 간격을 두고 처리할 수 있습니다. 시간 기반 롤링 업데이트의 경우 인스턴스 배치 시작을 완료한 후 다음 배치를 시작하기까지 Elastic Beanstalk가 대기하는 시간을 구성할 수 있습니다. 이 일시 중지 시간 동안 애플리케이션은 부트스트랩을 수행하고 요청 처리를 시작할 수 있습니다.

상태 확인 기반 롤링 업데이트의 경우 Elastic Beanstalk는 배치의 인스턴스가 상태 확인을 통과할 때까지 대기했다가 다음 배치를 시작합니다. 인스턴스의 상태는 상태 확인 보고 시스템(기본 또는 고급)에서 판단합니다. [기본 상태 확인](using-features.healthstatus.md)에서는 배치의 모든 인스턴스가 Elastic Load Balancing(ELB) 상태 확인을 통과하는 즉시 해당 배치가 정상으로 간주됩니다.

[확장 상태 보고](health-enhanced.md)에서는 배치의 모든 인스턴스가 여러 연속 상태 확인을 통과해야 Elastic Beanstalk가 다음 배치를 시작합니다. 확장 상태 확인에서는 인스턴스만 확인하는 ELB 상태 확인 외에도 애플리케이션 로그와 환경 내 기타 리소스의 상태를 모니터링합니다. 확장 상태 확인을 사용하는 웹 서버 환경에서는 모든 인스턴스가 2분간 12가지 상태 확인을 통과해야 합니다(작업자 환경의 경우 3분간 18가지 상태 확인). 상태 확인을 한 가지라도 통과하지 못하는 인스턴스가 있으면 개수가 초기화됩니다.

롤링 업데이트 제한 시간(기본값: 30분) 내에 배치의 상태가 정상적으로 되지 않으면 업데이트가 취소됩니다. 롤링 업데이트 제한 시간은 [구성 옵션](command-options.md)이며 `aws:autoscaling:updatepolicy:rollingupdate` 네임스페이스에서 확인할 수 있습니다. 애플리케이션이 상태 확인을 통과(`Ok` 상태)하지 않았으나 다른 수준에서 안정적이라면, [`aws:elasticbeanstalk:healthreporting:system`](command-options-general.md#command-options-general-elasticbeanstalkhealthreporting) 네임스페이스에서 `HealthCheckSuccessThreshold` 옵션을 설정하여 Elastic Beanstalk에서 인스턴스가 정상이라고 판단하는 수준을 변경할 수 있습니다.

롤링 업데이트 프로세스가 실패하면 Elastic Beanstalk는 다른 롤링 업데이트를 시작하여 이전 구성으로 롤백합니다. 롤링 업데이트는 상태 확인이 실패하는 경우나 새 인스턴스를 시작한 결과 계정의 할당량을 초과하는 경우 실패할 수 있습니다. 예를 들어, Amazon EC2 인스턴스의 개수 할당량에 도달했다면 롤링 업데이트에서 새 인스턴스 배치를 프로비저닝하고자 시도할 때 업데이트가 실패할 수 있습니다. 이 경우 롤백 역시 실패합니다.

롤백이 실패하면 업데이트 프로세스가 종료되고 환경이 비정상 상태가 됩니다. 처리되지 않은 배치는 기존 구성을 사용하는 실행 중인 인스턴스가 되고, 처리가 성공적으로 완료된 배치에는 새 구성이 적용됩니다. 롤백이 실패한 후 환경을 수정하려면 먼저 업데이트 실패를 유발한 근원적 문제를 해결한 후 다른 환경 업데이트를 초기화하십시오.

다른 방법으로는 다른 환경에 새 애플리케이션 버전을 배포한 후 CNAME 스왑을 수행해 가동 중지 없이 트래픽을 리디렉션하는 것이 있습니다. 자세한 정보는 [Elastic Beanstalk를 사용한 블루/그린 배포](using-features.CNAMESwap.md)을 참조하세요.

## 롤링 업데이트와 롤링 배포의 비교
<a name="environments-cfg-rollingupdates-deployments"></a>

롤링 업데이트는 설정 변경으로 새 Amazon EC2 인스턴스를 환경에 맞게 프로비저닝해야 하는 경우에 발생합니다. 인스턴스 유형 및 키 페어 설정과 같은 Auto Scaling 그룹 구성을 변경하는 경우와 VPC 설정을 변경하는 경우가 여기에 해당됩니다. 롤링 업데이트에서는 새 배치를 프로비저닝해 이전 배치를 교체하기 전에 각 인스턴스 배치가 종료됩니다.

[롤링 배포](using-features.rolling-version-deploy.md)는 애플리케이션을 배포할 때마다 발생하며, 일반적으로 환경의 인스턴스를 교체하지 않고 수행할 수 있습니다. Elastic Beanstalk는 각 배치를 서비스에서 제외하고 새 애플리케이션 버전을 배포한 후 이 버전을 서비스 상태로 되돌립니다.

단, 인스턴스를 교체하는 동시에 새 애플리케이션 버전을 배포해야 하는 설정 변경은 예외입니다. 예를 들어 소스 번들의 [구성 파일](ebextensions.md)에서 [키 이름](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 설정을 변경하고 이 파일을 환경에 배포하면 롤링 업데이트가 트리거됩니다. 기존 인스턴스 배치 각각에 새 애플리케이션 버전을 배포하는 대신 새 인스턴스 배치가 새 구성으로 프로비저닝됩니다. 이 경우 새 인스턴스가 새 애플리케이션 버전으로 추가되므로 별도의 배포는 발생하지 않습니다.

새 인스턴스가 환경 업데이트의 일환으로 프로비저닝될 때에는 애플리케이션의 소스 코드가 새 인스턴스에 배포되고 인스턴스의 운영 체제 또는 소프트웨어를 수정하는 구성 설정이 적용되는 배포 단계가 존재합니다. [배포 상태 확인 설정](using-features.rolling-version-deploy.md#environments-cfg-rollingdeployments-console)(**상태 확인 무시**, **정상 임계 값** 및 **명령 제한 시간**)도 배포 단계 진행 동안 상태 기반 롤링 업데이트와 변경 불가능한 업데이트에 적용됩니다.

## 롤링 업데이트 구성
<a name="rollingupdates-configure"></a>

Elastic Beanstalk 콘솔에서 롤링 업데이트를 활성화하고 구성할 수 있습니다.

**롤링 업데이트를 활성화하는 방법**

1. [Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)을 열고 **리전** 목록에서를 선택합니다 AWS 리전.

1. 탐색 창에서 **환경**을 선택한 다음 목록에서 환경의 이름을 선택합니다.

1. 탐색 창에서 **구성**을 선택합니다.

1. [**롤링 업데이트와 배포**] 구성 범주에서 [**편집**]을 선택합니다.

1. **구성 업데이트** 섹션의 **롤링 업데이트 유형**에서 **롤링** 옵션 중 하나를 선택합니다.  
![롤링 업데이트와 배포 수정 구성 페이지의 구성 업데이트 단원](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-rolling-updates-health.png)

1. Choose **배치 크기**, **최소 용량**, **일시 중지 시간** 순으로 설정합니다.

1. 변경 사항을 저장하려면 페이지 하단에서 **적용**을 선택합니다.

**롤링 업데이트와 배포(Rolling updates and deployments)** 페이지의 **구성 업데이트(Configuration updates)** 섹션에는 다음과 같은 롤링 업데이트 옵션이 있습니다.
+ **롤링 업데이트 유형** – 업데이트를 완료한 인스턴스가 부트스트래핑을 마치고 트래픽 서비스를 시작할 수 있도록 Elastic Beanstalk는 다음 배치로 이동하기 전에 인스턴스 배치 업데이트를 완료합니다. 다음 옵션 중 하나를 선택합니다.
  + **상태 기반 롤링** – 현재 배치의 인스턴스가 정상으로 판정될 때까지 대기했다가 인스턴스를 서비스 상태로 되돌리고 다음 배치를 시작합니다.
  + **시간 기반 롤링** – 새 인스턴스를 시작하는 시점과 이 인스턴스를 서비스 상태로 되돌리고 다음 배치를 시작하는 시점 사이의 시간 간격을 지정합니다.
  + **변경 불가능** – [변경이 불가능한 업데이트](environmentmgmt-updates-immutable.md)를 수행해 새 인스턴스 그룹에 구성 변경 사항을 적용합니다.
+ **배치 크기** – 각 배치에서 교체할 인스턴스 수(**1** \~ **10000**)입니다. 기본적으로 이 값은 Auto Scaling 그룹의 최소 크기의 1/3(정수로 반올림)입니다.
+ **최소 용량** – 다른 인스턴스가 업데이트되는 동안 실행 상태를 유지하는 인스턴스의 최소 수(**0** \~ **9999**)입니다. 기본값은 Auto Scaling 그룹 최소 크기에 해당하는 값과 Auto Scaling 그룹의 최대 크기에서 1을 뺀 값 중 더 작은 쪽입니다.
+ **일시 중지 시간**(시간 기반만 해당) – 애플리케이션이 트래픽 서비스를 시작할 수 있도록, 배치를 업데이트한 후 다음 배치를 시작하기까지의 대기 시간입니다. 범위는 0초\~1시간입니다.

## aws:autoscaling:updatepolicy:rollingupdate 네임스페이스
<a name="rollingupdate-namespace"></a>

`aws:autoscaling:updatepolicy:rollingupdate` 네임스페이스의 [구성 옵션](command-options.md)을 사용해 롤링 업데이트를 구성할 수도 있습니다.

`RollingUpdateEnabled` 옵션을 사용해 롤링 업데이트를 활성화하고 `RollingUpdateType`을 사용해 업데이트 유형을 선택하십시오. 다음 지원 값은 `RollingUpdateType`에서 사용할 수 있습니다.
+ `Health` – 현재 배치의 인스턴스가 정상으로 판정될 때까지 대기했다가 인스턴스를 서비스 상태로 되돌리고 다음 배치를 시작합니다.
+ `Time` – 새 인스턴스를 시작하는 시점과 이 인스턴스를 서비스 상태로 되돌리고 다음 배치를 시작하는 시점 사이의 시간 간격을 지정합니다.
+ `Immutable` – [변경이 불가능한 업데이트](environmentmgmt-updates-immutable.md)를 수행해 새 인스턴스 그룹에 구성 변경 사항을 적용합니다.

롤링 업데이트를 활성화할 때는 `MaxBatchSize` 및 `MinInstancesInService` 옵션을 설정해 각 배치의 크기를 구성하십시오. 시간 기반 및 상태 확인 기반 롤링 업데이트의 경우 각각 `PauseTime`과 `Timeout`도 구성할 수 있습니다.

예를 들어, 한 번에 최대 5개의 인스턴스를 시작하되 최소 2개의 인스턴스를 서비스 상태로 유지하고 배치 간 5분 30초를 대기하는 형태라면 다음과 같이 옵션 및 값을 지정하십시오.

**Example .ebextensions/timebased.config**  

```
option_settings:
  aws:autoscaling:updatepolicy:rollingupdate:
    RollingUpdateEnabled: true
    MaxBatchSize: 5
    MinInstancesInService: 2
    RollingUpdateType: Time
    PauseTime: PT5M30S
```

상태 기반 롤링 업데이트를 활성화하고 각 배치의 제한 시간을 45분으로 설정하려면 다음 옵션 및 값을 지정하십시오.

**Example .ebextensions/healthbased.config**  

```
option_settings:
  aws:autoscaling:updatepolicy:rollingupdate:
    RollingUpdateEnabled: true
    MaxBatchSize: 5
    MinInstancesInService: 2
    RollingUpdateType: Health
    Timeout: PT45M
```

`Timeout` 및 `PauseTime` 값은 [ISO8601 기간](http://en.wikipedia.org/wiki/ISO_8601#Durations) 형식(`PT{{#}}H{{#}}M{{#}}S`)으로 지정해야 합니다. 각 \#은 각각 시, 분 또는 초를 가리킵니다.

EB CLI 및 Elastic Beanstalk 콘솔에서 위 옵션의 권장 값을 적용합니다. 구성 파일을 사용해 동일하게 구성하고자 하는 경우 이러한 설정을 제거해야 합니다. 세부 정보는 [권장 값](command-options.md#configuration-options-recommendedvalues) 섹션을 참조하세요.