AWS Fargate 서비스란?
AWS Fargate는 컨테이너 실행을 위한 서버리스 컴퓨팅 엔진입니다. 즉, 서버를 직접 프로비저닝하거나 관리하지 않고도 컨테이너를 실행할 수 있는 서비스입니다. Fargate는 Amazon ECS(AWS의 자체 컨테이너 오케스트레이션 서비스) 또는 Amazon EKS(Kubernetes 기반)와 함께 사용할 수 있습니다.
📌 주요 특징
항목 | 설명 |
---|---|
서버리스 | EC2 인스턴스를 직접 생성하거나 관리하지 않아도 컨테이너가 실행됨 |
자동 리소스 관리 | CPU와 메모리 할당량만 설정하면 나머지는 Fargate가 자동 처리 |
컨테이너 단위 과금 | 실제 컨테이너 실행 시간과 리소스(CPU/메모리) 사용량 기준으로 요금 부과 |
보안 격리 | 각 작업(Task)은 자체 가상화된 환경에서 실행되어 보안성이 높음 |
ECS / EKS 연동 | Amazon ECS 또는 EKS에서 선택 가능 (Fargate launch type 또는 profile 설정) |
🧩 Fargate가 유용한 경우
- 인프라 관리 부담 없이 빠르게 컨테이너 기반 애플리케이션을 배포하고 싶은 경우
- 사용량이 예측되지 않거나 스케일이 자주 변하는 워크로드
- 마이크로서비스 아키텍처 기반의 애플리케이션
- 보안, 네트워크 설정을 세밀하게 분리하고 싶은 경우
🚫 고려할 점
- 비용: 장기적으로는 EC2 기반의 컨테이너 실행보다 비용이 높을 수 있음
- 제한 사항: ECS에서 사용할 경우 일부 ECS 기능은 EC2 launch type에서만 제공됨 (예: EFS 마운트 등은 일부 제약 존재)
- 네트워크 제한: ENI(Elastic Network Interface) 수 제한 때문에 대규모 Task 배포 시 한계가 있음
🔗 왜 ECS 또는 EKS가 필요한가요?
Fargate는 컨테이너를 실행해주는 “컴퓨팅 실행 엔진”일 뿐입니다.
컨테이너를 배포하고 관리하기 위한 컨트롤 플레인(Control Plane)은 별도로 필요하며,
이 역할을 ECS 또는 EKS가 담당합니다.
📌 간단히 비교하면:
항목 | 설명 |
---|---|
Fargate | 컨테이너를 “어디서”, “어떻게” 실행할지 담당 (서버 관리不要) |
ECS / EKS | 컨테이너를 “무엇을”, “언제”, “몇 개” 실행할지 정의하고 관리 (컨트롤 타워 역할) |
🔧 구조 예시
- ECS + Fargate:
Task Definition
에 원하는 컨테이너 이미지, CPU, 메모리 등을 설정
→ Fargate가 이를 실행 - EKS + Fargate:
Kubernetes의Pod
를 정의한 YAML 파일을 배포
→ Fargate가 해당 Pod를 실행
✅ 즉, Fargate 사용을 원한다면?
- ECS 또는 EKS 중 하나를 반드시 선택해야 합니다
- 단순한 아키텍처나 관리 자동화를 원한다면 ECS가,
- Kubernetes 익숙하거나 멀티 클라우드 고려 중이면 EKS가 적합합니다