컴퓨팅 환경에 대한 블루/그린 업데이트 수행
블루/그린 업데이트는 기존 컴퓨팅 환경(블루)과 함께 새 컴퓨팅 환경(그린)을 생성하여 가동 중지 시간과 리스크를 줄이는 업데이트 전략입니다. 이 접근 방식은 기존 환경의 작동을 유지하면서 워크로드를 새 환경으로 점진적으로 전환할 수 있게 해 줍니다. 블루/그린 업데이트는 가장 안전한 업데이트 경로를 제공하며 모든 서비스 역할 유형 또는 할당 전략과 작동합니다.
개요
블루/그린 업데이트는 프로덕션 환경에 적합한 몇 가지 이점을 제공합니다. 업데이트 프로세스 중에 워크로드의 지속적인 실행을 유지하여 가동 중지 시간을 0으로 유지합니다. 이 접근 방식을 사용하면 쉬운 롤백이 가능하여 문제가 발생했을 때 원래 환경으로 빠르게 되돌릴 수 있습니다. 점진적 전환 전략을 구현하여 프로덕션 워크로드를 완전히 전환하기 전에 새 환경의 성능을 확인할 수 있습니다. 또한 이 방법은 제거를 선택하기 전까지 원래 환경이 변경 없이 운영되므로 뛰어난 위험 완화 기능을 제공합니다.
블루/그린 업데이트가 필요한 경우
다음과 같은 상황에서는 블루/그린 업데이트를 사용해야 합니다.
-
컴퓨팅 환경에서 BEST_FIT 할당 전략을 사용하는 경우(인프라 업데이트를 지원하지 않음)
-
컴퓨팅 환경에서 AWSServiceRoleForBatch 서비스 연결 역할을 사용하지 않는 경우
-
서로 다른 서비스 역할 유형 간에 전환해야 하는 경우
블루/그린 업데이트가 권장되는 경우
블루/그린 업데이트는 워크로드의 가동 중지 시간이 0이어야 하는 프로덕션 환경에 특히 권장됩니다. 이 접근 방식은 프로덕션 워크로드를 전환하기 전에 새 구성을 테스트하여 변경 사항이 성능 및 안정성 요구 사항을 충족하는지 확인해야 할 때 효과적입니다. 특히 상당한 변경 사항이 있는 사용자 지정 AMI를 업데이트하는 경우 등 운영에 있어 빠른 롤백 기능이 중요할 때 블루/그린 업데이트를 선택합니다. 이 방법은 변경 사항을 완전히 적용하기 전에 성능 특성 및 동작을 검증하여 업데이트 프로세스에 대한 신뢰도를 제공하려는 경우에도 이상적입니다.
사전 조건
블루/그린 업데이트를 수행하기 전에 다음을 확인합니다.
-
컴퓨팅 환경을 생성 및 관리할 수 있는 적절한 IAM 권한
-
작업 대기열 설정을 보고 수정할 수 있는 액세스 권한
-
전환 중에 발생할 수 있는 장애를 처리하기 위해 작업 정의에 대해 구성된 작업 재시도 전략. 자세한 내용은 작업 자동 재시도 섹션을 참조하세요.
-
새 컴퓨팅 환경의 AMI ID. 이는 다음 중 하나일 수 있습니다.
-
Amazon ECS 최적화 AMI의 승인된 최신 버전(기본적으로 사용됨)
-
Amazon ECS 컨테이너 인스턴스 AMI 사양을 충족하는 사용자 지정 AMI. 사용자 지정 AMI를 사용하는 경우 다음 방법 중 하나로 지정할 수 있습니다.
자체 사용자 지정 AMI 생성에 대한 자세한 정보는 자습서: 컴퓨팅 리소스 AMI 생성 섹션을 참조하세요.
새 환경을 생성하기 전에 기존 컴퓨팅 환경의 구성을 기록해 두어야 합니다. 이 작업은 AWS Management 콘솔 또는 AWS CLI를 통해 수행할 수 있습니다.
다음 절차에서는 AMI만 변경하는 블루/그린 업데이트를 수행하는 방법을 자세히 설명합니다. 새 환경에 대한 다른 설정을 업데이트할 수 있습니다.
이전(블루) 컴퓨팅 환경을 제거하면 인스턴스가 종료되므로 해당 인스턴스에서 현재 실행 중인 모든 작업이 실패합니다. 이러한 실패를 자동 처리하도록 작업 정의에 작업 재시도 전략을 구성하세요. 자세한 내용은 작업 자동 재시도 섹션을 참조하세요.
새 환경에 대한 확신이 생기면:
-
작업 대기열을 편집하여 이전 컴퓨팅 환경을 제거합니다.
-
이전 환경에서 실행 중인 작업이 완료될 때까지 기다립니다.
-
이전 컴퓨팅 환경을 삭제합니다.
- Performing blue/green updates using the AWS Management 콘솔
-
-
현재 컴퓨팅 환경 복제
-
https://console.aws.amazon.com/batch/에서 AWS Batch 콘솔을 엽니다.
-
기존 컴퓨팅 환경을 선택합니다.
-
작업을 선택한 다음 복제를 선택합니다.
-
이름에 해당 컴퓨팅 환경의 고유한 이름을 입력합니다.
다음을 선택합니다.
-
인스턴스 구성 섹션에서 AMI 설정을 업데이트합니다.
-
추가 구성을 확장합니다.
-
EC2 구성에서 이미지 유형에 새 AMI 유형을 지정하고 이미지 ID 재정의 필드에 AMI ID를 지정합니다.
다음을 선택합니다.
네트워크 구성에서 다음을 선택합니다.
-
기존 환경에서 자동으로 복사되는 다른 설정을 검토합니다.
-
컴퓨팅 환경 생성을 선택합니다.
-
새 컴퓨팅 환경 상태가 VALID가 될 때까지 기다립니다.
-
작업 대기열 순서 변경
-
탐색 창에서 작업 대기열을 선택합니다.
-
기존 컴퓨팅 환경과 연결된 작업 대기열을 선택합니다.
-
편집을 선택합니다.
-
연결된 컴퓨팅 환경에 새 컴퓨팅 환경을 추가합니다.
-
작업 대기열 업데이트를 선택합니다.
-
정리
-
새 환경에서 작업 실행을 모니터링하여 모든 것이 예상대로 작동하는지 확인합니다.
-
새 환경에 대한 확신이 생기면:
-
작업 대기열을 편집하여 이전 컴퓨팅 환경을 제거합니다.
-
이전 환경에서 실행 중인 작업이 완료될 때까지 기다립니다.
-
이전 컴퓨팅 환경을 삭제합니다.
- Performing blue/green updates using the AWS CLI
-
AWS CLI를 사용하여 구성을 보려면 다음 명령을 사용합니다.
aws batch describe-compute-environments \
--compute-environments your-compute-environment-name
새 환경을 생성할 때 참조할 수 있도록 출력을 저장해 둡니다.
기존 환경의 구성을 사용하되 새 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
새 환경을 사용할 수 있을 때까지 기다립니다.
aws batch describe-compute-environments \
--compute-environments your-new-compute-environment-name \
--query 'computeEnvironments[].status'
작업 대기열에 새 컴퓨팅 환경을 추가합니다.
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
확인되면 다시 업데이트하여 새 환경을 기본 환경으로 만듭니다.
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