Amazon ECS 기능

Amazon Elastic Container Service(Amazon ECS)는 완전 관리형 컨테이너 오케스트레이션 서비스로서 컨테이너화된 애플리케이션을 손쉽게 배포, 관리 및 확장할 수 있도록 도와줍니다. 버전이 없고 독선적인 Amazon ECS 컨트롤 플레인은 나머지 AWS 환경과 긴밀하게 통합되어 클라우드에서 컨테이너 워크로드를 실행하기 위한 안전하고 사용하기 쉬운 솔루션을 제공합니다. Amazon ECS는 Amazon Elastic Compute Cloud(Amazon EC2), AWS Fargate 또는 심지어 온프레미스 인프라(Amazon ECS Anywhere 사용)와 함께 실행될 수 있습니다.

주요 기능

AWS Fargate는 Amazon ECS에 내장되어 있습니다. 따라서 서버 관리, 용량 계획 처리 또는 보안을 위한 컨테이너 워크로드 격리에 대해 더 이상 고민할 필요가 없습니다. 콘솔 또는 Command Line Interface(CLI)에서 애플리케이션의 요구 사항을 정의하고 AWS Fargate를 시작 유형으로 선택하면 AWS Fargate가 유연한 컴퓨팅 옵션 전반에서 컨테이너 실행에 필요한 모든 크기 조정 및 인프라 관리를 처리하고 애플리케이션에 필요한 다른 AWS 서비스와 자동으로 통합합니다.

Amazon ECS Anywhere를 사용하면 익숙한 Amazon ECS 콘솔 및 운영자 도구를 사용하여 온프레미스 컨테이너 워크로드를 관리할 수 있으므로 컨테이너 기반 애플리케이션 전체에서 일관된 환경을 경험할 수 있습니다. AWS Outposts에서 Amazon ECS를 사용하여 온프레미스 시스템에 대한 지연 시간이 특히 적은 컨테이너식 애플리케이션을 실행할 수도 있습니다.

Amazon ECS는 이미 신뢰하는 보안, 자격 증명 및 관리와 거버넌스 도구와 기본적으로 통합되므로 프로덕션으로 빠르게 전환하는 데 도움이 됩니다. 각 컨테이너에 대한 세분화된 권한을 할당하여 애플리케이션을 구축할 때 격리 수준을 개선할 수 있습니다. AWS에서 기대한 수준의 보안 및 규정 준수로 컨테이너를 시작하세요. 또한 Amazon GuardDuty와 통합하여 워크로드에 대한 외부 위협이 에스컬레이션되기 전에 이를 빠르고 쉽게 탐지할 수 있습니다.

Amazon ECS는 AWS 구성과 운영 모범 사례가 포함되어 있고 컨트롤 플레인, 노드 또는 추가 기능을 관리할 필요가 없는 완전관리형 컨테이너 오케스트레이션 서비스입니다. AWS와 서드 파티 도구에 기본적으로 통합되므로 환경이 아닌 애플리케이션을 구축하는 데 집중할 수 있습니다.

개발

Amazon ECS는 Windows 컨테이너 관리를 지원합니다. Amazon ECS에 최적화된 Windows AMI(Amazon Machine Image)는 향상된 인스턴스 및 컨테이너 시작 시간 성능과 CPU, 메모리 사용률, 예약 지표에 대한 가시성을 제공합니다.

AWS Copilot CLI는 Amazon ECS 및 AWS Fargate에서 프로덕션 지원 컨테이너식 애플리케이션을 구축, 릴리스 및 운영하는 데 사용되는 개발자용 도구입니다. Copilot은 인프라부터 지속적 전달에 이르는 모범 사례를 명령줄에서 고객이 편리하게 사용할 수 있도록 합니다. 서비스 상태 또는 로그를 확인하여 서비스 상태를 모니터링하고 프로덕션 서비스를 확장 또는 축소하고 자동 테스트를 위한 새 환경을 구동할 수도 있습니다. AWS Copilot을 다운로드하세요.

Amazon ECS는 서드 파티에서 호스팅한 도커 이미지 리포지토리 또는 Docker Hub 및 Amazon Elastic Container Registry(ECR)와 같은 액세스 가능한 프라이빗 Docker 레지스트리와 함께 사용할 수 있습니다. 작업 정의에 리포지토리를 지정하기만 하면 Amazon ECS에서 애플리케이션에 적합한 이미지를 가져옵니다.

관리

Amazon ECS를 사용하면 태스크 정의라고 하는 JavaScript Object Notation(JSON) 템플릿을 통해 태스크를 정의할 수 있습니다. Docker 리포지토리 및 이미지, 메모리 및 CPU 요구 사항, 공유 데이터 볼륨, 컨테이너가 서로 연결되는 방식 등 태스크에 필요한 하나 이상의 컨테이너를 태스크 정의 내에서 지정할 수 있습니다. 서비스에 등록할 수 있는 단일 태스크 정의 파일에서 원하는 만큼의 태스크를 실행할 수 있습니다. 태스크 정의 파일을 사용하면 애플리케이션 사양의 버전을 관리할 수도 있습니다.

Amazon ECS는 간단한 API 세트를 제공하여 서비스를 통합하고 확장할 수 있도록 해줍니다. API 작업을 통해 클러스터를 생성 및 삭제하고, 태스크를 등록 및 등록 취소하며, Docker 컨테이너를 실행 및 종료하고, 클러스터와 해당 인스턴스의 상태에 대한 자세한 정보를 제공할 수 있습니다. 또한 AWS CloudFormation을 사용하여 Amazon ECS 클러스터를 프로비저닝하고, 태스크 정의를 등록하고, 컨테이너 일정을 수립할 수 있습니다.

Amazon ECS를 사용하면 컨테이너를 새로운 버전으로 쉽게 업데이트할 수 있습니다. 새로운 버전의 애플리케이션 작업 정의를 업로드하면, Amazon ECS 스케줄러가 자동으로 업데이트된 이미지를 사용하는 새로운 컨테이너를 시작하고 이전 버전을 실행하는 컨테이너를 중지합니다. Amazon ECS는 연결된 애플리케이션 로드 밸런서에 자동으로 컨테이너를 등록하고 등록 취소합니다.

Amazon ECS는 비정상 컨테이너를 자동으로 복구하여 원하는 수의 컨테이너가 애플리케이션을 지원하도록 합니다.

Capacity Providers를 사용하면 여러 유형의 컴퓨팅 용량에서 컨테이너식 워크로드가 실행되는 방법에 대한 유연한 규칙을 정의하고 용량의 확장을 관리할 수 있습니다. 용량 공급자는 Amazon Elastic Compute Cloud(Amazon EC2) 및 AWS Fargate 모두에서 작동합니다. 태스크 및 서비스를 실행할 때 Fargate 및 Fargate Spot 용량에 걸쳐 미리 정의된 분할 비율로 서비스를 실행하는 것과 같은 새로운 기능을 활성화하여 여러 용량 공급자에 태스크 및 서비스를 분할할 수 있습니다.

Amazon Elastic Block Store(Amazon EBS)는 사용이 간편하고 확장이 가능한 고성능 블록 스토리지 서비스로, Amazon ECS 및 AWS Fargate 배포를 위한 비용 효율적인 스토리지를 프로비저닝할 수 있습니다. Amazon ECS에 배포된 컨테이너 워크로드로 모든 EBS 구성 및 기능을 사용할 수 있습니다.

Amazon Elastic File System(Amazon EFS)은 간단하고 확장 가능한 완전관리형 탄력적 파일 시스템으로, 현대적 애플리케이션을 구축하고 Amazon ECS 및 AWS Fargate 배포에서 데이터 및 상태를 유지 및 공유할 수 있습니다. Amazon EFS에서 컨테이너를 사용할 때의 모든 측면(예: 연결)이 처리되므로 관리가 전혀 필요하지 않습니다. 따라서 인프라가 아닌 애플리케이션에 집중할 수 있습니다. 영구 파일 스토리지에 대해 자세히 알아보세요.

일정 예약 및 태스크 배치

Amazon ECS에는 리소스 필요(예: CPU 또는 RAM)와 가용성 요구 사항에 따라 클러스터 전체에 컨테이너를 배치하는 여러 일정 예약 전략이 포함되어 있습니다. 사용 가능한 예약 전략을 사용하여 배치 작업, 장기 실행 애플리케이션 및 서비스, 데몬 프로세스의 일정을 예약할 수 있습니다.

Amazon ECS 태스크 일정 예약 기능을 사용하면 배치 처리 작업처럼 작업을 수행한 후 중단하는 프로세스를 실행할 수 있습니다. 태스크 일정 예약 기능은 작업 대기열에서 자동으로 또는 사용자가 정의하는 시간 간격에 따라 태스크를 시작할 수 있습니다.

Amazon ECS 태스크 예약에 대해 자세히 알아보기 »

Amazon ECS 서비스 일정 예약 기능을 사용하면 무상태 서비스 및 애플리케이션을 실행할 수 있습니다. 이 일정 예약 전략을 사용하면 지정된 수의 태스크가 지속적으로 실행되고 실패 시 태스크를 다시 시작하도록 할 수 있습니다. 고객은 Elastic Load Balancing 로드 밸런서에 태스크가 등록되었는지 확인하고, 태스크 실행을 위해 정의한 상태 확인을 수행할 수 있습니다.

Amazon ECS 데몬 일정 예약 기능은 ECS 클러스터에 있는 선택된 각 인스턴스에서 동일한 작업을 자동으로 실행합니다. 따라서 로깅, 모니터링 또는 백업과 같은 서비스에 대한 공통 관리 기능을 제공하는 작업을 손쉽게 실행할 수 있습니다.

Amazon ECS에서는 인스턴스 유형, 가용 영역과 같은 기본 제공 속성 또는 사용자가 정의하는 사용자 지정 속성을 기반으로 Amazon EC2 인스턴스 클러스터에 태스크를 배치하는 방법을 사용자 지정할 수 있습니다. environment = production과 같은 속성을 사용하여 리소스에 레이블을 지정하고, 목록 API 작업을 사용하여 이러한 리소스를 찾으며, RunTask 및 CreateService API 작업을 사용하여 이러한 리소스에서 태스크 일정을 예약합니다.

Amazon ECS에서는 빈(bin) 팩과 스프레드 같은 배치 전략을 사용하여 태스크가 배치되는 위치를 추가적으로 정의합니다. 정책을 연결하면 코드를 작성하지 않고도 정교한 배치 기능을 달성할 수 있습니다.

네트워킹

Amazon ECS Service Connect는 Amazon ECS에 대한 서비스 검색, 연결 및 트래픽 관찰을 간소화합니다. Amazon ECS Service Connect를 사용하면 네트워킹 인프라가 아닌 애플리케이션 코드에 집중할 수 있으므로 애플리케이션을 더 빠르게 구축할 수 있습니다. ECS Service Connect를 사용하여 서비스 엔드포인트의 논리명을 정의하고 클라이언트 애플리케이션에서 이를 사용하여 종속 기능에 연결할 수 있습니다. ECS Service Connect를 사용하면 정상 상태의 엔드포인트로 트래픽을 전송할 수 있습니다. 그리고 ECS 콘솔과 Amazon CloudWatch에서 다양한 트래픽 관련 원격 분석 정보가 제공됩니다. ECS Service Connect를 사용하면 네이티브 ECS 배포의 안정성이 높아집니다. Service Connect가 자동 Connection Draining을 지원하므로 클라이언트 애플리케이션이 트래픽 오류 없이 새 서비스 엔드포인트 버전으로 전환할 수 있기 때문입니다.

ECS Service Connect를 사용하면 다음을 수행할 수 있습니다.

• 클라이언트 애플리케이션이 해당 종속성에 연결하는 방식을 한 단계로 설정

• 논리적 이름 지정을 통해 복원력이 뛰어난 분산 애플리케이션 작성 및 운영

• 로드 밸런서를 배포 및 구성하지 않고 ECS 작업 간 트래픽 모니터링 및 분산

• 서비스를 더 빠르게 배포하고 애플리케이션을 구성하는 ECS 마이크로서비스의 원활한 통합 제공

기존 Amazon ECS 서비스를 서비스 검색에서 ECS Service Connect로 마이그레이션하는 방법에 대해 자세히 알아보기 »

Amazon ECS는 AWS Cloud Map과 통합되므로 컨테이너화된 서비스가 쉽게 서로를 검색하고 서로 연결할 수 있습니다. AWS Cloud Map은 애플리케이션 리소스에 대한 사용자 지정 이름을 정의할 수 있는 클라우드 리소스 검색 서비스입니다. 웹 서비스에서 항상 동적으로 변화하는 리소스의 최신 위치를 검색하므로 애플리케이션 가용성이 개선됩니다.

기존 Amazon ECS 서비스를 서비스 검색에서 ECS Service Connect로 마이그레이션하는 방법에 대해 자세히 알아보기 »

Amazon ECS는 도커 네트워킹을 지원하며, Amazon VPC와 통합하여 컨테이너에 대한 격리를 제공합니다. 따라서 컨테이너를 다른 서비스 및 외부 트래픽에 연결하는 방법을 제어할 수 있습니다. Amazon ECS의 경우 서로 다른 사용 사례를 지원하는 컨테이너를 위해 4가지 네트워킹 모드 중에 선택할 수 있습니다.

작업 네트워킹/awsvpc
이 모드는 실행 중인 각 ECS 작업에 전용 탄력적 네트워킹 인터페이스를 할당함으로써 컨테이너는 VPC에서 EC2 인스턴스처럼 모든 네트워킹 기능을 사용할 수 있습니다.

브리지
이 모드는 로컬 가상 네트워크 내 호스트에서 실행되는 모든 컨테이너를 연결하는 Linux 브리지를 생성합니다. 이 브리지는 호스트의 기본 네트워크 연결을 통해 액세스할 수 있습니다.

호스트
이 모드는 컨테이너를 호스트의 네트워크 스택에 직접 추가함으로써 격리되지 않은 상태로 호스트의 네트워크 상에 컨테이너를 노출합니다.

없음
이 모드는 컨테이너의 외부 네트워킹을 비활성화합니다.

Amazon ECS는 Elastic Load Balancing과 통합되므로 Application Load Balancer 또는 Network Load Balancer를 사용하여 컨테이너에 트래픽을 분산할 수 있습니다. 태스크 정의와 사용할 로드 밸런서를 지정하면 Amazon ECS가 자동으로 로드 밸런서에 컨테이너를 추가하고 제거합니다. 태스크 정의에서 동적 포트를 지정하여 컨테이너가 EC2 인스턴스에 예약된 경우 컨테이너에 미사용 포트를 제공합니다. 또한 경로 기반 라우팅을 사용하여 여러 서비스가 로드 밸런서를 공유합니다.

모니터링 및 로깅

Amazon ECS는 Amazon CloudWatch를 통해 컨테이너와 클러스터를 모니터링하는 기능을 제공합니다. 실행 중인 태스크의 평균 및 전체 CPU 사용률과 메모리 사용률을 태스크 정의, 서비스 또는 클러스터별로 그룹화하여 모니터링할 수 있습니다. 또한, CloudWatch 경보를 설정하여 컨테이너 또는 클러스터를 확장하거나 축소해야 할 때 알림을 수신합니다.

Amazon ECS를 사용하면 모든 Amazon ECS API 호출을 기록할 수 있으며, AWS CloudTrail을 통해 로그 파일을 전송할 수 있습니다. API 호출자 ID, API 호출 시간, API 호출자의 소스 IP 주소, 요청 파라미터 및 Amazon ECS가 반환한 응답 요소와 같은 정보가 기록됩니다. CloudTrail은 AWS Management Console, AWS SDK, AWS CLI에서 만들어진 API 호출 기록을 제공합니다. 이로써 보안 분석, 리소스 변경 추적, 규정 준수 감사가 가능합니다.

AWS Config를 Amazon ECS와 통합하면 AWS 계정의 AWS 리소스 구성에 대한 가시성을 확보할 수 있습니다. AWS Config를 사용하면 사용자가 리소스 구성 방식, 여러 리소스의 관계, 구성 및 관계의 시간대별 변화를 모니터링하고 추적할 수 있습니다. AWS Config는 규정 준수 및 보안, 운영 문제 해결과 리소스 관리를 간소화합니다.

하이브리드 배포

AWS Outposts에서 Amazon ECS를 사용하여 온프레미스 시스템에 대한 매우 짧은 지연 시간을 필요로 하는 컨테이너식 애플리케이션을 실행할 수 있습니다. Outposts는 AWS 인프라, AWS 서비스, API 및 도구를 거의 모든 연결된 사이트로 확장하는 완전관리형 서비스입니다. Outposts에서 Amazon ECS를 사용하여 클라우드의 컨테이너를 관리한 것처럼 쉽게 온프레미스의 컨테이너를 관리할 수 있습니다.

Amazon ECS Anywhere를 사용하면 익숙한 Amazon ECS 콘솔 및 운영자 도구를 사용하여 온프레미스 컨테이너 워크로드를 관리할 수 있으므로 컨테이너 기반 애플리케이션 전체에서 일관된 경험을 얻을 수 있습니다. AWS Systems Manager(SSM)를 통합하면 온프레미스 하드웨어와 AWS 컨트롤 플레인 간의 신뢰가 자동으로 안전하게 설정됩니다.

Amazon ECS Anywhere에 대해 자세히 알아보기 »