ECS (Elastic Container Service)
- AWS 에서 컨테이너를 실행하면 ECS 클러스터 즉, ECS 테스크를 실행한다.
- ECS 클러스터에는 EC2 인스턴스가 들어있다. ( EC2 시작유형으로 ECS 클러스터를 사용할 때는 인프라를 직접 프로비저닝하고 유지해야 한다.)
- ECS 인스턴스는 특별하게 각각 ECS 에이전트를 실행해야 하는데,
- ECS 에이전트가 각각의 EC2 인스턴스를 ECS 서비스와 지전된 ECS 클러스터에 등록한다.
- 이후에 ECS 태스크를 수행하기 시작하면 AWS 가 컨테이너를 시작하거나 멈출 것이다.
- 즉 새 도커 컨테이너가 생기면 시간에 따라 EC2 인스턴스에 지정된다.
- ECS 태스크를 시작하거나 멈추면 자동으로 위치가 지정된다.
- 이것이 바로 EC2 시작 유형이다. (도커 컨테이너는 미리 프로비저닝한 EC2 인스턴스에 위치)
Fargate Launch Type
- EC2 와 마찬가지로 AWS 에 도코 컨테이너를 실행하는데, 이번에는 인프라를 프로비저닝하지 않아 관리할 EC2 인스턴스가 없다. 즉, Serverless !!
- ECS 클러스터가 있을때 ECS 태스크를 정의하는 태스크 정의만 생성하면 필요한 CPU 나 RAM에 따라 ECS 태스크를 AWS 가 대신 실행한다.
즉, 새 도커 컨테이너를 실행하면, 어디서 실행되는지 알리지 않고 그냥 실행된다. - 작업을 위해 백엔드에 EC2 인스턴스가 생성될 필요도 없다
- 확장하려면 간단하게 태스크 수만 늘리면 된다. EC2 인스턴스를 관리할 필요가 없다.
- 즉, Fargate 는 서버리스이므로, EC2 시작 유형보가 관리가 쉽다.
IAM Roles for ECS
- EC2 시작 유형의 예시로 EC2 인스턴스가 도커에 ECS 에이전트를 실행한다고 하자.
- EC2 시작 유형을 사용한다면 EC2 인스턴스 프로파일을 생성할 것 인데, ECS 에이전트만이 EC2 인스턴스 프로파일을 사용하며 그 EC2 인스턴스 프로파일을 이용해 API 호출을 할 것이다.
- 그럼 EC2 인스턴스가 저장된 ECS 서비스가 CloudWatch 로그에 API 호출을 해서 컨테이너 로그를 보내고 ECR 로 부터 도커 이미지를 가져온다. Secrets Manager 나 SSM Parameter Store 에서 민감 데이터를 참고하기도 한다.
- ECS 태스크는 ECS 태스크 역할을 가지는데, 이는 EC2 와 Fargate 시작 유형에 모두 해당되며, 두 개의 태스크가 있다면, 각자에 특정 역할을 만들 수 있다.
- 태스크 A는 EC2 태스크 A 역할을 맡고 태스크 B는 EC2 태스크 B 역할을 맡는 것이다.
- 역할을 다르게 하는 이유는 역할이 각자 다른 ECS 서비스에 연결할 수 있게 하기 때문이다.
- 이렇게 EC2 인스턴스 프로파일 역할과 ECS 태스크 역할의 차이점이 있다.
ECS - Load Balancer Integrations
- 여러 ECS 태스크들이 실행되며 ECS 클러스터 안에 있는데,
- HTTP 나 HTTPS 엔드 포인트로 태스크를 활용하기 위해 ALB 를 앞에서 실행하면 모든 사용자가 ALB 및 ECS 태스크에 직접 연결된다.
- NLB 는 처리량이 매우 많거나 높은 성능이 요구될 때만 권장한다. -> AWS Private Link 와 사용할때 권장
- ELB 는 사용 가능하지만 권장하지 않는다. (고급 기능이 없을 뿐더러 Fargate 에 연결할 수 없기 때문이다.)
- 반면 ALB 는 Fargate 와도 사용할 수 있다.
'AWS' 카테고리의 다른 글
Amazon Lambda (1) | 2024.10.28 |
---|---|
Amazon ECR 와 EKS (0) | 2024.10.28 |
AWS MQ (0) | 2024.10.25 |
AWS Kinesis 란? (0) | 2024.10.25 |
Amazon SQS (0) | 2024.10.24 |