Fargate는 EC2 인스턴스의 서버나 클러스터를 관리할 필요 없이, 컨테이너를 실행하기 위해 ECS에 사용할 수 있는 기술이다. 이를 이용하면 더 이상 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성할 필요가 없다(EC2 내부 설정 등등). 그러므로 서버 유형 선택 및 클러스터 조정 시점을 결정해 최적화할 필요 역시 없다.
시작 유형 또는 용량 공급자를 사용해 ECS 태스크와 서비스를 실행할 때는 애플리케이션을 컨테이너에 패키징 하고 CPU 및 메모리 요구 사항을 지정한 뒤 네트워킹과 IAM 정책을 정의 하여 시작할 수 있다.
컨테이너를 Docker를 이용해 로컬로 구축하고 테스트한 다음 Fargate의 ECS에 배포할 수 있다. 따라서, 로컬 환경에 도커파일을 생성해 놓는다.
ECS가 ECR(Elastic Container Registry)이랑 다른 점은 무엇일까?
도메인이 필요하다면 Load Balancer 설정도 하는 것이 좋다.
→ Fargate 생성 전에 미리 설정하는 것이 좋을 것
Load Balancer
ECR
ECS
ECS로 가서 클러스터를 생성한다.
“클러스터 > 클러스터 생성”을 클릭한다.
아래 세 가지 중 네트워킹 전용
이 Fargate이다.
→ 이를 선택한다.
클러스터 이름과 VPC 설정을 하고 생성한다.
이제 새 작업 정의 생성
을 클릭해서 새로운 task를 만든다.
작업 크기와 컨테이너 정의가 가능하다.
→ 일단 테스트용이기 때문에 가장 작은 메모리와 CPU로 설정했다.
컨테이너 추가를 누르면 컨테이너 이름과 이에 해당하는 이미지를 설정할 수 있다.
→ 이미지는 ECR에 올려 놓은 이미지 URL을 가져와 사용하면 된다(AWS 내부에 있는 것이기 때문에 바로 인식한다).
→ volumes 설정과 같은 고급 설정들도 있다.
Task 생성을 완료한다.
서비스 생성
service를 통해 task 여러 개를 한 번에 관리할 수 있다.
클러스터의 서비스
에서 생성
을 클릭한다.
작업 생성할 때 유형은 Fargate, 작업 개수는 사용하려는 개수에 따라 적어주면 되는데 하나면 1을 적는다.
(서비스 유형은 기본이 REPLICA이다.)
최소 정상 상태 백분율(minimum healthy percent): 최소한 실행될 수 있는 container 백분율을 의미한다.
maximum percent: 최대 인스턴스 가능한 비율
→ minimum이 100%에 6개일 때 maximum이 200%면 컨테이너는 12개까지 가능함(2배)
Deployment type
한 번에 새로운 Task를 동시에 띄운 뒤 기존의 Task는 다 꺼버리는 방식
→ 이것도 maxmium percent 이상으로는 전체 다 띄울 수 없다.
가령 4개의 기존 task가 있다면 4개를 더 만든 뒤 기존의 4개를 꺼버리는 방식
→ Code Deploy 설정이 필요해서 조금 복잡하다.
따로 추가 설정이 필요하다.
미리 만들어 놓은 load-balancer 설정을 한다.
마지막에 auto-scaling 설정까지 하면 끝
컨테이너에 대한 비용만 지불하면 된다!
선결제 비용이 없으며 사용하는 리소스에 대한 비용만 지불한다. ECS 또는 EKS에서 실행되는 컨테이너식 애플리케이션이 소비하는 vCPU, 메모리, 스토리지 리소스 양에 대해 비용을 지불하게 된다.
요금은 컨테이너 이미지 다운로드를 시작한 시점부터 ECS 태스크 또는 EKS 포드가 종료될 때까지 사용된 vCPU, 메모리, 운영체제, CPU 아키텍처 및 스토리지 리소스를 기준으로 계산된다. 이 때, 가장 가까운 초 단위로 반올림 된다.
1) AWSKRUG 강의
2) ECS 강의