AWS Savings Plans vs Reserved Instances w 2026: Kompletny przewodnik FinOps

Praktyczny przewodnik FinOps po AWS Savings Plans i Reserved Instances w 2026 — kiedy wybrać Compute SP, EC2 Instance SP, a kiedy Standard lub Convertible RI. Z kalkulacjami TCO, przykładami CLI i strategiami warstwowymi.

Powiem szczerze — wybór pomiędzy AWS Savings Plans (SP) a Reserved Instances (RI) to chyba najbardziej drażniąca decyzja, jaką musisz podjąć jako osoba odpowiedzialna za chmurowy budżet. W 2026 roku AWS oferuje już cztery główne mechanizmy commitmentów, a każdy z nich może przynieść oszczędności od 27% do nawet 72% w porównaniu do cen On-Demand. Brzmi nieźle? Owszem, ale niewłaściwy wybór oznacza zamrożenie budżetu na 1–3 lata bez realnych korzyści (sam widziałem firmę, która kupiła RI na rok przed migracją na Graviton — bolesne).

W tym przewodniku porównamy wszystkie warianty zobowiązań, pokażemy konkretne kalkulacje TCO, przedstawimy kod AWS CLI do analizy pokrycia oraz omówimy strategie hybrydowe, których naprawdę używają dojrzałe zespoły FinOps. Zero teorii akademickiej — tylko to, co działa.

Czym właściwie są AWS Savings Plans i Reserved Instances?

Oba mechanizmy są formą commitmentu finansowego — zobowiązujesz się do określonego poziomu wydatków albo uruchomienia konkretnych instancji przez 1 lub 3 lata, a w zamian dostajesz rabat. Cała różnica leży w elastyczności i zakresie pokrycia. I to właśnie ta elastyczność (lub jej brak) zazwyczaj decyduje o tym, czy commitment się opłaci.

Reserved Instances (RI) — model klasyczny

RI to starszy mechanizm, wprowadzony jeszcze w 2009 roku. Zobowiązujesz się do konkretnego typu instancji (np. m6i.large) w określonym regionie. Istnieją dwa warianty:

  • Standard RI — najwyższy rabat (do 72% dla 3-letniego No Upfront), za to elastyczność na poziomie betonu. Można zmienić tylko Availability Zone, rozmiar w obrębie tej samej rodziny i platformę sieciową.
  • Convertible RI — rabat do 66%, ale możesz wymienić rezerwację na inną rodzinę instancji, OS lub tenancy. Idealne, gdy planujesz migrację z Intel na Graviton albo zmianę architektury.

Savings Plans (SP) — model nowoczesny

SP wprowadzono w 2019 roku jako uproszczenie tego całego bałaganu. Zamiast zobowiązywać się do konkretnej instancji, zobowiązujesz się do stałych wydatków godzinowych (np. $10/h) przez 1 lub 3 lata. W 2026 roku dostępne są trzy typy:

  • Compute Savings Plans — najbardziej elastyczne. Pokrywają EC2, Fargate i Lambda, niezależnie od regionu, rodziny instancji czy OS. Rabat do 66%.
  • EC2 Instance Savings Plans — ograniczone do jednej rodziny instancji w jednym regionie. Wyższy rabat (do 72%), ale niska elastyczność — w sumie podobnie jak Standard RI.
  • SageMaker Savings Plans — dedykowane dla obciążeń ML w SageMaker. Rabat do 64% bez ograniczeń co do instancji.

Porównanie tabelaryczne: SP vs RI w 2026

Czasem jeden rzut oka na tabelę mówi więcej niż dwa akapity tekstu. Poniższe zestawienie podsumowuje kluczowe różnice w aktualnej ofercie AWS:

CechaCompute SPEC2 Instance SPStandard RIConvertible RI
Maks. rabat66%72%72%66%
Pokrywa Lambda/FargateTakNieNieNie
Zmiana regionuTakNieNieTak (wymiana)
Zmiana rodzinyTakNieNieTak (wymiana)
Marketplace (odsprzedaż)NieNieTakNie
Okresy commitmentu1 lub 3 lata1 lub 3 lata1 lub 3 lata1 lub 3 lata
Modele płatnościNo/Partial/All UpfrontNo/Partial/All UpfrontNo/Partial/All UpfrontNo/Partial/All Upfront

Realne kalkulacje TCO dla 2026 roku

Przyjmijmy konkretny scenariusz. Aplikacja webowa działająca 24/7 na instancjach m6i.large w regionie eu-central-1 (Frankfurt). Cena On-Demand to ok. $0.108/h. To jest baseline, od którego liczymy oszczędności.

Scenariusz A: 20 instancji m6i.large, stabilne obciążenie

  • On-Demand: 20 × $0.108 × 8760h = $18 921/rok
  • 3-year Standard RI, All Upfront: ok. 60% rabatu = $7 568/rok (oszczędność $11 353)
  • 3-year EC2 Instance SP, All Upfront: 60% rabatu = $7 568/rok
  • 3-year Compute SP, All Upfront: 54% rabatu = $8 703/rok (oszczędność $10 218)

Różnica między EC2 Instance SP a Compute SP to mniej więcej $1 135/rok. Można to traktować jako cenę elastyczności — możliwości migracji do innej rodziny lub regionu, gdy biznes nagle zmieni kierunek (a wiesz przecież, że zmieni).

Scenariusz B: Mix obciążeń — EC2 + Fargate + Lambda

Tutaj robi się ciekawie. Jeśli architektura zawiera serverless (Lambda, Fargate), to RI w ogóle tych usług nie pokrywają. Tylko Compute SP obejmuje całość. Załóżmy firmę wydającą $50 000/miesiąc na compute (60% EC2, 25% Fargate, 15% Lambda):

  • RI tylko na EC2: oszczędność ok. $216 000/rok
  • Compute SP na całość: oszczędność ok. $324 000/rok

W tym przypadku Compute SP wygrywa o $108 000/rok, mimo że ma niższy stawkowy rabat. Powód? Po prostu pokrywa więcej. To jest moim zdaniem najczęściej pomijany argument — ludzie patrzą na procentowy rabat, a nie na bezwzględne oszczędności.

Strategia pokrycia: zasada warstwowa

Dojrzałe zespoły FinOps stosują strategię warstwową. Zamiast wybierać jeden typ commitmentu, mieszają je w przemyślanych proporcjach:

  1. Warstwa bazowa (60–70% pokrycia): 3-year Compute SP No Upfront — pokrywa stabilne minimum obciążenia z maksymalną elastycznością.
  2. Warstwa średnia (20–30% pokrycia): 1-year EC2 Instance SP lub Standard RI — wyższy rabat dla przewidywalnych workloadów, krótszy commitment ogranicza ryzyko.
  3. Warstwa zmienna (10–20% pokrycia): On-Demand i Spot Instances — absorbują szczyty oraz wszelkie eksperymenty.

Złota zasada: nigdy nie kupuj więcej niż 80% commitmentu, bo niewykorzystany SP/RI to czysta strata. Nie jest to zresztą abstrakcja — według raportu Flexera State of the Cloud 2026, średni poziom marnotrawstwa commitmentów wynosi 13%. Dwa procenty całego budżetu chmurowego idą w błoto, bo ktoś kupił "z górką, na wszelki wypadek".

Praktyka: analiza pokrycia przez AWS CLI

Zanim cokolwiek kupisz — sprawdź aktualne wykorzystanie i pokrycie. AWS Cost Explorer udostępnia dwa kluczowe API: get-savings-plans-coverage i get-reservation-coverage. Bez tej analizy działasz po omacku.

Sprawdzenie pokrycia Savings Plans z ostatnich 30 dni

aws ce get-savings-plans-coverage \
  --time-period Start=2026-04-11,End=2026-05-11 \
  --granularity DAILY \
  --metrics SpendCoveredBySavingsPlans \
  --query 'SavingsPlansCoverages[*].[TimePeriod.Start,Coverage.CoveragePercentage]' \
  --output table

Identyfikacja niepokrytych wydatków On-Demand

aws ce get-cost-and-usage \
  --time-period Start=2026-04-11,End=2026-05-11 \
  --granularity MONTHLY \
  --metrics UnblendedCost \
  --filter '{
    "And": [
      {"Dimensions": {"Key": "SERVICE", "Values": ["Amazon Elastic Compute Cloud - Compute"]}},
      {"Dimensions": {"Key": "PURCHASE_TYPE", "Values": ["On Demand"]}}
    ]
  }' \
  --group-by Type=DIMENSION,Key=INSTANCE_TYPE

Rekomendacje zakupu od AWS

aws ce get-savings-plans-purchase-recommendation \
  --savings-plans-type COMPUTE_SP \
  --term-in-years THREE_YEARS \
  --payment-option NO_UPFRONT \
  --lookback-period-in-days SIXTY_DAYS \
  --query 'SavingsPlansPurchaseRecommendation.SavingsPlansPurchaseRecommendationDetails[*].[HourlyCommitmentToPurchase,EstimatedMonthlySavingsAmount,EstimatedROI]'

Mała uwaga z doświadczenia: rekomendacje AWS bazują na 7-, 30- lub 60-dniowym oknie historycznym. Dla obciążeń z sezonowością (czyli — szczerze — większości realnych systemów produkcyjnych) zawsze wybierz SIXTY_DAYS. Inaczej ryzykujesz przeszacowanie commitmentu o 20–30%.

Kiedy wybrać RI zamiast SP?

Mimo że Savings Plans są domyślnym wyborem dla większości scenariuszy, RI nadal mają swoje miejsce. Konkretnie:

  • RDS, ElastiCache, Redshift, OpenSearch, DynamoDB — Savings Plans nie pokrywają tych usług, kropka. Tylko RI / Reserved Capacity da Ci tu rabat.
  • Potrzeba odsprzedaży — Standard RI można sprzedać na Reserved Instance Marketplace. Savings Plans są nieodwracalne, więc kupujesz je raz na zawsze.
  • Capacity Reservation — RI gwarantuje pojemność w AZ. SP nie rezerwują mocy, więc w przypadku braku zasobów (np. podczas regionalnej awarii) potrzebujesz osobnej On-Demand Capacity Reservation.

Najczęstsze błędy przy zakupie commitmentów

1. Zakup na podstawie szczytu, nie bazy

Klasyk. Analiza tygodniowego obciążenia pokazuje pik 100 instancji w godzinach 9–17, ale baseline to 30 instancji. Kupuj commitment tylko na baseline (30), reszta niech idzie na On-Demand albo Spot. Inaczej co weekend płacisz za niewykorzystany commitment.

2. Ignorowanie roadmapy architektury

Jeśli za 6 miesięcy planujesz migrację z m5 na m7g (Graviton), Standard RI lub EC2 Instance SP zostaną uwięzione w starym świecie. Wybierz Compute SP albo Convertible RI — koszt elastyczności (1–2 punkty procentowe rabatu) jest groszowy w porównaniu z koniecznością płacenia za nieużywany commitment.

3. Brak współdzielenia commitmentów na poziomie organizacji

W AWS Organizations koniecznie włącz Reserved Instance Sharing oraz Savings Plans Sharing, żeby commitmenty z jednego konta pokrywały wydatki innych:

aws organizations enable-aws-service-access \
  --service-principal ram.amazonaws.com

aws ce update-cost-allocation-tags-status \
  --cost-allocation-tags-status TagKey=Environment,Status=Active

4. Pomijanie All Upfront przy stabilnych workloadach

Przy 3-letnim commitmencie różnica między No Upfront a All Upfront to dodatkowe 2–4% rabatu. Dla firmy wydającej $1M/rok mówimy o $20–40k oszczędności w zamian za zamrożenie gotówki. Czy się opłaca? Zależy od kosztu kapitału, ale dla większości firm — zdecydowanie tak.

Automatyzacja: Terraform + Lambda do monitoringu pokrycia

Dobrze, teorii już dość. Poniższy moduł Terraform tworzy regularną Lambdę, która co tydzień sprawdza pokrycie SP i wysyła alert do Slacka, jeśli spadnie poniżej 70%. To rozwiązanie, które wdrażam u praktycznie każdego klienta:

resource "aws_lambda_function" "sp_coverage_monitor" {
  function_name = "savings-plans-coverage-monitor"
  runtime       = "python3.12"
  handler       = "index.lambda_handler"
  role          = aws_iam_role.sp_monitor.arn
  timeout       = 60

  environment {
    variables = {
      SLACK_WEBHOOK = var.slack_webhook
      THRESHOLD     = "70"
    }
  }
}

resource "aws_cloudwatch_event_rule" "weekly" {
  name                = "sp-coverage-weekly"
  schedule_expression = "cron(0 9 ? * MON *)"
}

resource "aws_cloudwatch_event_target" "lambda" {
  rule = aws_cloudwatch_event_rule.weekly.name
  arn  = aws_lambda_function.sp_coverage_monitor.arn
}

A oto kod handlera Lambdy:

import boto3, os, json, urllib.request
from datetime import datetime, timedelta

def lambda_handler(event, context):
    ce = boto3.client('ce')
    end = datetime.utcnow().date()
    start = end - timedelta(days=7)

    resp = ce.get_savings_plans_coverage(
        TimePeriod={'Start': str(start), 'End': str(end)},
        Granularity='MONTHLY'
    )
    coverage = float(resp['SavingsPlansCoverages'][0]['Coverage']['CoveragePercentage'])
    threshold = float(os.environ['THRESHOLD'])

    if coverage < threshold:
        msg = f":warning: Pokrycie Savings Plans spadło do {coverage:.1f}% (próg: {threshold}%)"
        req = urllib.request.Request(
            os.environ['SLACK_WEBHOOK'],
            data=json.dumps({'text': msg}).encode(),
            headers={'Content-Type': 'application/json'}
        )
        urllib.request.urlopen(req)

    return {'coverage': coverage}

Najnowsze zmiany w 2026 roku

Świat AWS commitmentów nie stoi w miejscu. W ciągu ostatnich 12 miesięcy AWS wprowadził kilka modyfikacji, które warto znać:

  • Savings Plans dla Bedrock — od Q1 2026 dostępne dla wybranych modeli. Rabat do 50% przy 1-letnim commitmencie. Game changer dla firm budujących produkty z GenAI.
  • Rozszerzone Compute SP — obejmują teraz także AWS Lambda SnapStart oraz Lambda Provisioned Concurrency.
  • Granularność godzinowa w Cost Explorer — nowy parametr HOURLY w API pozwala precyzyjnie identyfikować okna niskiego pokrycia.

Rekomendowana strategia 2026: ścieżka decyzyjna

Jeśli nie wiesz, od czego zacząć, oto ściąga którą sam stosuję podczas pierwszych warsztatów FinOps:

  1. Masz stabilne obciążenie tylko na EC2, brak planów migracji? → 3-year EC2 Instance SP All Upfront
  2. Używasz mix EC2 + Fargate + Lambda? → 3-year Compute SP No/Partial Upfront
  3. Planujesz migrację Intel → Graviton w ciągu 12 miesięcy? → 1-year Compute SP + Convertible RI na chwilowe pozycje
  4. Masz znaczące wydatki na RDS/ElastiCache? → RDS Reserved Instances dodatkowo do Compute SP
  5. Niepewność biznesowa (startup, projekt < 12 miesięcy)? → 1-year No Upfront SP + Spot Instances

Często zadawane pytania (FAQ)

Czy mogę anulować Savings Plans przed terminem?

Nie. Zarówno Savings Plans, jak i Reserved Instances są nieodwracalnymi zobowiązaniami finansowymi. Standard RI można jednak odsprzedać na Reserved Instance Marketplace — z reguły poniżej ceny zakupu i tylko jeśli RI ma ponad miesiąc do końca.

Co się stanie, jeśli wydam mniej niż commitment Savings Plans?

Płacisz pełną kwotę commitmentu, niezależnie od faktycznego użycia. Jeśli zobowiążesz się na $10/h, a wykorzystasz tylko $7/h, te brakujące $3/h to czysta strata. Dlatego rekomenduję pokrywać 60–80% baseline, a nigdy szczytu.

Czy Savings Plans pokrywają Spot Instances?

Nie. Spot Instances mają już własny rabat (do 90%) i nie są objęte ani SP, ani RI. Spot i SP to komplementarne strategie — SP pokrywa baseline, Spot łapie elastyczną pojemność.

Jak wybrać między No Upfront, Partial Upfront i All Upfront?

All Upfront daje dodatkowe 2–4% rabatu w zamian za zapłatę z góry. Wybierz tę opcję, jeśli masz nadwyżkę gotówki i preferujesz niższy TCO. No Upfront jest lepszy dla startupów dbających o cash flow albo przy testowaniu nowej strategii commitmentów.

Czy Convertible RI to dobry wybór w 2026 roku?

W większości przypadków — nie. Compute SP są po prostu lepsze: oferują podobny rabat (66%) i znacznie większą elastyczność (pokrywają Lambda, Fargate, dowolny region). Convertible RI mają sens głównie wtedy, gdy potrzebujesz Capacity Reservation w konkretnej AZ.

Czy commitmenty można współdzielić między kontami AWS Organizations?

Tak. W AWS Organizations można włączyć RI Sharing oraz Savings Plans Sharing w ustawieniach Billing & Cost Management. Po aktywacji commitment z konta master automatycznie pokrywa wydatki we wszystkich kontach członkowskich (chyba że konkretne konto zostało wyłączone z sharingu).

Podsumowanie

W 2026 roku Compute Savings Plans są domyślnym wyborem dla większości organizacji — łączą wysoki rabat z bezprecedensową elastycznością obejmującą Lambda, Fargate i EC2 niezależnie od regionu. Reserved Instances wciąż jednak pozostają niezbędne dla RDS, ElastiCache i innych usług niewspieranych przez SP, a także w scenariuszach wymagających odsprzedaży lub Capacity Reservation.

Klucz do sukcesu? Strategia warstwowa: 60–70% pokrycia commitmentami, 10–20% Spot Instances, reszta On-Demand jako bufor. I jeszcze jedno — co najmniej raz w miesiącu monitoruj wskaźnik pokrycia i wykorzystania. Niewykorzystany commitment to czysta strata, a niskie pokrycie oznacza utracone oszczędności. Obie sytuacje kosztują, więc warto trzymać rękę na pulsie.

O Autorze Editorial Team

Our team of expert writers and editors.