Amazon Elastic Container Service란 무엇입니까? - Amazon Elastic Container Service

Amazon Elastic Container Service란 무엇입니까?

Amazon Elastic Container Service(Amazon ECS)는 클러스터에서 컨테이너를 손쉽게 실행, 중지 및 관리할 수 있게 하는 컨테이너 관리 서비스로서 확장성과 속도가 뛰어납니다. 컨테이너는 서비스 내에서 개별 태스크나 여러 태스크를 실행하는 데 사용하는 태스크 정의에 정의됩니다. 이 컨텍스트에서 서비스는 클러스터에서 지정된 수의 태스크를 동시에 실행하고 유지할 수 있는 구성입니다. AWS Fargate에서 관리하는 서버를 사용하지 않는 인프라에서 작업 및 서비스를 실행할 수 있습니다. 또는 인프라에 대한 더 세부적인 제어를 위해 관리하는 Amazon EC2 인스턴스의 클러스터에서 태스크와 서비스를 실행할 수 있습니다.

Amazon ECS를 사용하면 간단한 API 호출을 사용하여 컨테이너 기반 애플리케이션을 시작하고 중지할 수 있습니다. 또한 중앙 집중식 서비스에서 클러스터 상태를 검색하고 여러 친숙한 Amazon EC2 기능에 액세스할 수 있습니다.

리소스 요구 사항, 격리 정책 및 가용성 요구 사항을 기반으로 클러스터에서의 컨테이너 배치를 예약할 수 있습니다 Amazon ES를 사용하면 자체 클러스터 관리 및 구성 관리 시스템을 운영하거나 관리 인프라 조정에 신경 쓸 필요가 없습니다.

Amazon ECS를 사용하면 일관된 배포 및 구축 환경을 생성하고, 배치 및 ETL(Extract-Transform-Load) 워크로드를 관리 및 크기 조정하고, 마이크로 서비스 모델에 정교한 애플리케이션 아키텍처를 구축할 수 있습니다. Amazon ECS 사용 사례 및 시나리오에 대한 자세한 내용은 컨테이너 사용 사례를 참조하세요.

AWS 컨테이너 서비스 팀은 GitHub에 대한 퍼블릭 로드맵을 유지 관리합니다. 로드맵에는 팀이 수행하는 작업에 대한 정보가 포함되어 있으며 AWS 고객이 직접 피드백을 제공할 수 있습니다. 자세한 내용은 AWS 컨테이너 로드맵을 참조하세요.

Amazon ECS의 기능

Amazon ECS는 특정 리전 내의 여러 가용 영역에 걸쳐 고가용성 방식으로 컨테이너를 실행하는 과정을 간소화하는 리전 서비스입니다. 새 또는 기존의 VPC에서 Amazon ECS 클러스터를 생성할 수 있습니다. 클러스터를 실행한 후 클러스터 사이에서 실행할 컨테이너 이미지를 정의하는 태스크 정의를 생성할 수 있습니다. 태스크 정의는 태스크를 실행하거나 서비스를 생성하는 데 사용됩니다. 컨테이너 이미지는 Amazon Elastic 컨테이너 레지스트리와 같은 컨테이너 레지스트리에서 저장되고 가져옵니다.

다음 다이어그램은 AWS Fargate에서 실행되는 Amazon ECS 환경의 아키텍처를 나타냅니다.


                Fargate 시작 유형을 사용하여 Amazon ECS 환경의 아키텍처를 보여주는 다이어그램입니다.

다음 섹션에서는 Amazon ECS 아키텍처의 개별 요소에 대해 보다 자세히 알아봅니다.

컨테이너 및 이미지

Amazon ECS에서 애플리케이션을 배포하려면 애플리케이션 구성 요소가 컨테이너에서 실행되도록 구축되어야 합니다. 컨테이너는 소프트웨어 애플리케이션에서 실행해야 하는 모든 것(관련 코드, 런타임, 시스템 도구, 시스템 라이브러리 등)을 포함하는, 소프트웨어 개발의 표준화된 단위입니다. 컨테이너는 이미지라고 하는 읽기 전용 템플릿에서 생성됩니다.

일반적으로 이미지는 컨테이너에 포함되는 모든 구성 요소를 지정하는 일반 텍스트 파일인 Dockerfile로부터 빌드됩니다. 빌드 후 이 이미지는 레지스트리에 저장되어 다운로드되거나 클러스터에서 실행될 수 있습니다. 컨테이너 기술에 대한 자세한 내용은 Amazon ECS용 Docker 기본 사항 섹션을 참조하세요.


                    Amazon ECS 환경에서 Docker 이미지 생성 및 등록을 보여 주는 다이어그램.

태스크 정의

애플리케이션이 Amazon ECS에서 실행되도록 준비하려면 태스크 정의를 생성합니다. 태스크 정의는 애플리케이션을 구성하는 하나 이상(최대 10개)의 컨테이너를 설명하는 JSON 형식의 텍스트 파일입니다. 태스크 정의를 애플리케이션의 청사진으로 생각할 수 있습니다. 태스크 정의는 애플리케이션에 다양한 파라미터를 지정합니다. 예를 들어, 이 파라미터는 사용할 컨테이너, 애플리케이션을 위해 개방할 포트, 작업의 컨테이너에 사용할 데이터 볼륨을 나타내는 데 사용할 수 있습니다. 태스크 정의에 사용할 수 있는 특정 파라미터는 특정 애플리케이션의 필요에 따라 달라집니다. 태스크 정의 생성에 대한 자세한 내용은 Amazon ECS 태스크 정의 섹션을 참조하세요.

다음은 NGINX 웹 서버를 실행하는 단일 컨테이너를 시작하기 위해 Fargate 사용을 지정하는 태스크 정의의 예제입니다. 태스크 정의에서 여러 컨테이너를 사용하는 확대된 예제는 태스크 정의 예제 섹션을 참조하세요.

{ "family": "webserver", "containerDefinitions": [ { "name": "web", "image": "nginx", "memory": "100", "cpu": "99" }, ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "memory": "512", "cpu": "256", }

작업 및 예약

태스크는 클러스터 내 태스크 정의를 인스턴스화하는 것입니다. Amazon ECS에서 애플리케이션에 대한 태스크 정의를 생성하면 클러스터에서 실행할 작업 수를 지정할 수 있습니다.

Amazon ECS 작업 스케줄러는 클러스터 내에 태스크를 배치하는 일을 맡습니다. 다양한 예약 옵션을 사용할 수 있습니다. 예를 들어 지정된 개수의 태스크를 동시에 실행 및 관리하는 서비스를 지정할 수 있습니다. 사용 가능한 다양한 예약 옵션에 대한 자세한 내용은 Amazon ECS 작업 예약 섹션을 참조하세요.


                    Fargate 시작 유형을 사용하여 Amazon ECS 환경에서 작업 예약 및 배치를 보여 주는 다이어그램.

Clusters

Amazon ECS 클러스터는 태스크 또는 서비스의 논리적 그룹입니다. 클러스터에 하나 이상의 Amazon EC2 인스턴스(컨테이너 인스턴스라고도 함)를 등록하고 여기에서 태스크를 실행할 수 있습니다. 또는 Fargate가 제공하는 서버를 사용하지 않는 인프라를 사용하여 태스크를 실행할 수 있습니다. Fargate에서 작업이 실행되면 클러스터 리소스도 Fargate에서 관리됩니다.

Amazon ECS를 처음 사용하면 기본 클러스터가 생성됩니다. 한 계정에 추가 클러스터를 생성하여 리소스를 분리할 수 있습니다.

클러스터 생성에 관한 자세한 내용은 Amazon ECS 클러스터 섹션을 참조하세요. 컨테이너 인스턴스를 시작하고 클러스터에 등록하는 방법에 대한 자세한 내용은 Amazon ECS 컨테이너 인스턴스 섹션을 참조하세요.

컨테이너 에이전트

컨테이너 에이전트는 Amazon ECS 클러스터 내의 각 컨테이너 인스턴스에서 실행됩니다. 에이전트는 리소스에서 현재 실행 중인 태스크와 리소스 사용률에 대한 정보를 Amazon ECS로 전송합니다. Amazon ECS로부터 요청을 수신할 때마다 태스크를 시작 및 중지합니다. 자세한 내용은 Amazon ECS 컨테이너 에이전트 섹션을 참조하세요.


                    Amazon ECS 환경에서의 컨테이너 에이전트 태스크를 보여 주는 다이어그램.

Amazon ECS 시작하기

Amazon ECS에 사용할 수 있는 개발자 도구에 대한 자세한 내용은 Amazon ECS 개발자 도구 개요 섹션을 참조하세요.

Amazon ECS를 처음 사용하는 경우, Amazon ECS용 AWS Management Console이 웹 서버용 태스크 정의를 정의하고 서비스를 구성하며 첫 번째 Fargate 태스크를 시작하는 과정을 단계별로 안내하는 처음 실행 마법사를 제공합니다. Amazon ECS를 사용한 경험이 거의 또는 전혀 없는 경우 처음 실행 마법사를 사용하는 것이 좋습니다. 자세한 내용은 Amazon ECS 시작하기 섹션을 참조하세요.

또는 AWS Command Line Interface(AWS CLI)를 설치하여 Amazon ECS를 사용할 수 있습니다. 자세한 내용은 Amazon ECS을 사용하여 설정 섹션을 참조하세요.

Amazon ECS는 다음과 같은 AWS 서비스와 함께 사용할 수 있습니다.

AWS Identity and Access Management

IAM(Identity and Access Management)은 AWS 리소스에 대한 사용자의 액세스를 안전하게 제어할 수 있게 지원하는 액세스 관리 서비스입니다. IAM을 사용하여 리소스에 대한 특정 태스크를 보거나 수행할 수 있도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어할 수 있습니다. Amazon ECS에서 IAM을 사용하여 IAM 역할을 사용하는 컨테이너 인스턴스 레벨과 IAM 작업 역할을 사용하는 작업 레벨에서 액세스를 제어할 수 있습니다. 자세한 내용은 Amazon Elastic Container Service용 Identity and Access Management 섹션을 참조하세요.

Amazon EC2 Auto Scaling

Auto Scaling은 사용자 정의 정책, 상태 확인 및 일정에 따라 작업의 규모를 자동으로 늘리거나 줄일 수 있게 해주는 서비스입니다. 서비스 내 Fargate 태스크와 함께 Auto Scaling을 사용하여 여러 가지 지표에 대응해 규모를 조정하거나 EC2 태스크를 함께 사용하여 클러스터 내 컨테이너 인스턴스의 규모를 조정할 수 있습니다. 자세한 내용은 서비스 자동 크기 조정 섹션을 참조하세요.

Elastic Load Balancing

Elastic Load Balancing 서비스에서는 애플리케이션의 수신 트래픽을 Amazon ECS 서비스의 여러 작업에 걸쳐 자동으로 분산합니다. 따라서 애플리케이션의 내결함성 수준을 크게 높이고, 애플리케이션 트래픽을 배포하는 데 필요한 로드 밸런싱 용량을 원활하게 제공할 수 있습니다. Elastic Load Balancing을 사용하여 클러스터의 서비스 사이에서 트래픽을 밸런싱하는 엔드포인트를 생성할 수 있습니다. 자세한 내용은 서비스 로드 밸런싱 섹션을 참조하세요.

Amazon Elastic 컨테이너 레지스트리

Amazon ECR은 안전하고 크기 조정이 가능하고 신뢰할 수 있는 관리형 AWS Docker 레지스트리 서비스입니다. Amazon ECR은 IAM을 사용한 리소스 기반 권한으로 프라이빗 도커 리포지토리를 지원하므로 특정 사용자나 작업이 리포지토리 및 이미지에 액세스할 수 있습니다. 개발자는 Docker CLI를 사용하여 이미지를 푸시, 가져오기 및 관리할 수 있습니다. 자세한 내용은 Amazon Elastic 컨테이너 레지스트리 사용 설명서를 참조하세요.

AWS CloudFormation

AWS CloudFormation을 통해 개발자와 시스템 관리자는 관련 AWS 리소스 모음을 생성 및 관리할 수 있습니다. 좀 더 구체적으로 말하자면, 리소스 프로비저닝 및 업데이트가 더 질서 정연하고 예측 가능하게 됩니다. 클러스터, 태스크 정의 및 서비스를 AWS CloudFormation 스크립트의 엔터티로 정의할 수 있습니다. 자세한 내용은 AWS CloudFormation 템플릿 참조를 참조하세요.

Pricing

Amazon ECS 요금은 AWS Fargate 또는 컨테이너화된 워크로드를 호스팅하는 Amazon EC2 인프라의 사용 여부에 따라 달라집니다. AWS Outposts에서 Amazon ECS를 사용하는 경우 요금은 Amazon EC2를 사용할 때와 동일한 모델을 따릅니다. 자세한 내용은 Amazon ECS 요금을 참조하십시오.

또한 Amazon ECS와 Fargate는 AWS 사용량을 기반으로 상당한 비용 절감을 제공하는 Savings Plans를 제공합니다. 자세한 내용은 Savings Plans 사용 설명서를 참조하세요.

청구 요금은 AWS Billing and Cost Management 콘솔결제 및 비용 관리 대시보드에서 확인할 수 있습니다. 청구서에는 요금 내역을 더 자세하게 확인할 수 있는 사용 보고서 링크가 포함됩니다. AWS 계정 결제에 대한 자세한 내용은 AWS 계정 결제 섹션을 참조하세요.

AWS 결제, 계정 및 이벤트에 관련된 질문은 AWS Support에 문의하세요.

AWS 환경에서의 비용과 보안, 성능 최적화를 돕는 Trusted Advisor의 개요는 AWS Trusted Advisor 섹션을 참조하세요.