(전반적인 AWS 서비스는 AWS 자격증 준비 참고)
AWS에서 제공하는 서비스로 컨테이너를 이용하여 인프라 환경을 좀 더 편리하게 운영하고 관리할수 있도록 해주는 서비스입니다.
Docker 컨테이너를 실행하기 위해 정의한 컨테이너 집합입니다.
컨테이너의 이미지, CPU/메모리 리소스 할당 설정, port 매핑, volume 설정 같은 것들이 포함되며, 기존 docker run 명령에서 가능했던 대부분 옵션이 설정이 가능합니다.
Task definition에선 여러 컨테이너에 대해 정의가 가능한데 한 Task definition에서 정의된 컨테이너들은 link 설정으로 연결이 가능합니다.
Task definition에서 정의된 대로 배포된 Container Set을 Task라고 부릅니다. ECS에서 최소 단위는 컨테이너가 아니라 Task이고 Task Definition의 설명처럼 1개 이상 Container을 포함합니다.
Task들의 Life cycle을 관리합니다. 쉽게 말하면 배포할 녀석(Task)이 준비되어 있으니 이녀석들의 배포를 담당한다고 볼 수 있습니다.
Task를 Cluster에 몇 개나 배포할 것인지 결정하고, 실제 Task 들을 외부에 서비스 하기 위해 ELB에 연동 되는 부분을 관리합니다.
그리고 만약 실행 중인 Task가 어떤 이유로 작동이 중지 되면 이것을 자동으로 감지해 새로운 Task를 Cluster에 배포 하는 고가용성에 대한 정책도 Service에서 담당합니다.
ECS는 Container배포를 EC2 instance기반에 올리도록 설계되어 있습니다.
컨테이너는 결국 프로세스이고 이를 실행하기 위한 호스트를 Container Instance라 합니다. 한 인스턴스에 여러 Task가 올릴 수 있습니다.
ECS를 처음 시작하면 생성되는 디폴트 Cluster 에는 Container instance를 자동으로 할당 시켜 주기도 하지만, 새롭게 Cluster를 생성하게 되면 직접 container instance 를 만들어야 합니다. Container instance용 AMI 이미지는 AWS 측에서 제공해 주기 때문에 어렵지 않게 생성이 가능합니다.
Task가 배포되는 Container Instance들은 논리적인 그룹으로 묶이게 되는데 이 단위를 Cluster라고 부릅니다. Task를 배포하기 위한 instance는 반드시 Cluster에 등록되어야 합니다.
잘봤습니다. 좋은 글 감사합니다.