본문으로 건너뛰기

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를 선택하면 서버나 클러스터를 관리할 필요 없이 컨테이너를 실행할 수 있습니다.
  • 추가적인 설정이 필요없습니다.

5.2.2 Amazon EC2 instances