반응형
AWS Fargate는 컨테이너를 실행할 수 있도록 설계된 서버리스 컴퓨팅 엔진으로,
인프라를 직접 관리하지 않고 컨테이너 워크로드를 실행할 수 있도록 도와줍니다.
1. AWS Fargate 개요
- AWS Fargate는 Amazon ECS(Elastic Container Service) 및 Amazon EKS(Elastic Kubernetes Service)와 함께 사용되는 서버리스 컨테이너 실행 서비스입니다.
- 사용자는 클러스터의 인프라(EC2 인스턴스, OS 패치, 스케일링 등)를 관리할 필요 없이 컨테이너만 배포하면 됩니다.
2. Fargate의 주요 특징
- 서버리스 아키텍처: 인프라 관리가 필요 없으며, 애플리케이션 코드 및 컨테이너 실행에만 집중할 수 있음.
- 자동 확장: 워크로드에 맞춰 컨테이너의 실행 인스턴스를 자동으로 스케일링함.
- 격리된 보안 환경: 각 컨테이너가 자체 가상화된 환경에서 실행되며, 다른 워크로드와 격리됨.
- 비용 효율성: 실행한 컨테이너의 리소스(메모리, CPU)에 대해서만 비용을 지불함.
- EC2 인스턴스 필요 없음: 컨테이너 실행을 위해 EC2 인스턴스를 프로비저닝할 필요 없이 AWS가 백그라운드에서 자동으로 관리함.
3. Fargate 실행 방식
AWS Fargate는 다음과 같은 방식으로 동작합니다.
1) 컨테이너 이미지 준비
- 컨테이너 이미지를 Docker Hub 또는 Amazon Elastic Container Registry (ECR) 에 저장합니다.
2) 작업 정의(Task Definition) 생성
- Amazon ECS에서 Fargate를 사용하려면 Task Definition(작업 정의) 을 만들어야 합니다.
- Task Definition은 컨테이너 이미지, CPU/MEM 할당량, 네트워크 설정, IAM 역할 등의 구성을 정의합니다.
3) 서비스(Service) 또는 작업(Task) 실행
- ECS의 서비스(Service) 또는 Task를 실행하면, Fargate가 자동으로 컨테이너를 실행합니다.
- 실행된 컨테이너는 AWS가 관리하는 가상 머신에서 동작합니다.
4) 애플리케이션 트래픽 처리
- 실행된 컨테이너는 Application Load Balancer(ALB), Network Load Balancer(NLB) 등을 통해 트래픽을 처리할 수 있습니다.
- 또한 AWS 서비스(예: S3, DynamoDB, SNS 등)와 통합하여 애플리케이션을 확장할 수 있습니다.
4. Fargate와 ECS, EKS 비교
특징Fargate (ECS)Fargate (EKS)EC2 기반 ECS/EKS
서버 관리 | 불필요 | 불필요 | 직접 관리해야 함 |
비용 | 사용한 만큼만 지불 | 사용한 만큼만 지불 | EC2 인스턴스 요금 발생 |
확장성 | 자동 | 자동 | EC2에 따라 제한됨 |
보안 격리 | 높음 | 높음 | 낮음 (같은 노드에서 실행) |
사용 편의성 | 쉬움 | Kubernetes 필요 | 복잡 |
5. Fargate의 주요 활용 사례
- 마이크로서비스 배포: 여러 개의 독립된 컨테이너 기반 서비스 운영.
- 이벤트 기반 애플리케이션: AWS Lambda와 함께 활용하여 이벤트 기반 워크로드 실행.
- 일괄 처리(Batch Processing): 데이터 분석, 머신러닝 모델 학습 등에 사용.
- CI/CD 파이프라인: GitHub Actions, AWS CodePipeline과 연계하여 배포 자동화.
6. Fargate 사용 시 고려할 점
- VPC 및 서브넷 구성: Fargate는 VPC 내에서 실행되므로 네트워크 구성을 미리 설정해야 함.
- 로그 및 모니터링: AWS CloudWatch Logs, AWS X-Ray 등을 활용하여 모니터링 가능.
- IAM 권한 설정: 실행되는 컨테이너가 필요한 AWS 리소스에 접근할 수 있도록 IAM 역할을 적절히 부여해야 함.
- 비용 최적화: 장기 실행 서비스라면 EC2 기반 ECS/EKS와 비용을 비교해야 함.
7. Fargate 설정 예제 (Terraform & AWS CLI)
(1) Terraform을 활용한 Fargate ECS Task 정의
resource "aws_ecs_task_definition" "fargate_task" {
family = "my-fargate-task"
requires_compatibilities = ["FARGATE"]
network_mode = "awsvpc"
cpu = "256"
memory = "512"
container_definitions = jsonencode([
{
name = "my-container"
image = "my-ecr-repo.dkr.ecr.us-east-1.amazonaws.com/my-app:latest"
essential = true
}
])
}
(2) AWS CLI를 활용한 Fargate 서비스 실행
aws ecs create-service \
--cluster my-cluster \
--service-name my-service \
--task-definition my-fargate-task \
--launch-type FARGATE \
--desired-count 2 \
--network-configuration 'awsvpcConfiguration={subnets=["subnet-abc123"],securityGroups=["sg-xyz456"],assignPublicIp="ENABLED"}'
--cluster my-cluster \
--service-name my-service \
--task-definition my-fargate-task \
--launch-type FARGATE \
--desired-count 2 \
--network-configuration 'awsvpcConfiguration={subnets=["subnet-abc123"],securityGroups=["sg-xyz456"],assignPublicIp="ENABLED"}'
8. Fargate 요금 구조
- Fargate의 비용은 vCPU 시간 + 메모리 시간 기준으로 책정됨.
- 예시:
- 1 vCPU, 2GB 메모리 컨테이너를 1시간 실행하면 해당하는 요금이 부과됨.
- 요금은 리전마다 다르므로 공식 AWS Fargate 요금 페이지 참고.
9. Fargate vs Lambda 차이점
특징AWS FargateAWS Lambda
실행 환경 | 컨테이너 | 함수 기반 |
실행 시간 제한 | 없음 | 15분 제한 |
상태 유지 | 가능 | 불가능 (Stateless) |
트래픽 유형 | 지속적인 서비스 | 이벤트 기반 처리 |
사용 사례 | API 서버, 마이크로서비스 | 이벤트 처리, 백엔드 작업 |
10. 정리
- AWS Fargate는 컨테이너 실행을 위한 서버리스 솔루션으로, 인프라 관리를 최소화하고 확장성을 극대화할 수 있음.
- Amazon ECS 및 Amazon EKS에서 사용 가능하며, 비용 효율적인 서버리스 컨테이너 실행을 지원함.
- 자동 확장, 보안 격리, 네트워크 구성 지원 등 다양한 기능을 제공하여 마이크로서비스 및 CI/CD 파이프라인 구축에 유용함.
- EC2 기반 컨테이너 실행과 비용을 비교하여 적절한 옵션 선택이 필요함.
반응형
'[AWS-FRF] > Fargate' 카테고리의 다른 글
[참고] AWS Fargate with ECS Tutorial: How to Deploy Microservices with a Load Balancer !! (2) | 2025.02.12 |
---|---|
AWS EC2 on ECS vs Fargate | Whats the Difference and When To Use What? (2) | 2025.02.11 |
댓글