Amazon ECS용 AWS Fargate 아키텍처 설계
Amazon ECS용 AWS Fargate 아키텍처 설계
AWS Fargate는 Amazon ECS와 함께 사용해 서버나 Amazon EC2 인스턴스 클러스터를 관리하지 않고도 컨테이너를 실행할 수 있게 해 주는 기술이에요. AWS Fargate를 사용하면 컨테이너를 실행하기 위해 가상 머신 클러스터를 프로비저닝, 구성 또는 스케일링할 필요가 없어요.
출처: 문서
본문
AWS Fargate는 Amazon ECS와 함께 사용해 서버나 Amazon EC2 인스턴스 클러스터를 관리하지 않고도 컨테이너를 실행할 수 있게 해 주는 기술이에요. AWS Fargate를 사용하면 컨테이너를 실행하기 위해 가상 머신 클러스터를 프로비저닝, 구성 또는 스케일링할 필요가 없어요. 이로써 서버 유형을 선택하고, 클러스터를 확장할 시점을 결정하고, 클러스터 패킹을 최적화할 필요가 없어져요.
Fargate로 태스크와 서비스를 실행하면 애플리케이션을 컨테이너로 패키징하고, CPU와 메모리 요구 사항을 지정하고, 네트워킹과 IAM 정책을 정의하고, 애플리케이션을 시작해요. 각 Fargate 태스크는 자체 격리 경계가 있으며 다른 태스크와 기본 커널, CPU 리소스, 메모리 리소스 또는 탄력적 네트워크 인터페이스를 공유하지 않아요.
requiresCompatibilities 태스크 정의 파라미터를 FARGATE 로 설정해 Fargate용 태스크 정의를 구성해요. 자세한 내용은 Capacity 를 참고해 주세요. Fargate는 Amazon Linux 2(플랫폼 버전 1.3.0), Bottlerocket 운영 체제(플랫폼 버전 1.4.0), Microsoft Windows 2019 Server Full 및 Core 에디션용 플랫폼 버전을 제공해요. 달리 명시되지 않는 한 정보는 모든 Fargate 플랫폼에 적용돼요. Fargate에서 Linux 컨테이너를 지원하는 Region에 대한 정보는 Linux containers on AWS Fargate 를 참고해 주세요. Fargate에서 Windows 컨테이너를 지원하는 Region에 대한 정보는 Windows containers on AWS Fargate 를 참고해 주세요.
워크스루 콘솔 사용을 시작하는 방법에 대한 정보는 다음을 참고해 주세요.
- Learn how to create an Amazon ECS Linux task for Fargate
- Learn how to create an Amazon ECS Windows task for Fargate
AWS CLI 사용을 시작하는 방법에 대한 정보는 다음을 참고해 주세요.
- Creating an Amazon ECS Linux task for the Fargate with the AWS CLI
- Creating an Amazon ECS Windows task for the Fargate with the AWS CLI
용량 제공자 다음 용량 제공자를 사용할 수 있어요.
- Fargate
- Fargate Spot - AWS Fargate 가격보다 저렴한 할인 요금으로 중단에 허용적인(tolerant) Amazon ECS 태스크를 실행해요. Fargate Spot은 여유 컴퓨팅 용량에서 태스크를 실행해요. AWS가 용량을 다시 필요로 하면 태스크는 2분 사전 경고와 함께 중단돼요. 자세한 내용은 Amazon ECS clusters for Fargate 를 참고해 주세요.
태스크 정의 Fargate 태스크는 사용 가능한 모든 Amazon ECS 태스크 정의 파라미터를 지원하지는 않아요. 일부 파라미터는 전혀 지원되지 않고, 다른 파라미터는 Fargate 태스크에서 다르게 동작해요. 자세한 내용은 Task CPU and memory 를 참고해 주세요.
플랫폼 버전 AWS Fargate 플랫폼 버전은 Fargate 태스크 인프라의 특정 런타임 환경을 나타내는 데 사용돼요. 이는 커널과 컨테이너 런타임 버전의 조합이에요. 태스크를 실행하거나 동일한 태스크 수를 유지하는 서비스를 만들 때 플랫폼 버전을 선택해요.
런타임 환경이 발전함에 따라 플랫폼 버전의 새 개정이 릴리스돼요. 예를 들어 커널이나 운영 체제 업데이트, 새 기능, 버그 수정 또는 보안 업데이트가 있을 때 그러해요. Fargate 플랫폼 버전은 새 플랫폼 버전 개정을 만들어 업데이트돼요. 각 태스크는 수명 주기 동안 하나의 플랫폼 버전 개정에서 실행돼요. 최신 플랫폼 버전 개정을 사용하려면 새 태스크를 시작해야 해요. Fargate에서 실행되는 새 태스크는 항상 플랫폼 버전의 최신 개정에서 실행되므로 태스크가 항상 안전하고 패치된 인프라에서 시작되도록 보장돼요.
기존 플랫폼 버전에 영향을 주는 보안 문제가 발견되면 AWS는 플랫폼 버전의 새 패치 개정을 만들고 취약한 개정에서 실행되는 태스크를 퇴역(retire)시켜요. 경우에 따라 Fargate 태스크가 퇴역 예정으로 통보될 수 있어요. 자세한 내용은 Task retirement and maintenance for AWS Fargate on Amazon ECS 를 참고해 주세요.
자세한 내용은 Fargate platform versions for Amazon ECS 를 참고해 주세요.
서비스 로드 밸런싱 AWS Fargate의 Amazon ECS 서비스는 Elastic Load Balancing을 사용해 서비스의 태스크 전체에 트래픽을 균등하게 분산하도록 선택적으로 구성할 수 있어요. AWS Fargate의 Amazon ECS 서비스는 Application Load Balancer, Network Load Balancer, Gateway Load Balancer 로드 밸런서 유형을 지원해요. Application Load Balancer는 HTTP/HTTPS(레이어 7) 트래픽을 라우팅하는 데 사용돼요. Network Load Balancer는 TCP 또는 UDP(레이어 4) 트래픽을 라우팅하는 데 사용돼요. 자세한 내용은 Use load balancing to distribute Amazon ECS service traffic 을 참고해 주세요.
이러한 서비스에 대한 대상 그룹을 만들 때 대상 유형으로 instance 가 아닌 ip 를 선택해야 해요. 이는 awsvpc 네트워크 모드를 사용하는 태스크가 Amazon EC2 인스턴스가 아닌 탄력적 네트워크 인터페이스와 연결되기 때문이에요. 자세한 내용은 Use load balancing to distribute Amazon ECS service traffic 을 참고해 주세요. Network Load Balancer를 사용해 Amazon ECS on AWS Fargate 태스크에 UDP 트래픽을 라우팅하는 것은 플랫폼 버전 1.4 이상을 사용할 때만 지원돼요.
사용 메트릭 CloudWatch 사용 메트릭을 사용해 계정의 리소스 사용에 대한 가시성을 확보할 수 있어요. 이러한 메트릭을 사용해 CloudWatch 그래프와 대시보드에서 현재 서비스 사용량을 시각화해 보아요. AWS Fargate 사용 메트릭은 AWS 서비스 할당량에 해당해요. 사용량이 서비스 할당량에 근접할 때 알려 주는 알람을 구성할 수 있어요. AWS Fargate 서비스 할당량에 대한 자세한 내용은 Amazon Web Services General Reference 의 Amazon ECS endpoints and quotas 를 참고해 주세요.