FinOps — Cloud Cost Optimization
FinOps je operačný framework, ktorý spája financie, technológiu a biznis s cieľom maximalizovať hodnotu cloud investícií. Nejde len o šetrenie — ide o informované rozhodovanie o tom, kde a ako míňať peniaze na cloud.
Čo je FinOps?
FinOps (Financial Operations) je kultúrna prax a disciplína, ktorá prináša finančnú zodpovednosť do variabilného modelu cloud výdavkov. Vznikla ako odpoveď na nekontrolovaný rast cloud nákladov v organizáciách.
Tri piliere FinOps
- Inform (Informovať) — viditeľnosť nákladov, kto čo míňa
- Optimize (Optimalizovať) — identifikácia a realizácia úspor
- Operate (Prevádzkovať) — kontinuálne riadenie a governance
FinOps lifecycle
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ INFORM │────▶│ OPTIMIZE │────▶│ OPERATE │
│ │ │ │ │ │
│ Viditeľnosť│ │ Right-sizing │ │ Governance │
│ Alokácia │ │ Reservations │ │ Automatizá. │
│ Benchmarky │ │ Waste detect │ │ Policies │
└─────────────┘ └──────────────┘ └─────────────┘
▲ │
└───────────────────────────────────────┘
Tagging stratégia
Tagging je základ FinOps. Bez správneho taggovania nedokážete priradiť náklady k tímom, projektom alebo prostrediam.
Povinné tagy
| Tag | Príklad | Účel |
|---|---|---|
team |
backend, data |
Vlastníctvo |
environment |
prod, staging, dev |
Prostredie |
project |
e-shop, analytics |
Projekt/produkt |
cost-center |
CC-1234 |
Finančné stredisko |
managed-by |
terraform, helm |
Spôsob správy |
Vynucovanie tagov v Terraform
# Povinné tagy pre všetky zdroje
variable "required_tags" {
type = map(string)
default = {
team = "platform"
environment = "production"
project = "core-infra"
managed-by = "terraform"
}
}
resource "aws_instance" "app" {
ami = "ami-0123456789"
instance_type = "t3.medium"
tags = merge(var.required_tags, {
Name = "app-server"
})
}
OPA policy pre Kubernetes labels
package kubernetes.admission
deny[msg] {
input.request.kind.kind == "Deployment"
required := {"team", "environment", "project"}
provided := {label | input.request.object.metadata.labels[label]}
missing := required - provided
count(missing) > 0
msg := sprintf("Chýbajúce povinné labels: %v", [missing])
}
Nástroje
Kubecost — náklady v Kubernetes
Kubecost poskytuje granulárny prehľad nákladov na úrovni namespace, deployment, pod:
# Inštalácia
helm install kubecost cost-analyzer \
--repo https://kubecost.github.io/cost-analyzer/ \
--namespace kubecost --create-namespace \
--set kubecostToken="your-token"
Čo Kubecost ukáže:
- Náklady per namespace, deployment, label
- Idle resources (platíte, ale nevyužívate)
- Right-sizing odporúčania
- Network cost allocation
- Savings recommendations
Infracost — náklady pred deployom
Infracost ukazuje cenu infraštruktúrnych zmien ešte v pull requeste:
# V CI pipeline
infracost breakdown --path=terraform/
# Výstup
# NAME MONTHLY COST
# aws_instance.app $30.37
# aws_rds_instance.db $147.20
# aws_s3_bucket.assets $2.30
# TOTAL $179.87
Integrácia do GitHub PR
# .github/workflows/infracost.yml
name: Infracost
on: [pull_request]
jobs:
infracost:
runs-on: ubuntu-latest
steps:
- uses: infracost/actions/setup@v3
with:
api-key: ${{ secrets.INFRACOST_API_KEY }}
- name: Generate cost estimate
run: |
infracost diff --path=terraform/ \
--format=json --out-file=/tmp/infracost.json
- name: Post PR comment
run: |
infracost comment github \
--path=/tmp/infracost.json \
--repo=${{ github.repository }} \
--pull-request=${{ github.event.pull_request.number }} \
--github-token=${{ secrets.GITHUB_TOKEN }}
OpenCost — CNCF open-source
OpenCost je CNCF sandbox projekt pre Kubernetes cost monitoring:
helm install opencost opencost/opencost \
--namespace opencost --create-namespace
Showback vs Chargeback
Showback
Tímy vidia svoje náklady, ale neplatia za ne priamo. Motivácia je cez transparentnosť a peer pressure.
- Jednoduchšia implementácia
- Vhodné pre začiatok FinOps cesty
- Dashboard s cost per team/project
Chargeback
Tímy platia za svoje cloud náklady z vlastného rozpočtu. Každý tím má cloud budget.
- Silnejšia motivácia optimalizovať
- Vyžaduje presné tagging a cost allocation
- Komplexnejšia implementácia
Odporúčanie: Začnite so showback, prejdite na chargeback keď máte zrelý tagging a procesy.
Waste Detection — Detekcia plytvania
Typické zdroje plytvania
| Typ | Príklad | Úspora |
|---|---|---|
| Idle resources | Dev prostredia bežiace 24/7 | 60-70% |
| Over-provisioned | 4 CPU alokované, 0.5 využité | 50-75% |
| Unattached storage | EBS volumes bez EC2 | 100% |
| Old snapshots | Snapshoty staršie ako 90 dní | 100% |
| Unused load balancers | LB bez healthy targets | 100% |
Automatický shutdown dev prostredí
# Kubernetes CronJob — shutdown dev o 19:00
apiVersion: batch/v1
kind: CronJob
metadata:
name: scale-down-dev
namespace: dev
spec:
schedule: "0 19 * * 1-5" # Po-Pia o 19:00
jobTemplate:
spec:
template:
spec:
serviceAccountName: scaler
containers:
- name: kubectl
image: bitnami/kubectl:latest
command:
- /bin/sh
- -c
- |
kubectl scale deployment --all --replicas=0 -n dev
restartPolicy: Never
---
# Scale up o 7:00
apiVersion: batch/v1
kind: CronJob
metadata:
name: scale-up-dev
namespace: dev
spec:
schedule: "0 7 * * 1-5"
jobTemplate:
spec:
template:
spec:
serviceAccountName: scaler
containers:
- name: kubectl
image: bitnami/kubectl:latest
command:
- /bin/sh
- -c
- |
kubectl scale deployment --all --replicas=1 -n dev
restartPolicy: Never
Praktické tipy na úsporu
- Reserved Instances / Savings Plans — 30-60% úspora pre predvídateľné workloady
- Spot Instances — 60-90% úspora pre fault-tolerant workloady (CI/CD, batch processing)
- Right-sizing — pravidelne kontrolujte využitie CPU/RAM a prispôsobte veľkosť
- Auto-scaling — škálujte podľa skutočného zaťaženia, nie podľa odhadu
- Storage tiering — presúvajte dáta do lacnejších úložísk (S3 Glacier, Archive)
- Cleanup politiky — automaticky mazajte staré artefakty, snapshoty a logy
- Multi-cloud porovnanie — porovnajte ceny medzi AWS, GCP a Azure
FinOps metriky
| Metrika | Popis | Cieľ |
|---|---|---|
| Unit cost | Náklad per transakcia/request | Klesajúci trend |
| Coverage | % workloadov s commitment | >70% |
| Utilization | Využitie reserved kapacity | >80% |
| Waste ratio | % nevyužitých zdrojov | <10% |
| Tag compliance | % zdrojov so správnymi tagmi | >95% |
Záver
FinOps nie je jednorazový projekt — je to kontinuálna prax. Začnite s viditeľnosťou (tagging + dashboard), identifikujte najväčšie zdroje plytvania a postupne budujte kultúru finančnej zodpovednosti. Najdôležitejšie: FinOps nie je o šetrení za každú cenu, ale o maximalizácii hodnoty z každého eura investovaného do cloudu.