Cluster
1 ECS 클러스터(Cluster)
- Amazon ECS(Amazon Elastic Container Service)를 사용하기 위해서는 먼저 ECS 클러스터를 생성해야 합니다.
- ECS Cluster는 컨테이너를 실행할 EC2 인스턴스 또는 Fargate 인스턴스의 그룹입니다.
- 이것이 배포의 기반이 됩니다.
- ECS 클러스터는 컨테이너화된 애플리케이션을 배포, 관리 및 확장하는 데 사용되는 논리적 단위입니다.
- ECS에는 두 가지 유형의 클러스터가 있습니다
- Amazon EC2 Instances
- AWS Fargate
생성 화면
![[Pasted image 20240228134743.png]]
2 EC2 클러스터
- EC2 클러스터를 사용하면 관리하는 Amazon EC2 인스턴스 클러스터에서 컨테이너화된 애플리케이션을 실행할 수 있습니다.
- EC2 클러스터를 선택하면 인프라, 즉 EC2 인스턴스를 프로비저닝하고 유지 관리해야 합니다.
- 이 시작 유형은 특정 CPU 및 메모리 구성에 맞게 최적화하고 스팟 인스턴스를 활용할 수 있으므로 기본 인프라 측면에서 가장 유연성을 제공합니다.
- 각 EC2 인스턴스는 ECS 클러스터에 등록되기 위해 ECS 에이전트를 실행해야 합니다.
- EC2 클러스터에서 Auto Scaling Group을 사용하면 인스턴스를 자동으로 조정하여 클러스터의 수요에 맞출 수 있습니다.
장점
- 제어 및 사용자 지정: EC2 인스턴스에 대한 완전한 제어를 통해 운영 체제, 인스턴스 유형 및 기본 호스트 네트워킹을 사용자 지정할 수 있습니다.
- 비용 최적화: 예약 인스턴스 및 스팟 인스턴스를 사용하면 상당한 비용 절감 효과를 얻을 수 있습니다.
단점
- 관리 오버헤드: EC2 인스턴스 패치, 확장, 보안을 포함한 더 많은 직접 관리가 필요합니다.
- 복잡성: AWS 및 컨테이너 오케스트레이션에 익숙한 사용자에게 더 적합합니다.
3 Fargate 클러스터
- Fargate는 서버나 클러스터를 관리할 필요가 없는 컨테이너용 서버리스 컴퓨팅 엔진입니다.
- Fargate를 사용하면 컨테이너에 대한 CPU 및 메모리 요구 사항을 지정하기만 하면 Fargate가 기본 인프라 프로비저닝 및 관리를 담당합니다.
- Fargate를 사용할 때는 EC2 인스턴스들이 여전히 사용되지만, 이러한 인스턴스들은 AWS에 의해 내부적으로 관리되고 사용자는 이에 대해 신경 쓰지 않아도 됩니다.
- 사용자는 컨테이너 수준에서의 리소스만을 관리하며, AWS가 백엔드에서 필요한 인프라를 처리합니다.
장점
- 오버헤드 감소: 서버나 클러스터를 관리할 필요가 없어 운영 복잡성이 줄어듭니다.
- 간편한 확장: 수요에 따라 컴퓨팅 리소스를 자동으로 확장합니다.
- 가격 절감: 컨테이너가 사용하는 컴퓨팅 및 메모리 리소스에 대해서만 비용을 지불합니다.
단점
- 낮은 제어: 기본 인프라 또는 호스트 구성에 대한 제어가 제한됩니다.
- 비용이 더 높을 수 있음: 서버리스 컴퓨팅에 최적화되지 않은 워크로드의 경우 비용이 더 많이 들 수 있습니다.
4 EC2와 Fargate 비교
기능 | EC2 클러스터 | Fargate 클러스터 |
---|---|---|
인프라 | 수동으로 관리되는 EC2 인스턴스 | 서버리스, AWS 관리 |
제어 | 높음(OS, 인스턴스 유형 등) | 낮음(작업 정의로 제한) |
비용 | 변동(스팟/예약 인스턴스 사용 가능) | 실행시간당 고정비율 |
스케일링 | 수동 또는 Auto Scaling 그룹 | AWS에서 자동으로 관리 |
오버헤드 | 높음(인스턴스 관리 필 요) | 낮음(관리할 인스턴스 없음) |
사용 사례 | 특정 구성이 필요한 애플리케이션 | 사용 편의성과 빠른 확장이 우선시되는 애플리케이션 |
4.1 올바른 실행 유형 선택
- EC2와 Fargate 시작 유형 중에서 선택하는 것은 특정 애플리케이션 요구 사항과 운영 기본 설정에 따라 다릅니다.
- EC2 시작 유형: 특정 유형의 EC2 인스턴스가 필요하거나, 환경에 대한 세부적인 제어가 필요하거나, 예약 또는 스팟 인스턴스를 통해 비용 절감의 이점을 누릴 수 있는 애플리케이션에 가장 적합합니다.
- Fargate 시작 유형: 서버 관리를 선호하지 않거나, 빠른 확장이 필요하거나, 워크로드가 가변적인 애플리케이션을 갖고 있고, 실제 사용량을 기반으로 한 간단한 가격 책정 모델을 원하는 사용자에게 적합합니다.
5 클러스터 생성
5.1 Cluster configuration
- cluster name: 클러스터의 이름을 지정합니다.
- Default namespace: 기본 네임스페이스를 설정합니다.
- 클러스터 생성 시 AWS Fargate와 Amazon EC2 인스턴스를 모두 선택할 수 있습니다.
- 개별 작업 정의(Task Definition)와 서비스(Service)에서는 각각 런타임 타입을 명시적으로 지정해야 합니다.
- Task Definition:
requiresCompatibilities
속성을 사용하여 FARGATE 또는 EC2를 지정합니다. - Service:
launchType
속성을 사용하여 FARGATE 또는 EC2를 지정합니다.
5.2 Infrastructure
5.2.1 AWS Fargate (serverless)
- Fargate를 선택하면 서버나 클러스터를 관리할 필요 없이 컨테이너를 실행할 수 있습니다.
- 추가적인 설정이 필요없습니다.