Amazon Web Services 한국 블로그

Amazon ECS Gateway 소개: ECS 서비스를 위한 완전관리형 수신 솔루션

인프라 운영 플랫폼 팀이 Amazon Elastic Container Service(Amazon ECS)에서 대규모로 컨테이너화된 애플리케이션을 관리할 때 각 서비스에 대한 수신 네트워킹을 구성하는 작업이 종종 병목 현상이 됩니다. 모든 새로운 서비스에 대해 팀은 Application Load Balancer(ALB), AWS Certificate Manager(ACM) 인증서, AWS WAF 웹 ACL 및 보안 그룹을 프로비저닝하고 연결한 다음, 서비스가 확장, 업데이트 또는 운영됨에 따라 이러한 리소스를 동기화된 상태로 유지해야 합니다. 이러한 서비스별 오버헤드는 배포 속도를 늦추고 조직 전체의 구성 편차 위험을 높입니다.

오늘 저희는 Amazon ECS Gateway를 발표했습니다. 모든 리소스를 계정에서 직접 생성하여 사용자를 대신해 필요한 인프라를 동적으로 프로비저닝하고 관리함으로써 컨테이너화된 워크로드에 대한 수신 네트워킹을 단순화하는 새로운 계정 수준의 리소스입니다.

ECS Gateway를 사용하면 플랫폼 팀과 애플리케이션 팀 사이에서 명확하게 책임이 분리됩니다.

  • 플랫폼 팀은 한 곳에서 서브넷, 보안 그룹, TLS 인증서, 리스너 설정, WAF 웹 ACL을 비롯한 조직 네트워킹 표준을 정의하는 게이트웨이를 생성하고 구성합니다. 그런 다음, 게이트웨이를 하나 이상의 ECS 클러스터와 연결하여 해당 클러스터에서 실행되는 서비스에서 사용할 수 있게 합니다.
  • 애플리케이션 팀은 서비스를 생성하거나 업데이트할 때 게이트웨이 커넥터 파라미터를 추가하여 서비스를 선택합니다. ECS는 ACM 인증서, 고유한 DNS 호스트 이름, 리스너 규칙, 대상 그룹 그리고 ALB의 인바운드 트래픽만 허용하는 서비스 보안 그룹과 같은 필요한 서비스별 리소스를 자동으로 프로비저닝합니다. 네트워킹 전문 지식이 필요하지 않습니다.

ECS Gateway는 ALB를 사용하는 호스트 기반 라우팅을 제공하며, 최대 25개 서비스가 단일 ALB를 공유할 수 있도록 지원하여 인프라 비용을 최적화합니다. ECS는 기본 인프라의 전체 수명 주기를 관리하면서, 첫 번째 서비스가 연결될 때 첫 번째 ALB를 프로비저닝하고, 용량에 도달하면 ALB를 더 추가하며, 더 이상 필요하지 않을 때는 ALB를 제거합니다. 각 서비스는 고유한 DNS 호스트 이름을 수신하므로 프로비저닝이 완료되는 즉시 사용할 수 있는 엔드포인트를 팀에 제공합니다.

ECS Gateway 처음 살펴보기
플랫폼 팀은 ECS 콘솔에서 게이트웨이를 생성하고 해당 구성을 설정할 수 있습니다. 인프라 역할은 계정의 ALB, 보안 그룹 및 인증서와 같은 네트워킹 리소스를 프로비저닝하고 관리하기 위해 ECS가 수임하는 IAM 역할입니다. 게이트웨이를 생성하려면 게이트웨이 이름을 제공하고 인프라 역할을 선택합니다. 선택적으로 생성 중 또는 이후에 게이트웨이를 ECS 클러스터에 연결할 수 있습니다.

퍼블릭 또는 VPC 내부 트래픽 라우팅 중 하나인 로드 밸런싱 스키마를 선택합니다. 추가 설정에서 리스너, 포트, 게이트웨이가 확장할 수 있는 최대 로드 밸런서 수를 설정할 수 있으며 웹 ACL을 통해 웹 애플리케이션을 보호할 수 있습니다. 이름, 스키마, VPC, 서브넷, IP 주소 유형, 리스너 프로토콜 및 포트를 비롯한 일부 설정은 게이트웨이를 생성한 후에는 변경할 수 없습니다.

AWS Command Line Interface(AWS CLI)를 통해 이름(계정당 고유), 인프라 역할 및 구성 객체를 사용하여 CreateGateway를 직접 호출합니다. 서비스가 게이트웨이 커넥터에 연결된 후에야 인프라가 프로비저닝됩니다.

aws ecs create-gateway \
  --name my-team-gateway \
  --infrastructure-role-arn arn:aws:iam::123456789012:role/ECSGatewayRole \
  --configuration '{
    "HostSharedAlb": {
      "networkConfiguration": {
        "subnets": [
          "subnet-080779f9bd887757a",
          "subnet-03d5b2fead6bc6258",
          "subnet-0861210a397d31252",
          "subnet-06539e194023cb77a"
        ],
        "ipAddressType": "ipv4"
      },
      "scheme": "internet-facing"
    }
  }'

게이트웨이가 생성되면 세부 구성, 게이트웨이 경로, 로드 밸런서 및 연결된 클러스터를 살펴볼 수 있습니다.

이제 게이트웨이를 하나 이상의 클러스터에 연결하여(다대다) 해당 클러스터의 ECS 서비스에서 사용할 수 있게 합니다.

AssociateGatewayWithCluster를 사용하여 클러스터의 서비스에서 게이트웨이를 사용할 수 있게 합니다.

aws ecs associate-gateway-with-cluster \ 
--gateway my-team-gateway \ 
--cluster arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster

API 직접 호출 및 문서 검색을 포함하여 프로그래밍 방식으로 ECS Gateway를 생성하고 관리하려면 선호하는 AI 코딩 도구와 함께 AWS MCP 서버 및 플러그인을 사용해 보세요. 자세한 내용은 Amazon ECS Gateway 설명서를 참조하세요.

ECS Gateway: 비하인드 스토리
게이트웨이는 최대 10,000개의 클러스터에 연결될 수 있으며, 단일 클러스터는 최대 5개의 게이트웨이 연결을 지원합니다. 이러한 다대다 관계를 통해 플랫폼 팀은 환경 전반에서 게이트웨이를 공유하거나 단일 클러스터에 여러 게이트웨이(예: 퍼블릭 및 프라이빗)를 할당할 수 있는 유연성을 제공합니다.

플랫폼 팀은 클러스터에 연결할 게이트웨이를 선택하여 액세스를 제어할 수 있습니다. 추가 제어를 위해 IAM 정책을 사용하여 특정 클러스터에 서비스를 배포할 수 있는 사용자를 제한할 수 있습니다.

애플리케이션 팀은 CreateService 또는 UpdateService의 각 서비스 정의에 게이트웨이 커넥터를 추가합니다. 자체 로드 밸런서가 있는 기존 ECS 서비스가 있는 경우 UpdateService를 직접 호출하여 게이트웨이 커넥터를 추가함으로써 ECS Gateway를 점진적으로 도입할 수 있습니다. 두 수신 경로를 모두 사용할 수 있으므로 기존 로드 밸런서 구성을 제거하기 전에 게이트웨이 연결을 검증할 수 있습니다.

aws ecs create-service \ 
  --cluster my-cluster \ 
  --service my-api-service \ 
  --task-definition my-api-service:1 \ 
  --gateway-connectors '[{ "portName": "api", "filters": {"accessTypes": ["PUBLIC"]}, "healthCheck": {...} }]'

배포할 때 Amazon ECS는 클러스터에 연결된 게이트웨이를 평가하고 서비스를 모든 호환 가능한 게이트웨이에 연결합니다. 게이트웨이의 액세스 유형이 서비스의 커넥터 필터와 일치하고 게이트웨이가 서비스와 동일한 VPC에 있으며 서비스의 구성된 서브넷에서 사용하는 모든 가용 영역을 포괄하는 경우 해당 게이트웨이는 호환됩니다.

Amazon ECS는 각 연결에 대해 사용 가능한 용량이 있는 ALB에 서비스를 할당하고 서비스별 리소스(ACM 인증서, 고유한 DNS 호스트 이름, 해당 호스트 이름에 대한 트래픽을 서비스 대상 그룹에 라우팅하는 리스너 규칙, ALB 보안 그룹의 인바운드 트래픽만 허용하는 서비스 보안 그룹)를 프로비저닝합니다. 기존 ALB에 용량이 없는 경우 ECS는 새 ALB(최대 maxAlbCount, 할당량 제한 참조)를 생성합니다. 프로비저닝이 완료되면 게이트웨이 경로가 ACTIVE 상태가 되고, 서비스 URL에서 트래픽을 수신할 준비가 됩니다.

ECS Gateway는 일반적인 운영 시나리오를 자동으로 처리합니다.

  • 재배포: ECS는 배포할 때마다 게이트웨이 연결을 재평가합니다. 마지막 배포 이후 호환되는 새 게이트웨이가 연결된 경우 서비스가 해당 게이트웨이에 연결됩니다. 게이트웨이의 연결이 끊어지면 서비스 연결이 끊기고 경로가 제거됩니다. 서비스는 배포 시 클러스터 게이트웨이의 현재 상태를 항상 반영합니다.
  • 서비스 삭제: ECS는 모든 게이트웨이에서 서비스 연결을 자동으로 끊고, 모든 게이트웨이 경로를 제거하며, 서비스별 리소스를 모두 정리합니다. 서비스가 ALB의 마지막 경로를 보유하는 경우 해당 ALB는 프로비저닝 해제됩니다.

주요 사항
다음은 염두에 두어야 할 몇 가지 중요한 세부 정보입니다.

  • 네트워킹: ECS Gateway는 모든 시작 유형(Amazon ECS EC2, AWS Fargate 및 ECS 관리형 인스턴스)에서 awsvpc 네트워크 모드를 사용하는 ECS 서비스에 대해 사용할 수 있습니다. 서비스 가용 영역(AZ)은 클러스터에 있는 각 게이트웨이 AZ의 하위 세트여야 합니다. 게이트웨이 ALB는 서브넷이 있는 AZ의 작업으로만 트래픽을 라우팅합니다. 동일한 AZ 세트를 사용하여 지정된 클러스터에 대해 게이트웨이와 서비스를 생성하는 것이 좋습니다.
  • 용량: maxAlbCount에 도달했는데 사용 가능한 용량이 있는 ALB가 없는 경우 배포가 실패합니다. maxAlbCount의 기본 할당량 제한은 10입니다. 연결할 것으로 예상되는 서비스 수에 따라 maxAlbCount 설정을 계획하세요.
  • 관찰성: CloudWatch의 ALB 지표를 TargetGroup 차원과 함께 사용하여 서비스별 트래픽을 모니터링하고, LoadBalancer 차원을 사용하여 공유 ALB 전반의 트래픽을 모니터링합니다. describe-target-health를 사용하여 실시간 대상 상태를 확인합니다. maxAlbCount에 따라 모니터링이 자동으로 확장되도록 게이트웨이 ARN 기반 태그 지정을 사용하여 HealthyHostCount, TargetResponseTime, HTTPCode_Target_5XX_Count와 같은 지표에 대해 CloudWatch 경보를 구성합니다.

정식 출시
Amazon ECS Gateway는 이제 ECS를 사용할 수 있는 모든 상용 AWS 리전에서 추가 비용 없이 사용할 수 있습니다. 서비스가 게이트웨이에 연결될 때 계정에 프로비저닝된 기본 인프라에 대해서만 비용을 지불하면 됩니다. 여기에는 해당 ALB 요금, CloudWatch 로그 및 지표, ACM 인증서, 데이터 전송 요금이 포함됩니다. 자세한 내용은 Amazon ECS 요금 페이지를 참조하세요.

시작하려면 지금 ECS 콘솔에서 첫 번째 게이트웨이를 생성하고 AWS re:Post for ECS로 피드백을 보내거나 일반적인 AWS Support 연락처를 통해 피드백을 보내주세요.

— Channy