본문 바로가기

SW LAB/Cloud

AWS ECS : 소개

Amazon ECS 란 ?

ECS의 가장 기본적인 단위는 클러스터입니다. 클러스터는 도커 컨테이너를 실행할 수 있는 가상의 공간으로 이해할 수 있습니다.
ECS 클러스터는 기본적으로 EC2와 같은 컴퓨팅 자원을 기본적으로 포함하고 있지 않은 논리적인 단위입니다. 따라서 컴퓨팅 자원이 없는 빈 클러스터를 만드는 것도 가능합니다. 그리고 EC2에 ecs-client라는 서비스를 실행해서 특정 클러스터에 연결할 수 있습니다. 이렇게 클러스터에 연결된 EC2 인스턴스를 컨테이너 인스턴스라고 부릅니다. ecs-client는 컨테이너 인스턴스의 자원을 모니터링 및 관리하고, 클러스터로 요청된 컨테이너들을 적절하게 실행하는 역할을 합니다.

태스크 디피니션(task definition)과 태스크(task)

ECS에서 컨테이너를 실행하는 최소 단위는 태스크입니다. 태스크는 컨테이너와는 조금 차이가 있습니다. 태스크는 하나 이상의 컨테이너로 구성됩니다. 일반적으로 하나의 필수 컨테이너만으로 구성됩니다. 하지만 필요에 따라 하나의 필수 컨테이너와 n개의 추가적인 컨테이너 조합이 될 수도 있습니다. 이 때 같은 태스크로 실행되는 컨테이너들은 모두 같은 컨테이너 인스턴스에서 실행되는 것이 보장됩니다.
태스크를 실행하려면 태스크 디피니션이 필요합니다. 태스크를 실행할 때 컨테이너 네트워크 모드, 태스크 역할Task Role, 도커 이미지, 실행 명령어, CPU 제한, 메모리 제한 등 다수의 설정이 필요합니다. 컨테이너 오케스트레이션에서는 컨테이너가 필요에 따라서 자동적으로 실행되거나 종료될 수 있습니다. 따라서 매번 이러한 설정들을 지정하기보다는, 미리 설정들의 집합을 하나의 단위로 정의해놓고 사용합니다. 이 단위가 바로 태스크 디피니션입니다. 한 번 태스크 디피니션을 만들면 이 태스크 디피니션을 기반으로 특정 설정을 변경할 수 있습니다. 이렇게 변경된 내용들은 모두 리비전으로 저장됩니다.
또한 태스크는 클러스터에 종속적이지만, 태스크 디피니션은 클러스터에 종속적이지 않다는 중요한 특징이 있습니다.

서비스(service)

클러스터에는 두 가지 방식으로 태스크를 실행할 수 있습니다.

먼저 첫 번째 방식은 태스크 디피니션으로 직접 태스크를 실행하는 방식입니다. 이 태스크는 곧바로 실행되며 실행이 된 이후에는 더 이상 관리되지 않습니다. 일회성 명령어라면 한 번 실행된 후 종료되며, 데몬 프로세스라면 태스크를 명시적으로 종료할 때까지 컨테이너가 남아있습니다. 직접 태스크를 실행하는 방법은 특별한 이유가 있을 때 외에는 거의 사용되지 않습니다.

두 번째 방법은 서비스를 정의하는 방법입니다. 서비스는 하나의 태스크 디피니션(리비전)과 연결됩니다. 서비스는 크게 리플리카 타입과 데몬 타입이 있습니다. 데몬 타입으로 실행하는 경우 모든 컨테이너 인스턴스에 해당하는 태스크가 하나씩 실행됩니다. 이 타입은 인스턴스 관리를 위한 용도로 많이 사용됩니다. 리플리카 타입을 사용하면 실행하려는 태스크의 개수Number of tasks를 지정해야합니다. 서비스는 클러스터에서 이 개수만큼 태스크가 실행되도록 자동적으로 관리해줍니다. 리플리카 타입은 웹서버를 비롯한 실제 서비스에서 주로 사용됩니다.

서비스는 클러스터 내에서 태스크를 스케줄링하는 역할을 담당합니다

엘라스틱 컨테이너 레지스트리(Elastic Conatiner Registry)

도커 레지스트리는 도커 이미지를 저장 및 관리하는 서비스입니다. 일반적으로 도커에서 공식적으로 제공하는 도커 허브Docker Hub가 많이 이용됩니다. 이미지를 비공개적로 푸시하거나 풀하는 경우에는 도커 허브의 유료 플랜을 이용하거나 직접 도커 레지스트리 서비스를 운용해야합니다. ECR을 사용해서 프라이빗 도커 레지스트리를 대체할 수 있으며, IAM과 조합함으로서 세세한 권한 관리가 가능합니다.

참고.
https://www.44bits.io/ko/post/container-orchestration-101-with-docker-and-aws-elastic-container-service

'SW LAB > Cloud' 카테고리의 다른 글

AWS SA Professional 시험 후기  (0) 2020.04.29
클라우드에서 빅데이터 아키텍처란?  (0) 2020.04.27
AWS ECS : 소개  (0) 2020.04.26
AWS CloudFront : Log 만들기  (0) 2020.04.25
AWS Athena : 성능 테스트  (0) 2020.04.25
AWS Athena : 최적화  (0) 2020.04.24

태그