Amazon ECS Express Mode 서비스 업데이트

Amazon ECS Express Mode 서비스 업데이트

Express Mode 서비스는 네트워킹, 로드 밸런싱, Application Auto Scaling에 대한 구성 가능한 옵션을 제공하고 이 서비스 전반에 걸친 변경을 오케스트레이션하여 서비스 업데이트 프로세스를 단순화합니다. 이 글에서는 Express Mode 서비스를 업데이트하는 방법을 알아봅니다.

출처: 문서

본문

Express Mode 서비스는 네트워킹, 로드 밸런싱, Application Auto Scaling에 대한 구성 가능한 옵션을 제공하고 이 서비스들 간의 변경을 오케스트레이션하여 서비스 업데이트 프로세스를 단순화합니다. Express Mode 서비스를 업데이트하여 컨테이너 이미지를 수정하고, 리소스 할당을 조정하거나 구성 설정을 변경할 수 있어요. 업데이트는 가용성을 유지하기 위해 알람 기반 롤백(alarm based rollback)이 포함된 카나리아 배포(canary deployments)로 배포됩니다.

배포 동작 (Deployment behavior)

Express Mode 서비스는 기본적으로 카나리아 배포를 사용하여 안전한 업데이트와 빠른 롤백을 보장합니다:

  1. 변경 사항과 함께 새 환경이 생성되고 태스크가 배포됩니다.
  2. 트래픽의 5%가 새 환경으로 이동됩니다.
  3. 3분 이내에 두 개의 데이터 포인트에서 4xx와 5xx 오류 비율의 합이 1보다 크면 알람 기반 롤백(Alarm Based Rollbacks)이 트리거됩니다.
  4. 상태 확인(health check)이 새 태스크가 정상인지 확인합니다.
  5. 3분의 베이크 타임(bake time) 후, 트래픽의 100%가 새 환경으로 이동됩니다.
  6. 모니터링을 위한 3분의 베이크 타임 후, 이전 태스크가 점진적으로 중지되고 교체됩니다.

자세한 내용은 Amazon ECS 카나리아 배포 문서를 참고하세요.

절차 (Procedure)

  1. 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
  2. 탐색 창에서 Clusters를 선택합니다.
  3. Clusters 페이지에서 Express Mode 서비스가 포함된 클러스터의 이름을 선택합니다.
  4. 클러스터 세부 정보 페이지에서 Services 탭을 선택합니다.
  5. Express Mode 서비스를 보도록 필터를 구성합니다. Filter resource management type에서 ECS를 선택합니다. Express Mode 서비스는 이름 옆에 Express 배지가 있습니다.
  6. Configuration 아래에서:
    • Image URI에 애플리케이션에 사용할 이미지의 URI를 입력합니다. Amazon ECR 이미지를 탐색하려면 Browse ECR images를 선택하고 다음을 수행합니다:
      • Private repository에서 Amazon ECR 프라이빗 저장소를 선택합니다.
      • Image에서 이미지를 선택합니다. Select image by에서 이미지를 식별하는 방법을 선택합니다:
        • AWS는 Image digest를 선택할 것을 권장합니다.
        • 태그를 사용하려면 Image tag를 선택한 다음 태그를 선택합니다.
      • 프라이빗 레지스트리를 사용하려면 Private registry를 선택합니다. 그런 다음 Secrets Manager ARN or name에 사전 요구 사항에서 만든 Secrets Manager ARN을 입력합니다.
    • Task execution role에서 역할을 선택하거나 새 역할을 만들어 새로 고칩니다. 추가 권한이 필요하면 태스크 실행 역할을 업데이트할 수 있어요.
  7. Additional configurations에서 서비스를 사용자 지정합니다.
    • Container 아래에서:
      • Container port에 애플리케이션이 수신하는 포트를 업데이트합니다(기본값은 80).
      • Health check path에 상태 확인 경로(예: /health)를 업데이트합니다.
      • Environment variables 아래에서 애플리케이션에 필요한 환경 변수의 키-값 쌍을 추가합니다:
        • Key에 환경 변수 이름을 입력합니다.
        • Value type에서 Environment variable 또는 Secret을 선택합니다.
        • Value or value from에 값 또는 참조를 입력합니다.
        • Add environment variable을 선택하여 필요에 따라 변수를 더 추가합니다.
      • Command에 Docker CMD 지시문을 재정의하는 사용자 지정 명령을 선택적으로 입력합니다.
      • Task role에 컨테이너에서 실행되는 애플리케이션에 권한을 부여하는 IAM 역할을 추가합니다. 이렇게 하면 애플리케이션이 AWS 서비스에 API 호출을 할 수 있어요.
    • Compute 아래에서:
      • CPU에 태스크의 vCPU 할당(예: 1 vCPU)을 업데이트합니다.
      • Memory에 태스크의 메모리 할당(예: 2 GB)을 업데이트합니다.
      • CPU architecture에서 X86_64 또는 ARM64를 선택합니다. AWS Graviton 기반 컴퓨트에서 태스크를 실행하려면 ARM64를 선택하세요. CPU 아키텍처를 변경하면 새 배포가 시작되어 실행 중인 태스크를 교체합니다.
    • Auto Scaling 아래에서:
      • ECS service metric에서 스케일링할 지표(예: ECS Service Average Memory Utilization 또는 Request count per target)를 선택합니다.
      • Target value에 스케일링 대상(예: 60 또는 1000)을 입력합니다.
      • Minimum number of tasks와 Maximum number of tasks에서 스케일링 제한을 업데이트합니다.
    • Logs 아래에서:
      • Amazon CloudWatch log group에 애플리케이션 로그의 로그 그룹 이름을 업데이트합니다. 참고: 이렇게 해도 기존 로그는 이동되지 않으며, 새 서비스 개정에서부터 로그가 기록되기 시작합니다.
      • Amazon CloudWatch log stream prefix에 로그 스트림의 새 접두사를 입력합니다.
  8. Update를 선택하여 Express Mode 서비스를 업데이트합니다.

사용자 지정 태스크 정의로 업데이트 (Updating with a custom task definition)

taskDefinitionArn 파라미터를 지정하여 사용자 지정 태스크 정의로 Express Mode 서비스를 업데이트할 수 있습니다. Express Mode는 태스크 정의를 있는 그대로 사용하고 나머지 인프라 관리를 계속합니다.

이후 업데이트에서 다음 중 하나를 수행할 수 있습니다:

  • 태스크 정의의 새 개정을 만들고 taskDefinitionArn을 업데이트합니다. Express Mode는 다음 서비스 배포에 새 개정을 사용합니다.
  • Express Mode 파라미터를 직접 업데이트합니다:
    • 태스크 정의와 관련 없는 파라미터(예: healthCheckPath, networkConfiguration, scalingTarget)의 경우 Express Mode는 태스크 정의를 수정하지 않고 변경 사항을 적용합니다.
    • 태스크 정의 관련 파라미터(예: primaryContainer를 사용한 이미지, 또는 cpu/memory)의 경우 Express Mode는 다른 태스크 수준 구성을 유지하면서 변경 사항이 포함된 새 관리형 태스크 정의를 만듭니다.

사용자 지정 태스크 정의로 업데이트 (Amazon ECS 콘솔)

  1. Amazon ECS 콘솔을 열고 Express Mode 서비스로 이동합니다.
  2. Update service 옆의 드롭다운 화살표를 선택한 다음 Update with custom task definition을 선택합니다.
  3. Task definition family에서 기존 태스크 정의 패밀리를 선택합니다. 새 태스크 정의를 만들려면 Task definitions 링크를 선택합니다.
  4. Task definition revision에서 사용할 개정을 선택하거나 비워 두어 최신 개정을 사용합니다.
  5. (선택 사항) Additional configurations를 확장하여 상태 확인 경로, 네트워킹 또는 오토 스케일링 설정을 업데이트합니다.
  6. Update를 선택합니다.

다음 AWS CLI 명령은 사용자 지정 태스크 정의로 Express Mode 서비스를 업데이트합니다:

aws ecs update-express-gateway-service \
    --service-arn arn:aws:ecs:us-west-2:123456789012:service/default/my-service \
    --task-definition-arn arn:aws:ecs:us-west-2:123456789012:task-definition/my-td:4

참고: CloudFormation을 사용하면서 Express Mode 서비스에 taskDefinitionArn을 처음 추가한다면 먼저 스택을 한 번 재배포하세요. 이렇게 하면 롤백 호환성이 보장됩니다.

더 알아보기 (Learn more)

  • Express Mode 카나리아 배포 및 Express Mode 소개에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.