Amazon ECS 블루/그린 배포 생성

Amazon ECS 블루/그린 배포 생성

Amazon ECS 블루/그린 배포를 사용하면 변경 사항을 프로덕션 환경에 구현하기 전에 만들고 테스트할 수 있습니다. 이 글에서는 블루/그린 배포를 시작하는 방법을 알아봅니다.

출처: 문서

본문

Amazon ECS 블루/그린 배포를 사용하면 변경 사항을 프로덕션 환경에 구현하기 전에 만들고 테스트할 수 있어요.

사전 요구 사항 (Prerequisites)

블루/그린 배포를 시작하기 전에 다음 작업을 수행합니다.

  1. 적절한 권한을 구성합니다.
    • Elastic Load Balancing 권한에 대한 정보는 로드 밸런서용 Amazon ECS 인프라 IAM 역할 문서를 참고하세요.
    • Lambda 권한에 대한 정보는 Amazon ECS 블루/그린 배포의 Lambda 함수에 필요한 권한 문서를 참고하세요.
  2. (선택 사항) 관리형 트래픽 이동(managed traffic shifting)을 위해 다음 리소스 중 하나를 구성합니다. 서비스가 헤드리스(headless, 로드 밸런서나 Service Connect가 없음)라면 이 단계를 건너뛸 수 있어요. Amazon ECS는 헤드리스 서비스에 대해 트래픽 이동을 자동으로 관리하지 않습니다.
    • Application Load Balancer — 자세한 내용은 블루/그린, 선형, 카나리아 배포용 Application Load Balancer 리소스 문서를 참고하세요.
    • Network Load Balancer — 자세한 내용은 Amazon ECS 블루/그린, 선형, 카나리아 배포용 Network Load Balancer 리소스 문서를 참고하세요.
    • Service Connect — 자세한 내용은 Amazon ECS 블루/그린, 선형, 카나리아 배포용 Service Connect 리소스 문서를 참고하세요.
  3. 수명 주기 단계에서 Lambda 함수를 실행할지 결정합니다:
    • PRE_SCALE_UP
    • POST_SCALE_UP
    • TEST_TRAFFIC_SHIFT
    • POST_TEST_TRAFFIC_SHIFT
    • PRODUCTION_TRAFFIC_SHIFT
    • POST_PRODUCTION_TRAFFIC_SHIFT
    • 자세한 내용은 AWS Lambda 개발자 가이드의 콘솔로 Lambda 함수 생성 문서를 참고하세요.

절차 (Procedure)

콘솔 또는 AWS CLI를 사용해 Amazon ECS 블루/그린 서비스를 만들 수 있습니다.

콘솔 (Console)

  1. 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
  2. 서비스를 시작할 리소스를 결정합니다.
    • Clusters에서: Clusters 페이지에서 서비스를 만들 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 표시됩니다. Services 탭에서 Create를 선택합니다.
    • Task definition에서: Task definitions 페이지에서 태스크 정의를 선택합니다. Deploy 메뉴에서 Create service를 선택합니다.
  3. Create service 페이지가 표시됩니다. Service details 아래에서 다음을 수행합니다:
    • Task definition family에서 사용할 태스크 정의를 선택합니다. 그런 다음 Task definition revision에서 사용할 개정을 입력합니다.
    • Service name에 서비스 이름을 입력합니다.
    • 기존 클러스터에서 서비스를 실행하려면 Existing cluster에서 클러스터를 선택합니다. 새 클러스터에서 서비스를 실행하려면 Create cluster를 선택합니다.
  4. 태스크가 클러스터 인프라에 분산되는 방식을 선택합니다. Compute configuration 아래에서 옵션을 선택합니다.
    • Capacity provider strategy 방식: Compute options 아래에서 Capacity provider strategy를 선택합니다. 전략을 선택합니다:
      • 클러스터의 기본 capacity provider 전략을 사용하려면 Use cluster default를 선택합니다.
      • 클러스터에 기본 capacity provider 전략이 없거나 사용자 지정 전략을 사용하려면 Use custom, Add capacity provider strategy를 선택한 다음 Base, Capacity provider, Weight를 지정하여 사용자 지정 capacity provider 전략을 정의합니다.
      • 참고: 전략에서 capacity provider를 사용하려면 capacity provider가 클러스터와 연결되어 있어야 합니다.
    • Launch type 방식: Compute options 섹션에서 Launch type을 선택합니다. Launch type에서 시작 유형을 선택합니다. (선택 사항) Fargate가 지정된 경우 Platform version에서 사용할 플랫폼 버전을 지정합니다. 플랫폼 버전을 지정하지 않으면 LATEST 플랫폼 버전이 사용됩니다.
  5. Deployment configuration 아래에서 다음을 수행합니다:
    • Service type에서 Replica를 선택합니다.
    • Desired tasks에 서비스에서 실행하고 유지할 태스크 수를 입력합니다.
    • Amazon ECS가 가용 영역 간 태스크 분포를 모니터링하고 불균형이 있을 때 재분배하도록 하려면 Availability Zone service rebalancing 아래에서 Availability Zone service rebalancing을 선택합니다.
    • Health check grace period에 태스크가 처음 시작된 후 서비스 스케줄러가 비정상 Elastic Load Balancing, VPC Lattice, 컨테이너 상태 확인을 무시하는 시간(초)을 입력합니다. 상태 확인 유예 기간 값을 지정하지 않으면 기본값 0이 사용됩니다.
    • Bake time에 블루 개정이 종료되기 전에 블루와 그린 서비스 개정이 동시에 실행될 분(minute) 수를 입력합니다. 이는 검증과 테스트를 위한 시간을 제공합니다.
  6. (선택 사항) 배포의 특정 단계에서 실행할 수명 주기 훅(lifecycle hook)을 구성합니다. Deployment lifecycle hooks 아래에서 Add를 선택합니다.
    • Lambda hooks의 경우: Target type에서 Lambda를 선택합니다. Lambda function에 함수 이름이나 ARN을 입력합니다. Role에서 Lambda 함수를 호출할 권한이 있는 IAM 역할을 선택합니다. Lifecycle stages에서 Lambda 함수가 실행되어야 하는 단계를 선택합니다.
    • pause hooks의 경우: Target type에서 Pause를 선택합니다. Lifecycle stages에서 배포가 일시 중지되어야 하는 단계를 선택합니다. (선택 사항) Timeout에서 시간 초과 기간과 동작을 구성합니다.
  7. Amazon ECS가 배포 실패를 감지하고 처리하는 방법을 구성하려면 Deployment failure detection을 확장하고 옵션을 선택합니다:
    • 태스크를 시작할 수 없을 때 배포를 중지하려면 Use the Amazon ECS deployment circuit breaker를 선택합니다.
    • 배포 서킷 브레이커가 배포를 실패 상태로 설정할 때 소프트웨어가 배포를 마지막 완료된 배포 상태로 자동 롤백하게 하려면 Rollback on failures를 선택합니다.
    • 애플리케이션 지표에 따라 배포를 중지하려면 **Use CloudWatch alarm(s)**를 선택합니다. 그런 다음 CloudWatch alarm name에서 알람을 선택합니다. 새 알람을 만들려면 CloudWatch 콘솔로 이동합니다.
    • CloudWatch 알람이 배포를 실패 상태로 설정할 때 소프트웨어가 배포를 마지막 완료된 배포 상태로 자동 롤백하게 하려면 Rollback on failures를 선택합니다.
  8. (선택 사항) Service Connect로 서비스를 상호 연결하려면 Service Connect를 확장하고 다음을 지정합니다:
    • Turn on Service Connect를 선택합니다.
    • Service Connect configuration 아래에서 클라이언트 모드를 지정합니다. 네임스페이스의 다른 서비스에만 연결하면 되는 네트워크 클라이언트 애플리케이션을 실행한다면 Client side only를 선택합니다. 네트워크 또는 웹 서비스 애플리케이션을 실행하고 이 서비스에 대한 엔드포인트를 제공하면서 네임스페이스의 다른 서비스에도 연결한다면 Client and server를 선택합니다.
    • 기본 클러스터 네임스페이스가 아닌 네임스페이스를 사용하려면 Namespace에서 서비스 네임스페이스를 선택합니다. 이는 같은 AWS 리전의 AWS 계정에 별도로 생성된 네임스페이스이거나, AWS Resource Access Manager(AWS RAM)를 사용해 계정에 공유된 같은 리전의 네임스페이스일 수 있어요.

더 알아보기 (Learn more)

  • 블루/그린 배포 구성에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.