FinOps & Cost Optimization concept page with rightsize, spot fleet, S3 lifecycle tiering, egress cost shock scenarios. Includes ADR on when to invest in cost optimization vs feature work.
Связывание cloud-затрат с бизнес-ценностью через visibility, accountability и дисциплину trade-offs
Cloud-биллинг — это уникальный класс затрат, который растёт без явного решения "потратить деньги". Команда деплоит микросервис в pull request, и через месяц обнаруживается, что NAT Gateway процессит 200 TB и стоит $9K. Никто не подписывал инвойс, никто не апрувил closing на эту сумму — оно просто появилось из суммы 10^9 мелких usage-records.
FinOps — не "режим экономии". Это операционная практика: каждая команда видит, сколько её workload стоит, и оптимизирует, когда ROI положительный. Без FinOps cloud-бил идёт по экспоненте, потому что:
Без FinOps цифры из практики: типичный pre-IPO SaaS тратит 25-40% cloud bill впустую (Flexera State of the Cloud Report). На bill $1M/мес это $250-400K/мес выкинутых на отсутствие дисциплины.
FinOps работает на трёх уровнях: inform (visibility — кто что тратит), optimize (rightsize, spot, lifecycle), operate (governance, budgets, chargeback).
FinOps — это обратная связь между infra-решениями и бизнес-метриками. Цикл из 4 шагов:
ALLOCATE -> SHOW -> ANALYZE -> ACT
(tagging) (per-team (anomalies, (rightsize,
dashboard) forecasts) spot, tier)
^ |
| |
+----------------------------------------------+
(feedback loop)
Allocate: каждый ресурс несёт tag team, service, env, cost-center. Без allocation все оптимизации делает один герой-инженер, который видит aggregate bill, но не знает, чей это workload.
Show: per-team dashboard или chargeback. Команда видит свою линию в bill и реагирует. Без show нет ownership — "облако дорогое" вместо "наш search service стоит $40K, треть от бюджета команды".
Analyze: anomaly detection (Vantage, CloudHealth, AWS Cost Anomaly Detection), forecasting, what-if-сценарии. Detect, что bill вырос на 30% за неделю до того, как financе спросят.
Act: rightsize, spot, savings plans, storage tiering, egress optimization. Это конкретная инженерная работа с измеримым ROI.
Цикл должен быть быстрым. Если CUR обновляется раз в день, anomaly видна через 24 часа, alert идёт через 48 — реакция запаздывает на 72 часа, за которые runaway lambda успевает сжечь $50K. Цель: anomaly-to-action < 24 часа для top-10 line items.
Ключевое уравнение:
ROI = (savings_per_year - engineer_time_cost) / engineer_time_cost
где engineer_time_cost = hours * fully_loaded_rate (typical $150-200/hr для senior).
ROI > 300% за год — делать. ROI < 100% — feature work выгоднее. Это уравнение защищает от двух крайностей: "тратим всё подряд" (никогда не оптимизируем) и "оптимизируем всё подряд" (тратим месяцы на $200/мес win).
Диаграмма показывает полный FinOps-loop в одной картинке.
Engineering teams (слева вверху) — три команды, которые являются cost producers. Team Alpha (payments) деплоит EC2 fleet, Team Bravo (search) — Lambda, Team Charlie (ml-batch) — spot fleet. Это источник всех затрат: каждый terraform apply материализуется в линию в bill.
AWS workloads (справа вверху) — три кластера, на которые декомпозируется типичный bill:
FinOps tooling (слева внизу) — visibility-слой:
Showback / chargeback (справа внизу) — output:
Edges показывают поток данных и денег: workload generates usage records -> CUR aggregates -> tools analyze -> reports go back to teams. Это замкнутый loop, без которого FinOps не работает.
Открой канвас — четыре scenario pills внизу показывают разные классы оптимизаций. Можешь переключаться между ними.
Самый типичный win: 40 x m5.4xlarge при CPU avg 18%. Cost Explorer rightsizing recommendations показывают, что m5.xlarge достаточно (4x меньше, $0.192/hr -> $0.048/hr). После миграции + autoscaling: 25-30 instances вместо статичных 40, $14K/мес вместо $35K — экономия 60%. P95 latency растёт на 8%, что обычно acceptable для не-realtime workload.
Урок: целься в CPU avg 40-60% / p95 70-80%. Ниже = overprovisioned, выше = no headroom. Без autoscaling rightsize не работает для spiky workload — будет outage при traffic spike.
ML training на on-demand: 60 x g4dn.xlarge, $5.3K/неделя. Spot даёт 70% скидку, но AWS забирает instance с 2-min notice. Решение: checkpoint в S3 каждые 5 мин + SIGTERM handler делает final flush + ASG replaces в другом capacity pool. Реальный cost $1.7K/неделя (включая reload overhead) — экономия $187K/год.
Diversification критична: Spot Fleet с 5 instance types x 3 AZs = меньше interruptions, потому что single capacity pool exhaustion не убивает весь fleet сразу. Никогда не пускай на spot stateful master nodes (Kafka controller, k8s control plane) и realtime serving с tight SLO — interruption во время request = customer-visible outage.
500 TB логов в S3 Standard = $11.5K/мес. S3 Storage Lens показывает, что 80% objects не trigger GetObject после 30 дней. Lifecycle policy: 30d -> IA, 90d -> Glacier Flexible, 365d -> Deep Archive. Финальный bill $4.2K/мес = -63%, экономия $87K/год за 1 неделю работы.
Три gotcha:
Самый болезненный класс инцидентов. Team Bravo деплоит микросервис, через месяц bill вырос на $30K. Breakdown: NAT GW processing 200 TB x $0.045 = $9K, S3 internet egress 300 TB x $0.09 = $27K, cross-AZ 50 TB x $0.01 x 2 = $1K. Никто не подписывал — оно просто появилось.
Фиксы:
Итог: $37K -> $7K за 2 недели работы = $360K/год.
Lesson: data transfer — шкаф со скелетами в каждом AWS bill. Любой microservice deploy review должен включать "куда идёт traffic + сколько GB/мес" — иначе инцидент через месяц.
В коде диаграммы ноды ec2-fleet прикреплён ADR-001: "Когда тратить эng-time на cost optimization vs строить features". Открой ноду в редакторе — там полное rationale.
Суть: FinOps — это не "сэкономить на всём". Это уравнение:
ROI = ($X_per_month * 12 - Y_hours * $150) / (Y_hours * $150)
Делаем оптимизацию если ROI > 300% за год. Игнорируем всё, что < $1K/мес — это noise, время инженера дороже.
Когда запускать FinOps practice:
Никогда не оптимизируй то, что собираешься переписывать — лучше за тот же эффорт ускорить миграцию на новую архитектуру. Migration с EC2 на Lambda для spiky workload даёт 70-90% экономии без отдельной FinOps работы.
Showback vs Chargeback: showback — команда видит свою линию (мягче, проще внедрить). Chargeback — команда платит из своего бюджета (сильнее accountability, но требует political buy-in и проработанной cost allocation). Чарджбэк без хорошего tagging превращается в drama: команды спорят, чья DynamoDB table.
1. Optimization без visibility. Оптимизируем "облако" вместо конкретной линии. Без tagging+breakdown — это гадание. Сначала видим, что именно дорого (Cost Explorer + Vantage), потом оптимизируем top-3 линии.
2. Tag-and-pray. Tagging policy в Confluence, но 40% ресурсов untagged. Решение: mandatory tags через IaC (Terraform Sentinel / OPA / AWS Config rules) + auto-shutdown untagged ресурсов в dev/staging через N дней.
3. Premature spot migration. Перенос stateful production workload на spot без checkpoint/drain. Первая major interruption = customer-visible outage. Spot для batch, для stateless serving с быстрым ASG replace, для overflow capacity — да. Для primary RDS, Kafka controller, k8s control plane — нет.
4. Reserved Instances over-commitment. Купили 3-year RIs на старый instance family, через год вышел Graviton 40% cheaper — застряли с старым железом до конца commit. Современный подход: Savings Plans (compute SP attach to любому instance family) instead of старых EC2 RIs.
5. NAT Gateway без VPC endpoints. Дефолт VPC template ставит NAT и забывает про VPC endpoints. S3/DynamoDB/SQS traffic через NAT = $0.045/GB processing вместо $0 через endpoint. Один endpoint окупается за месяц.
6. Logs ingestion runaway. CloudWatch Logs Insights включён везде, retention 1 год, debug verbosity. Bill в $20K/мес только за CloudWatch. Решение: structured logging с log levels, retention по env (prod 90d, dev 7d), sample не-critical events.
7. Forgotten dev environments. Staging копия prod, EBS volumes preserve termination, 50 разработчиков создали personal envs. Решение: auto-stop EC2 в dev на ночь и выходные (cron Lambda), TTL на personal envs (7 дней без активности -> destroy).
8. Chargeback без showback. Команда узнаёт, что должна $50K, когда finance прислал invoice. Без feedback loop команда не успевает реагировать. Показать сначала (showback) 1-2 квартала, потом переходить к chargeback.
9. Micro-optimizations. Переписать lambda на Rust ради $200/мес. Custom k8s scheduler ради 5% bin-packing. Almost always negative ROI — съедают месяцы работы и требуют maintenance forever.
10. Tool sprawl. CloudHealth + Vantage + Kubecost + кастомный internal dashboard + AWS Cost Explorer + Datadog cost insights. Все показывают разные числа. Решение: один primary tool для cross-cloud breakdown, один для k8s allocation. CUR как source of truth.