본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 20. 20:18

수백만 달러의 손실을 초래하는 7가지 EC2 Savings Plan 실수

요약

AWS EC2 Savings Plan을 잘못 활용할 경우 발생하는 막대한 비용 손실 사례와 7가지 주요 실수를 분석합니다. 특히 적정 규모 산정(Rightsizing) 없이 구매하거나 피크 사용량에 맞춰 과도하게 약정하는 오류를 경고하며, 이를 방지하기 위한 FinOps 관점의 해결책을 제시합니다.

핵심 포인트

  • Savings Plan은 인스턴스 실행 여부와 관계없이 약정된 시간당 요금을 지불해야 하므로 사용량 예측이 매우 중요함
  • 적정 규모 산정(Rightsizing)을 먼저 수행한 후, 안정적인 베이스라인(Baseline) 사용량에 맞춰 약정해야 함
  • 피크(Peak) 사용량은 Savings Plan이 아닌 On-Demand 또는 Spot 인스턴스를 활용하는 것이 경제적임
  • AWS Compute Optimizer를 활용하여 과거 메트릭을 분석하고 최적의 인스턴스 유형을 권장받는 과정이 필수적임

EC2 Savings Plan (Savings Plan)을 과도하게 약정하는 것은 아무런 대가 없이 AWS에 돈을 주는 가장 빠른 방법 중 하나입니다. 인스턴스 실행 여부와 관계없이 시간당 약정 요금을 지불해야 하기 때문입니다. 약정 사항이 실제 사용량과 일치하지 않으면, 할인 혜택은 오히려 페널티가 됩니다. 다음은 FinOps 엔지니어들이 실제 AWS 계정에서 가장 자주 목격하는 7가지 실수와 각 실수가 실제로 초래하는 비용, 그리고 이를 해결하는 방법입니다.

Savings Plan 실수가 왜 그렇게 비싼가
EC2 Savings Plan은 On-Demand (온디맨드) 요금 대비 최대 40~72%의 할인을 받는 대가로, 최소 시간당 컴퓨팅 지출액($/hour)을 약정하는 것입니다. Reserved Instances (예약 인스턴스)와 달리, Savings Plans는 일치하는 모든 사용량에 자동으로 적용되므로 구매자에게 적용 로직이 거의 보이지 않습니다. 이러한 '보이지 않는 특성'에서 실수가 시작됩니다. 이미 오래된 데이터에 기반하여 특정 시점에 구매를 결정하게 되기 때문입니다. 약정은 1년 또는 3년 동안 지속됩니다. 만약 데이터가 틀렸거나 사용 패턴이 변한다면, 전체 기간 동안 그 오류에 대한 비용을 지불해야 합니다.

플랜 유형 요약:

  • EC2 Instance Savings Plans: 가장 높은 할인율(최대 72%)을 제공하지만, 단일 리전의 단일 인스턴스 패밀리에 고정됩니다.
  • Compute Savings Plans: 최대 할인율은 낮지만, Fargate 및 Lambda를 포함하여 모든 인스턴스 패밀리, 크기, OS, 테넌시(Tenancy) 및 리전에 적용됩니다.

실수 1: 적정 규모 산정(Rightsize) 전 구매
과도하게 프로비저닝된(Over-provisioned) 인스턴스를 위해 Savings Plan을 구매하는 것은 이미 낭비되고 있는 높은 시간당 요율을 고정시키는 행위입니다. 할인은 약정된 요율에 적용되는 것이지, 실제 워크로드 이상의 과도하게 설정된 여유분(Headroom)에 적용되는 것이 아닙니다.

비용 분석: us-east-1 리전에서 m5.4xlarge 인스턴스를 On-Demand로 실행하면 시간당 약 $0.768가 소요됩니다. 3년 약정의 No Upfront (선불 없음) Savings Plan을 사용하면 이를 시간당 약 $0.278로 낮출 수 있습니다. CPU 사용률 15%로 실행되는 워크로드에 적합한 크기인 m5.large의 경우, 동일한 절감률을 적용했을 때 시간당 약 $0.035가 소요됩니다. 100개의 인스턴스를 1년 동안 운영할 경우, 이는 $243,528 대 $30,660의 차이를 만듭니다. 할인은 실제이지만, 기준(Base)이 잘못된 것입니다.

해결책: 구매 전 AWS Compute Optimizer를 실행하십시오. 이는 14일간의 CloudWatch 메트릭을 분석하여 적정 규모의 인스턴스 유형을 권장합니다.

먼저 적정 규모를 산정(Rightsize)한 다음, 적정 규모 산정 후 30일간의 사용량을 분석하고, 그 후에 구매하십시오.

실수 2: 베이스라인(Baseline) 대신 피크(Peak)에 맞춰 약정하기
Savings Plans는 피크가 아닌 안정적인 상태의 베이스라인(Baseline) 규모에 맞춰 설정해야 합니다. 피크 사용량은 온디맨드(On-Demand) 또는 스팟(Spot) 인스턴스를 사용해야 합니다. 피크와 베이스라인을 모두 커버하는 요율로 약정하면, 간헐적으로만 필요한 용량에 대해서도 약정 요율을 지불하게 됩니다.

비용 손실: 예를 들어, 인스턴스 플릿(Fleet)이 평소에는 시간당 $2,000로 운영되다가 피크 시에는 시간당 $5,000로 급증한다고 가정해 봅시다.
모든 것을 커버하기 위해 시간당 $5,000로 약정할 경우:

  • 약정 금액: 월 $3,650,000 (730시간 × $5,000)
  • 그중 530시간은 시간당 $2,000만 필요함
  • 아무런 혜택 없이 월 $1,590,000를 추가 지불하게 됨

시간당 $2,000(베이스라인만)로 약정할 경우:

  • 약정 금액: 월 $1,460,000
  • 피크 200시간에 대한 온디맨드(On-Demand) 비용: $600,000
  • 총합: 월 $2,060,000 (즉, $1,590,000를 절약함)

최저 수준(Floor)에 약정하십시오. 급증하는 사용량은 오토 스케일링(Auto Scaling)을 통해 온디맨드(On-Demand) 요율로 처리하도록 두십시오. 피크 시 발생하는 온디맨드 프리미엄은 유휴 용량에 대해 약정 요율을 지불하는 것보다 거의 항상 더 저렴합니다.

해결책: Cost Explorer에서 6090일간의 시간당 EC2 사용량을 추출하십시오. 특정 임계값 아래로 절대 떨어지지 않는 일관된 최저 수준(Floor)을 식별하십시오. 해당 최저 수준의 8090%에 대해서만 약정하십시오.

실수 3: 불안정한 워크로드에 EC2 Instance Savings Plans 사용하기
EC2 Instance Savings Plans는 특정 인스턴스 패밀리(Instance Family)와 리전(Region)에 귀속됩니다. 할인율은 Compute Savings Plans보다 약 10~15%포인트 더 높지만, 워크로드가 새로운 인스턴스 패밀리나 리전으로 마이그레이션되거나 Fargate로 이동하는 경우 해당 플랜은 따라오지 않습니다.

비용 손실: EC2 Instance Savings Plan 하에 월 $50,000를 약정했다고 가정해 봅시다. m6i로 마이그레이션한 후, 월 $30,000가 불일치하게 됩니다. 3년 계약 중 남은 18개월 동안:

  • 상쇄 할인 없이 약정 지출액 $540,000 발생

해결책: 변화 가능성이 있는 모든 워크로드에는 기본적으로 Compute Savings Plans를 사용하십시오. EC2 Instance Savings Plans는 12개월 이상 변경되지 않을 정도로 진정으로 안정적이고, 단일 리전 및 단일 패밀리 워크로드인 경우에만 적합하며, 반드시 6개월 단위의 검토 체크포인트가 문서화되어 있어야 합니다.

실수 4: 불안정한 워크로드에 대해 3년 약정 구매하기
3년 약정은 1년 약정보다 약 10~15% 더 높은 할인율을 제공합니다. 하지만 이 계산은 워크로드가 36개월 내내 일관되게 유지될 때만 유효합니다.
비용 발생 사례: us-east-1 리전에서 100개의 m5.xlarge 인스턴스를 사용하는 경우:

  • 1년 약정 (No Upfront): 시간당 약 $0.149
  • 3년 약정 (No Upfront): 시간당 약 $0.124
    36개월 동안의 차액 = 약 $65,700의 추가 절감액
    하지만 만약 워크로드가 18개월 차에 마이그레이션된다면, 남은 18개월 동안 할인 수익은 전혀 발생하지 않습니다:
    $0.124 × 100개 인스턴스 × 4,380시간 = 약 $543,000의 약정 지출(Committed Spend)
    이는 당신이 얻으려 했던 절감액의 8배에 달하는 금액입니다.
    약정 기간에 대한 전체 ROI(투자 대비 수익) 분석은 'EC2 Savings Plans: 1-Year vs 3-Year Commitment ROI Analysis'를 참조하십시오.
    해결책: 약정 기간을 아키텍처의 안정성 전망(Stability Horizon)과 일치시키십시오. 만약 로드맵에 24개월 이내의 Kubernetes 마이그레이션, 대규모 리팩토링(Refactoring) 또는 상당한 규모 변화가 포함되어 있다면 1년 약정을 구매하십시오.

실수 5: 구매 후 사용률(Utilization)을 모니터링하지 않음
Savings Plan 약정은 실제 활성 사용량에 적용되는지 여부와 관계없이 계속 실행됩니다. 기본 경고(Alert)가 발생하지 않은 상태에서 사용률이 40~50%까지 떨어질 수 있습니다.
비용 발생 사례: 월 $10,000를 약정했으나 사용률이 60%인 경우 = 할인을 받지 못하는 지출이 월 $4,000 발생.
12개월 동안: $48,000의 보장된 낭비 발생.
AWS Cost Explorer는 72시간 이상마다 사용률 데이터를 갱신합니다. 오늘 발생한 사용률 저하는 최대 3일 동안 대시보드에 나타나지 않습니다:

일차발생하는 상황대시보드 표시 내용
1일차사용률이 55%로 하락어제의 92%가 그대로 표시됨
2일차약정 지출의 약 40%가 낭비됨경고도, 신호도 없음
3일차$18,000~$36,000의 누적 낭비 발생대시보드가 마침내 업데이트됨

소급 적용되는 크레딧(Retroactive Credit)은 없습니다. 당신은 3일 치 모두를 지불해야 합니다.
해결책: Savings Plans 사용률 지표에 CloudWatch 알람을 설정하십시오. 사용률이 85% 미만으로 떨어지면 알람을 받도록 설정하십시오. 분기별이 아닌 매주 검토하십시오.

실수 6: 약정 공유를 위해 AWS Organizations를 사용하지 않음
Savings Plans는 기본적으로 계정(Account) 수준에서 적용됩니다.

공유가 활성화되지 않은 멀티 계정 조직(Multi-account org)에서는 한 계정의 사용되지 않은 약정(Commitment)이 고립되어 있는 반면, 다른 계정은 해당되는 사용량에 대해 온디맨드(On-Demand) 요금을 전액 지불하게 됩니다.

비용 손실 내역:
계정 A | 계정 B
월간 약정 지출액: $5,000 | $0
사용률: 55% | —
사용되지 않은 약정: $2,250/월 | —
EC2 온디맨드(On-Demand) 지출: — | $5,000/월

조직 수준의 공유가 없을 때: 약 $4,250/월 낭비 (사용되지 않은 약정 + 계정 B의 해당 사용량에 대한 할인 혜택 상실).
공유가 활성화되었을 때: 계정 A의 사용되지 않은 $2,250이 자동으로 계정 B의 사용량을 충당합니다.

회수된 가치: 추가 지출 없이 월 $2,000~$2,500를 회수하거나, 설정 하나만으로 연간 $24,000~$30,000를 절약할 수 있습니다.

EC2 가격 모델에 대한 더 광범위한 개요는 'Amazon EC2 Pricing Explained: Models, Costs & How to Save'를 참조하십시오.

해결 방법: 관리 계정(Management account)에서 AWS Billing and Cost Management → Savings Plans로 이동하여 공유(Sharing)가 활성화되어 있는지 확인하십시오. 계정별로 추가 플랜을 구매하기 전에, 연결된 계정들이 공유된 약정을 소비하고 있는지 커버리지 보고서(Coverage report)를 통해 확인하십시오.

실수 7: 오래된 권장 사항을 기반으로 구매함
AWS Cost Explorer의 권장 사항은 72시간 이상마다 업데이트됩니다. 만약 주말 동안 사용 패턴이 변했는데 월요일에 구매를 결정한다면, 더 이상 존재하지 않는 패턴에 약정을 거는 셈이 됩니다.

비용 손실 내역:
권장 사항이 시간당 $3,000를 제안합니다. 주말 동안 세 개의 배치 워크로드(Batch workloads)가 완료되어 해제되었습니다. 실제 사용량은 시간당 $2,000를 정당화합니다. 규모가 커질 경우 시간당 $1,000를 초과 약정하게 되며, 이는 잘못 할당된 지출로 인해 연간 $876,000(시간당 $100 초과 약정 시)의 손실을 초래합니다.

해결 방법: Cost Explorer의 권장 사항을 현재의 비용 및 사용 보고서(Cost and Usage Report)와 교차 참조하십시오. 지난 7일간의 실제 시간당 사용량을 확인하십시오. 지난 72시간 동안 사용량이 실질적으로 변했다면 수동으로 재계산하십시오.

이러한 실수들의 공통된 근본 원인
여기 나열된 모든 실수는 동일한 근본적인 문제를 가지고 있습니다. 즉, 지속적으로 변화하는 워크로드(Workloads)에 대해 특정 시점의 구매 결정을 내리는 것이며, 변화(Drift)를 포착할 만큼 빠르게 갱신되지 않는 도구로 모니터링하고 있다는 점입니다.

커버되지 않은 지출(uncovered spend)이 하루 $6,000~$12,000에 달하는 상황에서, 드리프트(Drift)를 감지하는 데 48시간의 추가 지연이 발생하면 데이터가 조치를 허용하기 전까지 이벤트당 $12,000~$12,000의 비용이 추가로 발생합니다. Usage.ai는 Cost Explorer의 72시간 이상과 달리 EC2 Savings Plan 권장 사항을 24시간마다 갱신합니다. Usage.ai의 Autopilot 모드는 과거의 피크(Peak)가 아닌 현재의 베이스라인(Baseline)에 맞춰 지속적으로 구매 규모를 조정하며 관리합니다. Usage.ai를 통해 구매한 약정(Commitment)이 워크로드 변화로 인해 활용도가 낮아질 경우, Usage.ai는 크레딧(Credits)이 아닌 활용되지 않은 부분에 대해 캐시백(Cashback)을 제공합니다. 캐시백은 기업으로 실제로 반환되는 현금입니다. Motive, EVGo (NASDAQ: EVGO), Secureframe, Blank Street Coffee를 포함한 기업들이 이 플랫폼을 통해 EC2 약정을 관리하고 있습니다. 설정에는 30분이 소요되며, 결제 계층(Billing-layer)에 대한 액세스만 필요합니다. 비용은 실현된 절감액의 일정 비율로 부과되며, 절감액이 전혀 없을 경우 수수료는 0원입니다. 여러분은 본인의 계정에서 이 중 어떤 문제를 겪어보셨나요? 활용도 모니터링의 격차(실수 5)가 제가 생각하는 것만큼 자주 사람들을 당혹스럽게 만드는지 궁금합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0