Fargate는 EC2 인스턴스를 직접 관리하지 않고 컨테이너를 실행할 수 있는 AWS의 서버리스 컨테이너 실행 엔진입니다. ECS 또는 EKS와 함께 사용하며, 컨테이너에 필요한 CPU와 메모리만 정의하면 AWS가 그에 맞는 인프라를 자동으로 프로비저닝하고 관리합니다.
Fargate를 사용하면 "어떤 서버에서 실행할까"보다 "컨테이너에 얼마나 많은 자원이 필요한가"에만 집중할 수 있습니다.
ECS에서 컨테이너를 실행하는 방식은 두 가지입니다. EC2 Launch Type과 Fargate Launch Type입니다.
EC2 Launch Type Fargate Launch Type
[ECS Control Plane] [ECS Control Plane]
| |
v v
+---------------+ +------------------+
| EC2 Instance | | Fargate (AWS 관리)|
| | | |
| +-----------+ | | +--------------+ |
| |ECS Agent | | | | Task (격리) | |
| +-----------+ | | +--------------+ |
| +-----------+ | +------------------+
| | Task | |
| +-----------+ | 서버 관리 불필요
| +-----------+ | Task별 독립 격리
| | Task | |
| +-----------+ |
+---------------+
OS 패치, 용량 계획,
에이전트 관리 필요
EC2 Launch Type은 사용자가 직접 EC2 인스턴스를 Cluster에 등록하고 관리하는 방식입니다. 인스턴스의 OS 패치, ECS Agent 업데이트, 용량 계획이 모두 사용자 책임입니다.
Fargate는 서버 관리를 AWS에 완전히 위임합니다. Task 단위로 CPU와 메모리를 정의하면, AWS가 해당 Task를 격리된 컴퓨팅 환경에서 실행합니다.
Fargate는 "서버리스 컨테이너"라고 불립니다. 서버리스는 서버가 존재하지 않는 것이 아니라, 사용자가 서버를 인식하거나 관리할 필요가 없다는 의미입니다.
Lambda가 함수(코드) 수준의 서버리스라면, Fargate는 컨테이너 수준의 서버리스입니다. Lambda는 최대 실행 시간(15분) 제한이 있지만, Fargate는 장기 실행 프로세스를 컨테이너로 실행하는 데 적합합니다.
서버리스 스펙트럼
EC2 -----------> ECS/EC2 -----------> Fargate -----------> Lambda
(직접 관리) (부분 관리) (서버리스 컨테이너) (서버리스 함수)
관리 부담 최대 관리 부담 최소
유연성 최대 유연성 최소
Fargate에서 Task의 컴퓨팅 자원은 Task Definition에서 CPU 단위와 메모리 크기로 지정합니다.
CPU는 vCPU의 1/1024 단위로 지정하며, 메모리는 MB 단위입니다. 유효한 조합은 아래와 같이 미리 정해져 있습니다.
+----------+-------------------------------------------+
| CPU 값 | 가능한 Memory 범위 |
+----------+-------------------------------------------+
| 256 | 512MB ~ 2GB (512MB 단위) |
| 512 | 1GB ~ 4GB (1GB 단위) |
| 1024 | 2GB ~ 8GB (1GB 단위) |
| 2048 | 4GB ~ 16GB (1GB 단위) |
| 4096 | 8GB ~ 30GB (1GB 단위) |
| 8192 | 16GB ~ 60GB (4GB 단위) |
| 16384 | 32GB ~ 120GB (8GB 단위) |
+----------+-------------------------------------------+
CPU 256은 0.25 vCPU, 1024는 1 vCPU에 해당합니다. Task 수준에서 전체 자원을 정의하고, 그 안의 개별 컨테이너에 Task 자원의 일부를 배분하는 방식으로 설정합니다.
Fargate는 EC2와 달리 Task가 실행되는 동안만 vCPU와 메모리 사용량에 대해 과금됩니다. Task가 종료되면 비용이 발생하지 않습니다.
Fargate 비용 = (vCPU 수 x 초당 vCPU 단가) + (메모리 GB x 초당 메모리 단가)
x 실행 시간(초)
트래픽이 일정한 상시 운영 서비스는 EC2 Reserved Instance가 비용 효율적일 수 있습니다. 반면 트래픽 변동이 크거나 간헐적으로 실행되는 배치 작업은 Fargate가 더 경제적입니다.
Fargate는 다음 상황에 특히 적합합니다.