개발 환경 & 도구/AWS

[AWS] EC2 구매 옵션 정리

나맘임 2025. 6. 17. 14:29

 

 

 

들어가며

인프라를 대여하는 클라우드 특성상 비용은 정말 중요합니다. (사실 인프라 구축에서 비용이 안중요한 곳이 없긴 하죠..)

많은 AWS 서비스 그 중에서 대중적인 EC2 관련으로 구매 옵션들을 정리해보았습니다.

25.06.17일 기준으로 작성됨을 미리 알려드립니다.

 

구매옵션 요약

구매 옵션 할인율 특징
On-Demand Instances
(시간 단위로 컴퓨팅 용량에 대해 비용)
0%
(이후 할인율 
기준)
보편적인 방식으로
인스턴스를 켜놓은 시간에 따라 금액을 지불합니다.
(요금은 고정, 실행 1분 후부터 측정)
Reserved (1 & 3 years) 최대 72% 긴 시간을 정해두고 인스턴스를 대여하는 방식입니다.
인스턴스 유형 및 리전을 포함하여 일관된 인스턴스 구성을
예약하여 사용합니다.
Saving Plans (1 & 3 years) 최대 72% 긴 시간을 정해두고 대여하되 사용량에 따라
금액이 달라집니다.
Spot Instances 최대 90% 짧은 시간의 사용에 중점적이며 가격이 쌉니다.
(다만, 인스턴스가 사라질 수도 있습니다)

 

On-Demand Instances

주로 많이 사용하시는 시간당 요금이 측정되는 방식입니다.

시간당 요금은 인스턴스의 종류에 따라 고정되어 있으며, 실행 1분 후부터 측정됩니다.

리눅스 또는 윈도우는 실행 1분 후, 매초마다 요금이 부여되지만, 다른 운영체제들은 시간 단위로 요금이 측정됩니다.

 

다른 요금제에 비하면 비싸지만, 후불로 처리됩니다.

그리고 마음대로 인스턴스를 지웠다가 생성했다가 할 수 있기 때문에 필요에 따라 구성할 수 있습니다.

짧은 기간 동안 사용하는 경우나 어플리케이션이 얼마나 사용이 될지 예상 불가능한 경우에 추천됩니다.

 

Reserved Instances

긴 시간(1년 또는 3년)을 정해두고 인스턴스를 대여하는 방식으로 On-Demand 방식에 비해 최대 72%까지 저렴하다고 알려져 있습니다.

인스턴스 예약 시엔 인스턴스 타입, 지역, OS, 청구 방식 등을 미리 다 정해두고 시작합니다.

예약 기간이 길수록 할인율이 높고 미리 처음부터 용량에 따라 결제 시에도 할인율이 높습니다.

 

크게 범위에 따라 리전 예약영역 예약 방식이 있습니다.

리전? 영역?
영역은 다른 말로 가용 영역이라 부릅니다. 실제로 하나의 물리적인 데이터 센터가 위치한 곳입니다.
리전은 이 가용 영역이 최소 3개 이상 모여둔 곳을 말합니다.
us-east-1, ap-northeast-2 이런 것들이 리전입니다.
그림 1. 가용 영역과 리전

 

  리전 예약 인스턴스 영역 예약 인스턴스
용량을 예약할 수 있는가? X O
(지정된 가용 영역에서 용량을 예약)
가용 영역에 유연성이 있는가? O
(지정된 리전 안에서 사용 가능)
X
지정된 가용 영역만 사용 가능)
인스턴스 크기에 유연성이 있는가? O
(같은 인스턴스 패밀리 내 사용량에만 할인 적용)
X
(지정된 인스턴스 유형 및 크기의 인스턴스만 할인 적용)
구매 대기열에 추가할 수 있는가? O X

 

예약 인스턴스 방식에서 Convertible Reserved Instance(전환형 예약 인스턴스 교환) 라는 것이 있습니다.

EC2 인스턴스 타입, 인스턴스 패밀리, OS, 테넌트까지 교환할 수 있는 방식으로 이전 인스턴스 예약 방식과 다르게 보다 유연한 구성을 할 수 있습니다.

하지만 할인율은 상대적으로 적은 최대 66%까지 적용됩니다.

Saving Plans (1 & 3 years)

Reserved Instances처럼 1년 또는 3년 기간을 정해두고 인스턴스를 대연하는 방식입니다.

기존 RI(Reserved Instances)의 단점으로는 인스턴스 자체를 빌리는 옵션이었기에 약정 진행 중 인스턴스 크기, 타입 등을 변경할 수 없었습니다.

그에 비해 SP는 컴퓨팅 성능에 대해서 약정하기 때문에, 보다 유연하게 할인을 적용받아 인프라를 운영할 수 있는 장점이 있습니다.

다만, 인스턴스 패밀리와 AWS 리전에 대해 미리 정해두고 약정을 하게 되는 방식입니다.(e.g M5 in us-east-1)

변경 가능한 사항으로는 인스턴스의 크기(xlarge, 2xlarge 등), OS, Tenacy(Host, Dedicated, Default)이 있습니다.

테넌시(Tenacy)가 뭔가요?
EC2 인스턴스가 배치되는 물리적 하드웨어를 다른 AWS 고객과 공유할지, 아니면 단독으로 사용할지를 결정하는 정책입니다. 여러 세대를 함께 쓰는 아파트에 살지, 아니면 단독 주택에 살지 결정하는 것과 비슷하다고 생각하면 이해가 쉽습니다.

 

Spot Instances

AWS가 사용하지 않고 남겨둔 예비(Spare) EC2 컴퓨팅 자원을 온디맨드 요금보다 최대 90퍼까지 저렴하게 빌려 쓰는 방식입니다.

항공사의 '스탠바이 티켓'과 비슷하다고 생각하면 쉽습니다. 빈 좌석이 있을 때 아주 싸게 표를 주지만, 정가로 표를 산 승객이 나타나면 자리를 비워줘야 하는 것과 같습니다. 즉, 언제든지 인스턴스가 중지될 수 있습니다.

 

Spot Instances의 작동 원리에 대해 간단히 알아보면 다음과 같습니다.

1. 스팟 용량 풀(Spot Capactiy Pool)

AWS는 각 리전과 가용 영역별로, 특정 인스턴스 타입에 대해 사용되지 않은 EC2 인스턴스들의 집합을 가지고 있습니다.

이를 '스팟 용량 풀'이라고 해요.

2. 스팟 가격(Spot Price)

이 남는 자원인 스팟 인스턴스의 가격은 고정되어 있지 않습니다. 해당 자원의 실시간 수요와 공급에 따라 AWS가 설정하며, 점진적으로 변동됩니다.

3. 인스턴스 사용과 중단

사용자는 이 스팟 자원을 요청해서 사용하다가, AWS가 해당 자원을 다시 필요로 하게 되면 인스턴스가 중단될 수 있습니다. 이때 AWS는 인스턴스를 회수하기 2분 전에 중단알림을 보내줍니다. 이 2분 동안 애플리케이션 상태를 저장하거나 작업을 마무리하는 등의 조치를 취해야 합니다. 이때 인스턴스 중단 이벤트를 트리거하여 추가적인 조치를 취할 수 있습니다.

그러면 어느 경우에 Spot Instance를 사용해도 괜찮을까요?

중단되어도 괜찮은 워크로드에 사용될 수 있습니다.

- 배치 처리 시스템 : 긴급하지 않은 대용량 데이터 처리 작업

- 빅데이터 분석 : Hadoop, Spark 같은 분산 처리 작업

- CI/CD 파이프라인 : 빌드 및 테스트용 에이전트. 중단되면 다시 실행.

- 이미지 및 비디오 렌더링, 과학 컴퓨팅(HPC)

- 컨테이너화된 워크로드 : Kubernetes(EKS), ECS 등 오토스케일링 그룹(ASG)과 연동된 상태를 저장하지 않은 웹 서버. 노드가 중단되면 오케스트레이션으로 다른 노드에 파드를 재배치.

 

Spot Instance를 더 쉽게 사용하기 위한 Spot Fleets

기존 Spot Instance는 위에서 '항공사의 스탠바이 티켓'에 비유하였습니다. Spot Fleets은 여기서 한 단계 더 나아갑니다. 특정 항공편의 스탠바이 티켓 하나만 노리는 게 아니라, "오늘 안에 서울에서 제주도로 가는 어떤 항공편이든, 어떤 좌석 등급이든 상관없이 가장 싸고 가능한 표로 10장을 구해줘" 라고 항공사 시스템에 요청하는 것과 같습니다.

 

즉, Spot Fleets은 사용자가 원하는 총 컴퓨팅 용량(Target Capacity)을 가장 저렴하고 안정적으로 유지하기 위해, 여러 종류의 Spot Instance Pool과 가용 영역을 조합하여 자동으로 인스턴스 그룹을 생성하고 관리하는 서비스입니다.

이로써 Spot Fleets은 자동으로 가장 낮은 가격의 스팟 인스턴스를 요청하여 사용자가 만족할 수 있습니다.

 

Spot Fleets의 핵심 구성 요소

1. 목표 용량(Target Capacity)

사용자가 원하는 총 컴퓨팅 파워를 정의합니다. '인스턴스 10개'처럼 개수로 지정할 수도 있고, 가상 CPU 코어 수로 지정할 수도 있습니다. Spot Fleets은 이 용량을 계속 유지하는 것입니다.

 

2. 실행 풀(Launch Pools)

목표 용량을 채우기 위해 스팟 플릿이 선택할 수 있는 '옵션 목록'입니다. 이 목록에는 여러 인스턴스 타입, OS, 가용 영역을 정의할 수 있습니다. 실행 풀이 넓다면 더 유연하게 자원을 찾을 수 있어 중단 위험이 줄어듭니다.

 

3. 요청 유형(Request Type)

목표 용량을 어떻게 처리할 건지를 결정합니다.

(1) 일회성 (One-Time / request): 목표 용량이 충족되면 요청이 완료되고, 이후 인스턴스가 중돤되어도 Spot Fleets이 자동으로 보충하지 않습니다. 단발성 작업에 사용됩니다.

(2) 유지 (Persistent / maintain): 스팟 인스턴스가 중단되면, 스팟 플릿이 실행 풀 내 다른 옵션을 찾아 자동으로 인스턴스를 보충하여 목표 용량을 계속 유지하려고 시도합니다. 대부분의 경우이 유형을 사용합니다.

 

4. 할당 전략(Allocation Strategy)

Spot Fleets이 실행 풀에서 어떤 기준으로 인스턴스를 선택할지 결정하는 가장 중요한 설정입니다.

(1) lowestPrice (최저 가격): 현재 시점에서 가장 저렴한 가격의 풀에서 인스턴스를 시작합니다. 단기적인 비용 절감엔 유리하지만, 가격 변동으로 중단될 가능성이 상대적으로 높습니다.

(2) diversified (다각화): 정의된 모든 풀에 스팟 인스턴스를 골고루 분산시켜 배치합니다. 특정 풀의 용량이 고갈되더라도 전체 워크로드에 미치는 영향을 최소화하여 가용성을 높입니다.

(3) capacityOptimized (용량 최적화): 중단될 확률이 가장 낮은, 즉 가장 용량이 풍부한 풀을 우선적으로 선택합니다. 안정성이 중요할 때 사용합니다.

(4) priceCapacityOptimized (가격 및 용량 최적화): AWS가 추천하는 전략으로 용량이 가장 풍부한 풀들을 먼저 찾은 다음, 그중에서 가격이 가장 저렴한 풀을 선택합니다. 안정성과 비용 효율을 모두 잡는 가장 균형 잡힌 전략입니다.

 

 

출처

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-regions

 

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/instance-purchasing-options.html