Оптимизация стоимости облачной инфраструктуры (Cloud Cost Optimization)
Облачные счета растут быстрее, чем растёт бизнес — это норма без активного управления. Типичная ситуация: компания платит за dev-среды, которые работают 24/7, инстансы right-sized по «на всякий случай», неиспользуемые EBS тома и старые снапшоты. Аудит обычно даёт 20-40% экономии без потери производительности.
Где прячутся расходы
Compute (EC2/GCE/VM). Самая большая статья. Проблемы:
- Oversized инстансы (c5.2xlarge для сервиса под 200 RPS)
- Dev/staging работают ночью и в выходные
- Старые инстансы на предыдущих поколениях (r4 вместо r6i)
Storage. Незаметно копится:
- EBS тома от удалённых инстансов (orphaned volumes)
- Снапшоты старше 90 дней (часто хранятся годами)
- S3 объекты без lifecycle policy
- Неоптимальный storage class (Standard вместо Infrequent Access для архивов)
Трансфер данных. Data transfer out стоит дорого. Особенно дорого: cross-AZ трафик (EC2 ↔ RDS в разных AZ), egress из региона.
Idle и неиспользуемые ресурсы. Load balancers без трафика, NAT Gateways, Elastic IP без привязки.
Инструменты анализа
AWS Cost Explorer: встроен, бесплатен. Показывает расходы по сервисам, регионам, тегам. Рекомендации по Reserved Instances.
AWS Trusted Advisor / GCP Recommender: конкретные рекомендации: «Этот инстанс использует CPU < 5% — рассмотрите t3.small вместо t3.xlarge».
Infracost: анализ стоимости Terraform планов до применения. В CI/CD показывает diff стоимости для каждого PR.
CloudHealth / Spot.io / Apptio Cloudability: enterprise-инструменты с расширенной аналитикой и showback/chargeback.
Быстрые победы (неделя 1-2)
-
Удалить orphaned resources: EBS тома без attachment, Elastic IPs без привязки, старые снапшоты
# Найти неприкреплённые EBS тома aws ec2 describe-volumes --filters Name=status,Values=available \ --query 'Volumes[*].[VolumeId,Size,CreateTime]' --output table -
S3 Intelligent-Tiering: включить для больших buckets — AWS автоматически перемещает объекты между storage тiers
-
Выключать dev/staging ночью: Lambda + CloudWatch Events или Instance Scheduler
-
Удалить старые снапшоты: lifecycle policy для AMI и EBS snapshots
Rightsizing инстансов
Анализ CloudWatch метрик за 2-4 недели:
- CPU < 20% в P95 → уменьшить инстанс
- Memory < 30% → уменьшить
- Network: сравнить с теоретическим лимитом инстанса
import boto3
from datetime import datetime, timedelta
cw = boto3.client('cloudwatch')
def get_cpu_p95(instance_id: str, days: int = 14) -> float:
response = cw.get_metric_statistics(
Namespace='AWS/EC2',
MetricName='CPUUtilization',
Dimensions=[{'Name': 'InstanceId', 'Value': instance_id}],
StartTime=datetime.now() - timedelta(days=days),
EndTime=datetime.now(),
Period=3600,
Statistics=['p95']
)
values = [dp['p95'] for dp in response['Datapoints']]
return max(values) if values else 0
Reserved Instances и Savings Plans
После стабилизации baseline нагрузки:
- 1-year Compute Savings Plans: 20-30% скидка, гибкость (работает для любых EC2, Fargate, Lambda)
- 3-year Reserved Instances: 40-60% скидка для стабильных workloads
- Spot Instances: 70-90% скидка для прерываемых задач (batch, CI workers)
Оптимизация трафика
Cross-AZ трафик: RDS и EC2 должны быть в одном AZ (для non-HA инстансов). Или использовать RDS Proxy для снижения числа соединений и их правильного размещения.
S3 VPC Gateway Endpoint: трафик S3 → EC2 через VPC endpoint не тарифицируется как egress.
Результаты типичного аудита
| Категория | Экономия |
|---|---|
| Rightsizing инстансов | 15-25% |
| Reserved/Savings Plans | 20-40% от compute |
| Dev/staging scheduling | 10-20% |
| S3 lifecycle + storage class | 5-15% |
| Orphaned resources | 3-8% |
Сроки проведения оптимизации
- Аудит и анализ текущих расходов — 2-3 дня
- Быстрые победы (orphaned, scheduling) — 2-3 дня
- Rightsizing план + реализация — 3-5 дней
- Reserved/Savings Plans покупка — 1 день (требует 1-2 недели наблюдения перед покупкой)







