정의
AWS Fargate는 컨테이너에 적합한 서버리스 컴퓨팅 엔진으로, Amazon Elastic Container Service(ECS) 및 Amazon Elastic Kubernetes Service(EKS)와 연동됩니다. AWS Fargate를 사용하면 애플리케이션을 구축하는 데 집중할 수 있습니다. Fargate를 사용하면 서버를 프로비저닝하고 관리할 필요가 없기 때문에 애플리케이션별로 리소스를 지정하고 관련 비용을 지불할 수 있으며, 계획적으로 애플리케이션을 격리하여 보안을 개선할 수 있습니다.
Fargate 사용 이유
AWS Fargate를 사용하면 애플리케이션에 집중할 수 있습니다. 사용자는 애플리케이션 콘텐츠, 네트워킹, 스토리지 및 확장 요구 사항만 정의하면 됩니다. 프로비저닝, 패치 적용, 클러스터 용량 관리 또는 인프라 관리가 필요 없습니다.
Fargate 시작 유형 또는 Fargate 용량 공급자를 사용하여 Amazon ECS 작업 및 서비스를 실행할 때, 애플리케이션을 컨테이너에 패키징하고, 운영 체제, CPU 및 메모리 요구 사항을 지정하고, 네트워킹 및 IAM 정책을 정의하고, 애플리케이션을 실행합니다. 각 Fargate 작업에는 고유한 격리 경계가 있으며 기본 커널, CPU 리소스, 메모리 리소스 또는 탄력적 네트워크 인터페이스를 다른 작업과 공유하지 않습니다.
Fargate 구성 요소
- Cluster : Amazon ECS 클러스터는 작업 또는 서비스의 논리적 그룹입니다. 클러스터를 사용하여 애플리케이션을 격리할 수 있습니다. Fargate에서 작업이 실행되면 클러스터 리소스도 Fargate에서 관리됩니다.
- EC2 시작 유형 : 클러스터를 생성할 때 EC2 인스턴스를 등록하거나 클러스터를 생성한 후 클러스터에 추가 인스턴스를 등록할 수 있다. 더 많은 제어를 허용하지만 더 많은 관리가 필요하다. EC2 시작 유형을 사용하는 경우에도 기본 인프라 세부 정보, 시작 인스턴스, 네트워크 보안 설정, ASG 를 지정해야 한다.
- Fargate 시작 유형 : EC2에 비해 더 빠르고 쉽게 만들고 테스트환경과 같이 워크로드가 가벼운 경우에 Fargate를 사용하는 것이 좋다. 크론 작업과 같이 워크로드가 일괄적으로만 실행되는 경우에도 Fargate를 사용하는 것이 좋다.
- Task Definition : Task Definition은 애플리케이션을 구성하는 하나 이상의 컨테이너를 설명하는 텍스트 파일입니다. JSON 형식입니다. 최대 10개의 컨테이너를 설명하는 데 사용할 수 있습니다. 태스크 정의는 애플리케이션의 블루프린트 역할을 하며, 애플리케이션에 대한 다양한 파라미터를 지정합니다. 예를 들어, 이를 사용하여 운영 체제에 대한 파라미터, 사용할 컨테이너, 애플리케이션에 대해 개방할 포트, 태스크의 컨테이너와 함께 사용할 데이터 볼륨을 지정할 수 있습니다. 태스크 정의에 사용할 수 있는 특정 파라미터는 특정 애플리케이션의 필요에 따라 달라집니다.
- Task : 태스크는 클러스터 내 태스크 정의를 인스턴스화하는 것입니다. Amazon ECS에서 애플리케이션에 대한 태스크 정의를 생성하면 클러스터에서 실행할 태스크 수를 지정할 수 있습니다. 독립 실행형 태스크를 실행하거나 서비스의 일부로 태스크를 실행할 수 있습니다.
- Service : Amazon ECS 서비스를 사용하여 Amazon ECS 클러스터에서 원하는 수의 태스크를 동시에 실행하고 유지할 수 있습니다. 태스크가 어떤 이유로든 실패하거나 중지하면 Amazon ECS 서비스 스케줄러가 태스크 정의에 따라 다른 인스턴스를 시작하는 방식으로 작동합니다. 이로써 이를 대체하여 서비스에서 원하는 수의 태스크를 유지할 수 있습니다.
시작 유형에 따른 장단점
- EC2 Launch type :
- 장점
- 특히 작업이 정해진 또는 예측 가능한 양의 vCPU와 메모리를 소비하는 경우, 완전히 활용된 클러스터를 실행하는 데 상대적으로 저렴하다. 심지어 Free Tier에서 사용할 수도 있다. 또한 EC2의 스팟 인스턴스는 Fargate의 스팟 인스턴스보다 저렴하다.
- EC2 클러스터는 더 안전하다. 임의의 워크로드와 함께 민감한 클러스터를 실행하는 것에 대해 걱정할 필요 없다.
- GPU 가속을 지원한다.
- 단점
- 클러스터를 직접 관리하므로 인프라 관리도 직접 해결해야 한다.
- 사용한 용량과 사용하지 않은 용량 모두에 대해 요금이 부과되지만, 비용 최적화 전략을 활용할 수 있다.
- 장점
- Fargate : (Recommend)
- 장점
- 서버와 클러스터를 관리하고 확장하는 오버헤드 없이 컨테이너 실행
- AWS가 인스턴스의 보안 및 상태는 물론 패치 및 유지 관리를 처리한다.
- 컨테이너의 리소스 요구 사항을 충족하도록 Fargate 가 확장되므로 운영 효율성 및 컴퓨팅 오버프로비저닝 감소
- 서버 실행 시간에 고나계없이 컨테이너 워크로드가 활성화된 경우에만 요금이 청구된다.
- 단점
- 관리 작업을 추상화하여 제공하는 편의성 때문에 EC2 클러스터보다 비용이 더 많이 든다. 일부 사례로 특정 임계값 이하에서는 Fargate 가 3배 더 비싸다고 한다.
- 데몬셋과 privileged 파드를 실행할 수 없으므로 클러스터에서 특정 유형의 서비스를 실행할 수 없으며 애플리케이션의 기능과 성능에 상당한 영향을 미친다.
- 특정 인스턴스 유형을 지정할 수 없다.
- GPU 및 EBS 볼륨을 지원하지 않는다. 애플리케이션에 GPU 가속이 필요하거나 EBS 볼륨이 있는 영구 블록 스토리지가 필요한 경우 Fargate를 사용할 수 없다.
- ECS에서 사용할 수 있는 모든 작업 정의 매개변수를 지원하지 않는다. 작업을 실행할 환경을 사용자 지정하거나 여러 환경 간에 작업을 전송할 수 없다.
- 장점
EKS와 어떤 부분이 다른지?
- 추상화 수준 : Fargate 는 EC2 인스턴스를 직접 관리하지 않고도 컨테이너를 실행할 수 있다. 컨테이너 실행을 위한 서버리스 환경을 제공한다. 반면 EKS는 오픈 소스 컨테이너 오케스트레이션 플랫폼인 Kubernetes를 사용해 애플리케이션을 배포하고 관리할 수 있는 완전 관리형 Kubernetes 서비스이다.
- 오케스트레이션 프레임 워크 : ECS Fargate는 AWS에서 제공하는 자체 컨테이너 오케스트레이션 프레임워크를 사용한다. 다른 AWS 서비스와 긴밀하게 통합되며 컨테이너 관리를 위한 간소화 된 인터페이스를 제공한다. 반면 EKS는 Kubernetes를 기본 오케스트레이션 프레임 워크로 활용한다. 수평 확장, 서비스 검색, 포드 네트워킹과 같은 고급 기능을 포함하여 Kubernetes의 모든 기능을 제공한다.
- 컨테이너 런타임 : ECS Fargate는 AWS 인프라용으로 특별히 설계된 컨테이너 실행을 위해 Amazon Elastic Container Runtime을 사용합니다. 컨테이너를 실행하는 데 필요한 기본 리소스를 관리합니다. 반대로 EKS는 Docker 및 containerd를 비롯한 여러 컨테이너 런타임을 지원하므로 필요에 맞는 컨테이너 런타임을 더 유연하게 선택할 수 있습니다.
컨테이너 서비스이며 ecs-cli 를 사용하면 컨테이너 내부에도 접근이 가능하나 컨테이너 서비스이기 때문에 Backup 정책이나 복원 정책을 세우지 못해 테스트 환경이나 짧게 사용하는 서비스에 적합하다. 관리 측면에서 서버를 AWS 측에서 직접 관리해주기 때문에 편리하고 모니터링도 CloudWatch 와 편리하게 연동이 가능하기 때문에 (컨테이너 log도 확인 가능) 편리함.
'Cloud > AWS' 카테고리의 다른 글
[AWS] 네트워크 전송 비용 정리 (0) | 2024.04.30 |
---|---|
STS, AssumeRole, PassRole이란? (0) | 2024.01.30 |
Reserved Instance(RI), Savings Plans 란? (1) | 2024.01.30 |
Transit Gateway란? (0) | 2023.11.15 |
AWS PrivateLink란? (0) | 2023.07.17 |