본문으로 건너뛰기
김신건의 로그

[AWS] EC2 Instance Types: family, generation, sizing

· 수정 · 📖 약 3분 · 996자/단어 #aws #ec2 #instance-type #cloud #optimization
instance types, Graviton, m6i vs m6a vs m6g, right-sizing, burstable, Nitro

정의

EC2 인스턴스 수백 종. family + generation + modifier + size. 워크로드에 맞춰 right-sizing.

Family

Family용도
tburstablet4g.micro
mgeneralm7i, m7a, m7g
ccomputec7i (CPU 강)
rmemoryr7i (RAM 강)
x, uextreme memoryx2gd (1.5TB+)
istorage (NVMe)i4i
ddense HDDd3
p, g, inf, trnGPU/AIp5 (H100), trn1 (training)
hpcHPChpc7g
macmacOSmac2 (Apple Silicon)

세대 + Modifier

m7g.large
│ │ │
│ │ └── size
│ └──── generation 7
└────── family + modifier
        m = general
        i = Intel
        a = AMD
        g = Graviton (ARM)
        n = enhanced network
        d = local NVMe
Modifier의미
iIntel Xeon
aAMD EPYC
gAWS Graviton (ARM)
nenhanced network
dlocal NVMe SSD
zhigh frequency
eextended memory

Size

SizevCPU (m7i)RAM
nano20.5GB
micro21GB
small22GB
medium24GB
large28GB
xlarge416GB
2xlarge832GB
4xlarge1664GB
8xlarge32128GB
48xlarge192768GB

Graviton vs Intel vs AMD (비용 비교)

m7 family, 같은 size 의 시간당 비용 (직관)
Graviton 이 가장 저렴 + 비슷한 성능. 새 워크로드는 Graviton 우선.

Burstable (t family) 의 CPU Credit

sequenceDiagram
    Idle->>Bank: CPU credit 적립 (baseline 이하)
    Burst->>Bank: credit 소비 (baseline 초과 시)
    Bank-->>Throttle: credit 0 → throttle
타입Baseline CPU
t4g.nano5%
t4g.micro10%
t4g.small20%
t4g.medium20% (2 vCPU)

CAUTION

지속적 부하 에 burstable 사용 = credit 소진 → baseline 으로 throttle. unlimited 모드 또는 m family.

Right-sizing

flowchart TD
    Q[현재 사용량 측정]
    Q --> Compute[CPU/Memory 평균 + p99]
    Compute --> Decide{사용률}
    Decide -->|< 30%| Down[size 줄임]
    Decide -->|30-70%| Keep[유지]
    Decide -->|> 70%| Up[size 늘림 또는 family 변경]

도구:

  • AWS Compute Optimizer (자동 권장)
  • CloudWatch metric
  • 3rd-party (CloudHealth, Spot.io)

Nitro

AWS 의 경량 하이퍼바이저. 모든 새 generation (>= 2018) 이 Nitro. 거의 bare-metal 성능.

특징:

  • 빠른 시작
  • Nitro Enclaves (격리 컴퓨팅, 민감 데이터 처리)
  • Nitro SSD (NVMe)
  • 네트워크 / 스토리지 전용 카드

Spot 인스턴스 심화

Spot 은 미사용 EC2 용량을 최대 90% 할인에 제공. 단, AWS 가 언제든 회수 가능 (2분 경고).

flowchart LR
    Market["Spot Market\n(미사용 EC2 용량)"]
    Req["Spot 요청"]
    Market -->|용량 있음| Running[인스턴스 시작]
    Market -->|용량 부족 또는 가격 초과| Term[2분 경고 후 종료]
    Running -->|용량 회수 필요| Term
    Term -->|Spot Fleet 재시도| Req

Spot 적합/부적합 워크로드

적합부적합
배치 처리, 렌더링프로덕션 웹 서버 단독
빅데이터 처리 (Spark, EMR)실시간 DB Primary
CI/CD 빌드상태 유지 워크로드
ML 훈련 (체크포인트 지원 시)종료 허용 안 되는 작업

Spot 중단 처리

import requests
import time

def check_spot_interruption():
    """EC2 instance metadata 로 종료 2분 전 알림 확인"""
    try:
        r = requests.get(
            "http://169.254.169.254/latest/meta-data/spot/termination-time",
            timeout=1
        )
        if r.status_code == 200:
            print(f"Spot termination at: {r.text}")
            # 체크포인트 저장, graceful shutdown 처리
            return True
    except Exception:
        pass
    return False

while True:
    if check_spot_interruption():
        # 상태 저장, 작업 큐에 반환 등
        break
    time.sleep(5)

Spot Fleet / EC2 Fleet

SpotFleet:
  SpotFleetRequestConfig:
    AllocationStrategy: diversified
    TargetCapacity: 10
    LaunchSpecifications:
      - InstanceType: m7i.large
        SubnetId: subnet-a
      - InstanceType: m7a.large
        SubnetId: subnet-b
      - InstanceType: m6i.large
        SubnetId: subnet-c

diversified 전략: 여러 인스턴스 타입과 AZ 에 분산 → 대규모 중단 위험 감소.

Placement Groups

인스턴스 배치를 제어해 성능 또는 가용성 최적화.

유형목적특성
Cluster최저 레이턴시, 최고 처리량같은 AZ, 같은 랙. HPC/ML 훈련
Spread최고 가용성AZ 별 다른 랙. 중요 인스턴스 격리
Partition대규모 분산AZ 내 파티션 격리. Kafka, Cassandra, HDFS
# Cluster Placement Group 생성 (HPC)
aws ec2 create-placement-group \
  --group-name hpc-cluster \
  --strategy cluster

# 인스턴스를 그룹에 배치
aws ec2 run-instances \
  --placement GroupName=hpc-cluster \
  ...

CAUTION

Cluster Placement Group 은 단일 AZ 내 단일 랙. 랙 장애 시 전체 그룹 영향. 중요 프로덕션 워크로드에는 Spread 사용.

워크로드별 인스턴스 선택 가이드

flowchart TD
    W{"워크로드 유형"}
    W -->|"CPU 집약 (ML 추론, 인코딩)"| C[c7g / c7i]
    W -->|"메모리 집약 (인메모리 DB, SAP)"| R[r7g / r7i]
    W -->|"GPU 필요 (ML 훈련, 렌더링)"| G[p5 / g6 / trn1]
    W -->|"일반 웹/앱 서버"| M[m7g / m7i]
    W -->|"소규모 개발/테스트"| T[t4g / t3a]
    W -->|"NVMe 스토리지 필요"| I[i4i / im4gn]
    C --> Grav{"ARM 호환?"}
    M --> Grav
    R --> Grav
    Grav -->|예| ARM[Graviton 선택]
    Grav -->|아니오| Intel[Intel/AMD 선택]

요금 모델 비교

모델할인율유연성적합
On-Demand기준최고 (즉시 시작/종료)단기, 예측 불가
Reserved (1년)약 30-40%낮음 (1년 약정)안정적 베이스라인
Reserved (3년)약 60-70%매우 낮음장기 고정 워크로드
Savings PlansReserved 유사중간 (패밀리/리전 유연)다양한 인스턴스 타입
Spot최대 90%중간 (회수 가능)내결함성 배치
Dedicated Host없음낮음라이센스, 규정 준수

Savings Plans vs Reserved Instances

항목Reserved InstancesCompute Savings Plans
약정 단위특정 인스턴스 타입/리전특정 금액 (시간당)
인스턴스 변경불가 (Convertible RI 제외)가능 (패밀리, OS, 리전)
관리 복잡성높음낮음
권장패밀리 고정 대용량유연한 현대적 아키텍처

Graviton 마이그레이션 체크리스트

# 1. 아키텍처 호환성 확인 (컨테이너)
docker inspect --format='{{.Architecture}}' my-image
# 결과: amd64 (x86) → 마이그레이션 필요, arm64 → 즉시 사용 가능

# 2. 멀티 아키텍처 이미지 빌드 (Docker Buildx)
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t myrepo/myapp:latest \
  --push .

# 3. Graviton 인스턴스 테스트 배포
aws ec2 run-instances \
  --instance-type m7g.large \
  --image-id ami-xxxx-arm64 \
  ...

주의 사항:

  • 컴파일 언어 (Go, Java, Python): 대부분 arm64 바이너리 자동 생성 또는 패키지 제공
  • 인라인 어셈블리 코드: x86 전용이면 이식 필요
  • 서드파티 라이브러리: arm64 지원 여부 확인

흔한 함정

WARNING

  1. 새 워크로드를 Intel 만 = Graviton 비용 절감 기회 놓침.
  2. t family 의 지속 부하 = credit 소진 + throttle.
  3. 너무 큰 size = 비용 폭증. right-sizing 정기.
  4. 잘못된 family = 메모리 워크로드에 c family → swap 폭증.

CAUTION

Spot 단독 프로덕션: 중단 시 서비스 다운. ASG 에서 On-Demand 최소값 설정 필수.

IMPORTANT

Compute Optimizer 활용: AWS 가 CloudWatch 지표 기반으로 right-sizing 자동 권장. 매달 리포트 확인으로 비용 최적화 지속.

관련 위키

이 글의 용어 (5개)
[AWS] Auto Scaling: EC2 ASG, target tracking, predictivecloud
정의 Auto Scaling Group (ASG) = EC2 instance 자동 증감. desired / min / max + scaling policy. 구조 Scaling …
[AWS] EBS vs Instance Store: 영속 vs 임시 스토리지cloud
정의 | | EBS | Instance Store | |---|---|---| | 영속성 | 영속 | 임시 (instance 종료 시 손실) | | 위치 | 네트워크 attach…
[AWS] EC2: 인스턴스 타입, AMI, EBScloud
정의 EC2 (Elastic Compute Cloud) = AWS 의 VM 서비스. instance type (CPU / RAM / NW) 결정 + AMI (OS 이미지) + E…
[AWS] ECS + Fargate: 컨테이너 오케스트레이션cloud
정의 ECS (Elastic Container Service) = AWS 의 컨테이너 오케스트레이션. K8s 보다 단순하고 AWS 네이티브. Fargate = ECS (또는 EK…
[AWS] EKS: managed Kubernetescloud
정의 EKS (Elastic Kubernetes Service) = AWS 의 managed K8s control plane. worker node 는 사용자 (또는 Fargat…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기