Amazon Elastic Container Service란 무엇입니까?
Amazon Elastic Container Service(Amazon ECS)는 컨테이너 애플리케이션을 쉽게 배포, 관리 및 확대할 수 있도록 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스입니다. 완전 관리형 서비스인 Amazon ECS에는 AWS 구성과 운영 모범 사례가 내장되어 있습니다. AWS와 Amazon Elastic Container Registry, Docker 등의 서드 파티 도구와 통합됩니다. 이러한 통합을 통해 환경이 아닌 애플리케이션 구축에 더욱 집중할 수 있습니다. 컨트롤 플레인을 관리하는 복잡한 과정 없이 클라우드의 AWS 리전와 온프레미스에서 컨테이너 워크로드를 실행하고 확장할 수 있습니다.
Amazon ECS 용어 및 구성 요소
Amazon ECS에는 세 가지 계층이 있습니다.
-
용량 - 컨테이너가 실행되는 인프라입니다.
-
컨트롤러 - 컨테이너에서 실행되는 애플리케이션을 배포하고 관리합니다.
-
프로비저닝 - 스케줄러와 함께 애플리케이션 및 컨테이너를 배포 및 관리하는 데 사용할 수 있는 도구입니다.
다음 다이어그램은 Amazon ECS 계층을 나타냅니다.
Amazon ECS 용량
Amazon ECS 용량은 컨테이너가 실행되는 인프라입니다. 다음은 용량 옵션에 대한 개요입니다.
-
AWS 클라우드의 Amazon EC2 인스턴스
인스턴스 유형, 인스턴스 수를 선택하고 용량을 관리합니다.
-
AWS 클라우드의 서버리스(AWS Fargate)
Fargate는 서버리스 종량제 컴퓨팅 엔진입니다. Fargate를 사용하면 서버를 관리하거나, 용량 계획을 처리하거나, 보안을 위해 컨테이너 워크로드를 격리할 필요가 없습니다.
-
온프레미스 가상 머신(VM) 또는 서버
Amazon ECS Anywhere는 외부 인스턴스(예: 온프레미스 서버 또는 가상 머신(VM))을 Amazon ECS 클러스터에 등록하도록 지원합니다.
용량은 다음 AWS 리소스 중 하나에 있을 수 있습니다.
-
가용 영역
-
로컬 영역
-
Wavelength Zone
-
AWS 리전
-
AWS Outposts
Amazon ECS 컨트롤러
Amazon ECS 스케줄러는 애플리케이션을 관리하는 소프트웨어입니다.
Amazon ECS 프로비저닝
Amazon ECS를 프로비저닝하기 위한 여러 가지 옵션이 있습니다.
-
AWS Management Console - Amazon ECS 리소스 액세스에 사용할 수 있는 웹 인터페이스를 제공합니다.
-
AWS Command Line Interface(AWS CLI) - Amazon ECS를 포함하여 다양한 AWS 서비스에 대한 명령을 제공합니다. Windows, Mac, Linux에서 지원됩니다. 자세한 정보는 AWS Command Line Interface
을 참조하세요. -
AWS SDK - 언어별 API를 제공하고 많은 연결 세부 정보를 처리합니다. 서명 계산, 요청 재시도 처리 및 오류 처리가 여기에 포함됩니다. 자세한 내용은 AWS SDK
를 참조하십시오. -
Copilot - 개발자가 Amazon ECS에서 프로덕션 지원 컨테이너식 애플리케이션을 구축, 릴리스 및 운영할 수 있는 오픈 소스 도구를 제공합니다. 자세한 내용은 GitHub 웹 사이트의 Copilot
을 참조하세요. -
AWS CDK - 익숙한 프로그래밍 언어를 사용하여 클라우드 애플리케이션 리소스를 모델링하고 프로비저닝하는 데 사용할 수 있는 오픈 소스 소프트웨어 개발 프레임워크를 제공합니다. AWS CDK는 AWS CloudFormation을 통해 안전하고 반복 가능한 방식으로 리소스를 프로비저닝합니다.
애플리케이션 수명 주기
다음 다이어그램은 애플리케이션 수명 주기와 Amazon ECS 구성 요소와의 작동 방식을 보여줍니다.
컨테이너에서 실행할 수 있도록 애플리케이션을 설계해야 합니다. 컨테이너는 소프트웨어 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 소프트웨어 개발의 표준화된 단위입니다. 여기에는 관련 코드, 런타임, 시스템 도구 및 시스템 라이브러리가 포함됩니다. 컨테이너는 이미지라고 하는 읽기 전용 템플릿에서 생성됩니다. 이미지는 일반적으로 Dockerfile에서 구축됩니다. Dockerfile은 컨테이너 빌드 지침을 포함하는 일반 텍스트 파일입니다. 이러한 이미지는 빌드된 후 다운로드할 수 있는 Amazon ECR과 같은 레지스트리에 저장됩니다.
이미지를 생성하고 저장한 후 Amazon ECS 작업 정의를 생성합니다. 작업 정의는 애플리케이션에 대한 청사진과 같습니다. 작업 정의는 애플리케이션을 구성하는 파라미터 및 하나 이상의 컨테이너를 설명하는 JSON 형식의 텍스트 파일입니다. 예를 들어, 이를 사용하여 운영 체제에 대한 이미지 및 파라미터, 사용할 컨테이너, 애플리케이션에 대해 개방할 포트, 작업의 컨테이너와 함께 사용할 데이터 볼륨을 지정할 수 있습니다. 태스크 정의에 사용할 수 있는 특정 파라미터는 특정 애플리케이션의 필요에 따라 달라집니다.
작업 정의를 정의한 후에는 클러스터에 서비스 또는 작업으로 배포합니다. 클러스터는 클러스터에 등록된 용량 인프라에서 실행되는 작업 또는 서비스의 논리적 그룹입니다.
태스크는 클러스터 내 태스크 정의를 인스턴스화하는 것입니다. 독립 실행형 태스크를 실행하거나 서비스의 일부로 태스크를 실행할 수 있습니다. Amazon ECS 서비스를 사용하여 Amazon ECS 클러스터에서 원하는 수의 태스크를 동시에 실행하고 유지할 수 있습니다. 태스크가 어떤 이유로든 실패하거나 중지하면 Amazon ECS 서비스 스케줄러가 태스크 정의에 따라 다른 인스턴스를 시작하는 방식으로 작동합니다. 이로써 이를 대체하여 서비스에서 원하는 수의 태스크를 유지할 수 있습니다.
컨테이너 에이전트는 Amazon ECS 클러스터 내의 각 컨테이너 인스턴스에서 실행됩니다. 에이전트는 현재 실행 중인 태스크와 컨테이너의 리소스 사용률에 대한 정보를 Amazon ECS로 전송합니다. Amazon ECS로부터 요청을 수신할 때마다 태스크를 시작 및 중지합니다.
작업 또는 서비스를 배포한 후 다음 도구 중 하나를 사용하여 배포 및 애플리케이션을 모니터링할 수 있습니다.
-
CloudWatch
-
Runtime Monitoring