

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

# 컴퓨팅 환경에 대한 블루/그린 업데이트 수행
<a name="blue-green-updates"></a>

블루/그린 업데이트는 기존 컴퓨팅 환경(블루)과 함께 새 컴퓨팅 환경(그린)을 생성하여 가동 중지 시간과 리스크를 줄이는 업데이트 전략입니다. 이 접근 방식은 기존 환경의 작동을 유지하면서 워크로드를 새 환경으로 점진적으로 전환할 수 있게 해 줍니다. 블루/그린 업데이트는 가장 안전한 업데이트 경로를 제공하며 모든 서비스 역할 유형 또는 할당 전략과 작동합니다.

## 개요
<a name="blue-green-overview"></a>

블루/그린 업데이트는 프로덕션 환경에 적합한 몇 가지 이점을 제공합니다. 업데이트 프로세스 중에 워크로드의 지속적인 실행을 유지하여 *가동 중지 시간을 0으로 유지*합니다. 이 접근 방식을 사용하면 *쉬운 롤백*이 가능하여 문제가 발생했을 때 원래 환경으로 빠르게 되돌릴 수 있습니다. *점진적 전환* 전략을 구현하여 프로덕션 워크로드를 완전히 전환하기 전에 새 환경의 성능을 확인할 수 있습니다. 또한 이 방법은 제거를 선택하기 전까지 원래 환경이 변경 없이 운영되므로 뛰어난 *위험 완화* 기능을 제공합니다.

### 블루/그린 업데이트가 필요한 경우
<a name="blue-green-when-required"></a>

다음과 같은 상황에서는 블루/그린 업데이트를 사용해야 합니다.
+ 컴퓨팅 환경에서 `BEST_FIT` 할당 전략을 사용하는 경우(인프라 업데이트를 지원하지 않음).
+ 컴퓨팅 환경에서 *AWSServiceRoleForBatch* 서비스 연결 역할을 사용하지 않는 경우.
+ 서로 다른 서비스 역할 유형 간에 전환해야 하는 경우.

### 블루/그린 업데이트가 권장되는 경우
<a name="blue-green-when-recommended"></a>

워크로드에 가동 중지 시간이 없는 프로덕션 환경에는 블루/그린 업데이트를 사용하는 것이 좋습니다. 이 접근 방식은 프로덕션 워크로드를 전환하기 전에 새 구성을 테스트하여 변경 사항이 성능 및 신뢰성 요구 사항을 충족하는지 확인해야 할 때 효과적입니다. 특히 상당한 변경 사항이 있는 사용자 지정 AMI를 업데이트하는 경우 등 운영에 있어 빠른 롤백 기능이 중요할 때 블루/그린 업데이트를 선택합니다. 이 방법은 변경 사항을 완전히 적용하기 전에 성능 특성 및 동작을 검증하여 업데이트 프로세스에 대한 신뢰도를 제공하려는 경우에도 이상적입니다.

### 사전 조건
<a name="blue-green-prerequisites"></a>

블루/그린 업데이트를 수행하기 전에 다음을 확인합니다.
+ 컴퓨팅 환경을 생성하고 관리하기 위한 적절한 [IAM 권한](IAM_policies.md).
+ 작업 대기열 설정을 보고 수정할 수 있는 액세스 권한.
+ 전환 중에 발생할 수 있는 장애를 처리하기 위해 작업 정의에 대해 구성된 작업 재시도 전략 자세한 내용은 [작업 자동 재시도](job_retries.md) 단원을 참조하십시오.
+ 새 컴퓨팅 환경의 AMI ID. 이는 다음 중 하나일 수 있습니다.
  + Amazon ECS 최적화 AMI의 승인된 최신 버전(기본적으로 사용됨).
  + Amazon ECS 컨테이너 인스턴스 AMI 사양을 충족하는 사용자 지정 AMI 사용자 지정 AMI를 사용하는 경우 다음 방법 중 하나로 지정할 수 있습니다.
    + EC2 구성에서 **이미지 ID 재정**의 필드 사용.
    + 시작 템플릿에서 지정합니다.

    자체 사용자 지정 AMI 생성에 대한 자세한 정보는 [자습서: 컴퓨팅 리소스 AMI 생성](create-batch-ami.md) 섹션을 참조하세요.

새 환경을 생성하기 전에 기존 컴퓨팅 환경의 구성을 기록해 두어야 합니다. AWS Management Console 또는를 사용하여이 작업을 수행할 수 있습니다 AWS CLI.

**참고**  
다음 절차에서는 AMI만 변경하는 블루/그린 업데이트를 수행하는 방법을 자세히 설명합니다. 새 환경에 대한 다른 설정을 업데이트할 수 있습니다.

**중요**  
이전(블루) 컴퓨팅 환경을 제거하면 인스턴스가 종료되므로 해당 인스턴스에서 현재 실행 중인 모든 작업이 실패합니다. 이러한 실패를 자동 처리하도록 작업 정의에 작업 재시도 전략을 구성하세요. 자세한 내용은 [작업 자동 재시도](job_retries.md) 단원을 참조하십시오.  
새 환경에 대한 확신이 생기면:  
작업 대기열을 편집하여 이전 컴퓨팅 환경을 제거합니다.
이전 환경에서 실행 중인 작업이 완료될 때까지 기다립니다.
이전 컴퓨팅 환경을 삭제합니다.

------
#### [ Performing blue/green updates using the AWS Management Console ]

1. 현재 컴퓨팅 환경 복제

   1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) AWS Batch 콘솔을 엽니다.

   1. 기존 컴퓨팅 환경을 선택합니다.

   1. **작업**을 선택한 다음 **복제**를 선택합니다.

   1. **이름**에 해당 컴퓨팅 환경의 고유한 이름을 입력합니다.

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

   1. **인스턴스 구성** 섹션에서 AMI 설정을 업데이트합니다.

      1. **추가 구성**을 확장합니다.

      1. **EC2 구성**에서 **이미지 유형**에 새 AMI 유형을 지정하고 **이미지 ID 재정의** 필드에 AMI ID를 지정합니다.

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

   1. **네트워크 구성**에서 **다음**을 선택합니다.

   1. 기존 환경에서 자동으로 복사되는 다른 설정을 검토합니다.

   1. **컴퓨팅 환경 생성**을 선택합니다.

   1. 새 컴퓨팅 환경 상태가 `VALID`가 될 때까지 기다립니다.

1. 작업 대기열 순서 변경

   1. 탐색 창에서 **작업 대기열**을 선택합니다.

   1. 기존 컴퓨팅 환경과 연결된 작업 대기열을 선택합니다.

   1. **편집**을 선택합니다.

   1. **연결된 컴퓨팅 환경**에 새 컴퓨팅 환경을 추가합니다.
      + 기존 환경보다 순서 번호가 높게 새 컴퓨팅 환경을 추가하여 워크로드를 전환합니다.
      + 새 환경이 올바르게 작동하는지 확인한 후에는 더 낮은 순서 번호를 지정하여 기본 환경으로 만들 수 있습니다.

   1. **작업 대기열 업데이트**를 선택합니다.

1. 정리

   1. 새 환경에서 작업 실행을 모니터링하여 모든 것이 예상대로 작동하는지 확인합니다.

   1. 새 환경에 대한 확신이 생기면:

      1. 작업 대기열을 편집하여 이전 컴퓨팅 환경을 제거합니다.

      1. 이전 환경에서 실행 중인 작업이 완료될 때까지 기다립니다.

      1. 이전 컴퓨팅 환경을 삭제합니다.

------
#### [ Performing blue/green updates using the AWS CLI ]

1. 를 사용하여 구성을 가져오려면 다음 명령을 AWS CLI사용합니다.

   ```
   aws batch describe-compute-environments \
     --compute-environments {{your-compute-environment-name}}
   ```

   새 환경을 생성할 때 참조할 수 있도록 출력을 저장해 둡니다.

1. 기존 환경의 구성을 사용하되 새 AMI를 사용하여 새 컴퓨팅 환경을 생성합니다. 다음은 명령 구조의 예입니다.

   예제 값을 이전 단계의 실제 구성으로 바꿉니다.

   ```
   cat <<EOF > ./blue-green-compute-environment.json
   {
     "computeEnvironmentName": "{{your-new-compute-environment-name}}",
     "type": "MANAGED",
     "state": "ENABLED",
     "computeResources": {
       "instanceRole": "arn:aws:iam::{{012345678901}}:instance-profile/ecsInstanceRole",
       "type": "EC2",
       "minvCpus": 2,
       "desiredvCpus": 2,
       "maxvCpus": 256,
       "instanceTypes": [
         "optimal"
       ],
       "allocationStrategy": "BEST_FIT_PROGRESSIVE",
       "ec2Configuration": [
         {
           "imageType": "ECS_AL2023",
           "imageIdOverride": "{{ami-0abcdef1234567890}}"
         }
       ],
       "subnets": [,
         "{{subnet-0abcdef1234567890}}"
       ],
       "securityGroupIds": [
         "{{sg-0abcdef1234567890"}}
       ]
     }
   }
   EOF
   ```

   ```
   $ aws batch create-compute-environment --cli-input-json file://./blue-green-compute-environment.json
   ```

1. 새 환경을 사용할 수 있을 때까지 기다립니다.

   ```
   aws batch describe-compute-environments \
     --compute-environments {{your-new-compute-environment-name}} \
     --query 'computeEnvironments[].status'
   ```

1. 작업 대기열에 새 컴퓨팅 환경을 추가합니다.

   ```
   aws batch update-job-queue \
     --job-queue {{your-job-queue}} \
     --compute-environment-order order=1,computeEnvironment={{your-existing-environment}} \
     order=2,computeEnvironment={{your-new-compute-environment-name}}
   ```

1. 확인되면 다시 업데이트하여 새 환경을 기본 환경으로 만듭니다.

   ```
   aws batch update-job-queue \
     --job-queue {{your-job-queue}} \
     --compute-environment-order order=1,computeEnvironment={{your-new-compute-environment-name}}
   ```

   이전 환경에서 모든 작업이 완료되면 해당 환경을 비활성화한 다음 삭제합니다.

   ```
   aws batch update-compute-environment \
       --compute-environment {{your-existing-environment}} \
       --state DISABLED
   ```

   ```
   aws batch delete-compute-environment \
     --compute-environment {{your-existing-environment}}
   ```

------