Modul 11 — Cloud platformy
56. Cost management a optimalizace nákladů v cloudu
Proč se cloudové účty snadno prodraží, jak náklady sledovat a jaké konkrétní techniky (right-sizing, rezervace, autoscaling) je udrží pod kontrolou.
Úvod a kontext
Cloud slibuje "plaťte jen za to, co použijete" — ve skutečnosti je to
zároveň nejčastější zdroj nepříjemných překvapení na faktuře. Na
rozdíl od fyzického datacentra, kde je nový server vidět a schvaluje ho
někdo s rozpočtem, si v cloudu může kdokoliv s dostatečnými právy za
pár kliknutí nebo jedním terraform apply spustit desítky drahých
instancí. Tato lekce shrnuje, kde náklady nejčastěji unikají a jak je
řídit.
Teorie
Kde peníze nejčastěji unikají
- Zapomenuté běžící zdroje — testovací instance, které nikdo
nevypnul, staré EBS disky odpojené od smazaných instancí, nevyužité
Elastic IP adresy (za nepřipojenou veřejnou IP se v AWS platí). - Předdimenzování (over-provisioning) — instance typu
m5.2xlarge
tam, kde by stačilt3.medium, protože nikdo zpětně neověřil
skutečné využití CPU/RAM. - Přenos dat (data transfer) — provoz mezi dostupnostními zónami
nebo ven z cloudu (egress) bývá zpoplatněný a v součtu nezanedbatelný,
zatímco příchozí provoz je typicky zdarma. - Neefektivní třída úložiště — data přístupovaná jednou za rok
ležící v drahéSTANDARDtřídě S3 místo vGLACIER.
Nástroje pro přehled
Všechny hlavní cloudy nabízí nativní nástroje: AWS Cost Explorer a
Budgets (upozornění při překročení limitu), Azure Cost
Management, GCP Billing reports. Klíčová praktika je
tagování zdrojů (např. team=platform, env=staging,
project=x) — bez tagů nejde náklady rozklíčovat podle týmu nebo
projektu, jen podle typu služby.
Techniky optimalizace
- Right-sizing — pravidelná revize skutečného využití instancí a
přechod na menší/levnější typ, pokud kapacita není využita. - Autoscaling — automatické škálování počtu instancí podle
aktuální zátěže, takže se neplatí za kapacitu "pro jistotu" po celý
den. - Rezervované a spotové kapacity — cloudy nabízí slevu (často 30 až
70 %) výměnou za závazek na 1–3 roky (Reserved Instances/Savings
Plans) nebo za akceptování možného přerušení běhu (Spot Instances) —
vhodné pro dávkové zpracování nebo neproduktivní zátěže. - Automatické vypínání mimo pracovní dobu — vývojová a testovací
prostředí typicky nikdo nepoužívá přes noc a o víkendech; naplánovaný
skript je vypne a ráno zase zapne. - Life-cycle politiky pro úložiště — automatický přesun starých
objektů do levnější třídy nebo jejich smazání po definované době.
Praktický příklad
Nastavení upozornění na rozpočet a life-cycle politiky pro S3 přes AWS
CLI:
# rozpočet 500 USD měsíčně s upozorněním při 80 %
aws budgets create-budget \
--account-id 123456789012 \
--budget file://budget.json \
--notifications-with-subscribers file://notifikace.json
// budget.json
{
"BudgetName": "mesicni-limit-produkce",
"BudgetLimit": { "Amount": "500", "Unit": "USD" },
"TimeUnit": "MONTHLY",
"BudgetType": "COST"
}
Life-cycle politika, která po 30 dnech přesune logy do levnější třídy a
po roce je smaže:
{
"Rules": [
{
"ID": "presun-a-uklid-logu",
"Filter": { "Prefix": "logs/" },
"Status": "Enabled",
"Transitions": [
{ "Days": 30, "StorageClass": "STANDARD_IA" },
{ "Days": 90, "StorageClass": "GLACIER" }
],
"Expiration": { "Days": 365 }
}
]
}
Jednoduchý skript pro vypnutí testovacích instancí mimo pracovní dobu
(spouštěný přes cron nebo naplánovanou Lambda funkci):
#!/usr/bin/env bash
# vypni vsechny instance oznacene tagem env=staging
aws ec2 describe-instances \
--filters "Name=tag:env,Values=staging" "Name=instance-state-name,Values=running" \
--query "Reservations[].Instances[].InstanceId" --output text \
| xargs -r aws ec2 stop-instances --instance-ids
Shrnutí
Cloudové náklady rostou nenápadně kvůli zapomenutým zdrojům,
předdimenzování, egress provozu a nesprávné třídě úložiště. Základem
kontroly je tagování zdrojů a pravidelné sledování nástrojů jako Cost
Explorer. Konkrétní úspory přináší right-sizing, autoscaling,
rezervované nebo spotové kapacity, automatické vypínání
nevyužívaných prostředí a life-cycle politiky pro úložiště.
Kontrolní otázky
- Proč je tagování zdrojů předpokladem smysluplné analýzy nákladů?
- Jaký je rozdíl mezi Reserved Instances a Spot Instances z hlediska
rizika a úspory? - Kde v typické architektuře nejčastěji vznikají neočekávané náklady
za přenos dat? - Mini cvičení: navrhněte tři konkrétní kroky, kterými byste snížili
měsíční účet za vývojové prostředí využívané jen v pracovní době.
Lekce na sebe nejsou zamčené — libovolnou lekci můžete otevřít i označit jako hotovou v jakémkoliv pořadí.