본문 바로가기
[AWS-FRF]/Fargate

[AWS] Fargate의 주요 특징 및 실행 방식 !!

by METAVERSE STORY 2025. 2. 11.
반응형

 

 

 

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"}'

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 기반 컨테이너 실행과 비용을 비교하여 적절한 옵션 선택이 필요함.

 

 

반응형

댓글