[AWS] Computing: ECS

4349 단어 awsaws

Amazon EC2 Container Service

Amazon ECS는 클러스터에서 컨테이너를 효율적으로 관리할 수 있도록 도와주는 컨테이너 관리 서비스이다. ECS는 클러스터에 컨테이너 기반 어플리케이션에 대한 배포, 스케일링, 스케쥴링 등의 기능을 담당한다.

Containers and images

AWS ECS를 사용하기 위해서는 먼저, 컨테이너 이미지로 빌드된 어플리케이션이 필요하다.

컨테이너는 네임스페이스로 격리된 런타임 환경을 갖는 프로세스로, 컨테이너 이미지를 통해 생성된다. 컨테이너 이미지는 프로세스를 실행하기 위한 환경의 스냅샷으로 프로세스를 실행하기 위한 코드, 의존성, 명령어 등이 정의되어 있다.

Task Definition

AWS ECS가 컨테이너를 배포하기 위해서는 Task definition를 필요로 한다. Task definition는 어플리케이션을 구성하는 컨테이너들의 설정을 json 포맷으로 정의한 파일을 의미한다.

아래의 예시는 ECS에서 Fargate로 NGINX 웹 서버를 배포하기 위한 Task definition을 정의한 결과이다.

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

Task and scheduling

Task는 앞서 정의한 task definition에 의해 실행된 어플리케이션에 해당한다. AWS ECS에서는 task definition을 선언한 후, ECS 클러스터에서 실행할 task definition의 갯수를 선언하는 방식으로 task를 생성한다.

Cluster

AWS ECS 클러스터는 생성된 태스크들의 논리적 집합에 해당한다. 클러스터는 태스크를 실행하기 위한 물리적 EC2 인스턴스 혹은, 서버리스 환경을 지원하는 Fargate로 구성된다.

Cluster agent

클러스터 에이전트는 ECS 클러스터 인스턴스에서 실행되는 데몬으로, 진행중인 태스크에 대한 정보와 리소스 사용량을 모니터링하고 태스크를 실행/중지 하는 런타임 매니저에 해당한다.

ECS는 도커 컨테이너를 기반으로 어플리케이션을 배포하기 때문에 컨테이너 환경에서 동작한다. 따라서, 컨테이너 배포를 위해 스팟 인스턴스를 적극 활용하여 비용을 절감할 수 있다. 일반적으로 스팟 인스턴스는 on-demand 인스턴스보다 약 50~90% 저렴하다. 단, 스팟 인스턴스는 입찰 방식으로 리소스가 할당되기 때문에 낮은 입찰가를 제시한 경우, 어플리케이션이 불시에 중단될 수 있다는 점을 유의하여야 한다.

EC2 Console은 스팟 집합을 사용하여 스팟 인스턴스를 배포한다. 스팟 집합은 최적의 가격을 계산하여 입찰을 시도하고 컨테이너 어플리케이션 운영 필요한 목표 용량(vCPU)을 유지한다.

Amazon EC2 Container Registry

Amazon EC2 Container Registry(ECR)는 AWS에서 제공하는 Private Container Registry로 개발자가 도커 컨테이너 이미지를 저장, 관리 배포할 수 있도록 하는 저장소이다. Amazon ECRAmazon ECS와 통합 관리시 유용하게 활용될 수 있다. 또한, AWS Identity and Access Management(IAM)과 통합함으로써 각 레포지토리에 대한 접근 권한을 효과적으로 제어할 수 있다. Amazon ECR은 선수금이나 약정이 없이, 네트워크 비용에 대한 요금만을 지불하는 과금정책을 갖고 있다.

좋은 웹페이지 즐겨찾기