0Pricing
AWS Solutions Architect · Урок

Подбор размера и Compute Optimizer

Используйте рекомендации AWS Compute Optimizer, чтобы уменьшить размер избыточно выделенных экземпляров EC2, функций Lambda и томов EBS и снизить затраты.

«Подбор размера и Compute Optimizer» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.

Проблема избыточного выделения ресурсов

Одна из наиболее распространённых и дорогостоящих ошибок в облачной архитектуре — избыточное выделение ресурсов, то есть выделение ресурсов в большем объёме, чем фактически требуется рабочей нагрузке. ИТ-команды часто выделяют ресурсы с избытком из-за привычек, сформировавшихся при работе с локальной инфраструктурой (закупка мощности для пиковой нагрузки), страха снижения производительности или простого отсутствия повторной проверки первоначальных решений по выбору размера. В AWS избыточно выделенные инстансы EC2, тома EBS и функции Lambda ежеминутно расходуют средства во время работы. Выбор оптимального размера — это систематический процесс выявления и устранения таких потерь.

# Common over-provisioning symptoms:
# EC2: average CPU < 10%, memory < 20%
# RDS: storage auto-grow never triggered
# Lambda: allocated memory rarely exceeds 40%
# EBS: provisioned IOPS consistently unused

# Cost impact example:
# Over-provisioned r5.8xlarge at $1.92/hr: $1,382/month
# Correct size r5.xlarge at $0.252/hr:      $181/month
# Savings: $1,201/month per instance

Обзор AWS Compute Optimizer

AWS Compute Optimizer анализирует исторические показатели использования из CloudWatch и применяет машинное обучение, чтобы рекомендовать оптимальные вычислительные ресурсы AWS. Он поддерживает инстансы EC2, группы автоматического масштабирования EC2, тома EBS, функции Lambda и Amazon ECS на Fargate. Для формирования обоснованных рекомендаций Compute Optimizer требуется история показателей как минимум за 30 дней. Его можно бесплатно включить; он предоставляет рекомендации с расчётной ежемесячной экономией и оценкой риска изменений.

# Opt in to Compute Optimizer
aws compute-optimizer update-enrollment-status \
  --status Active

# Get EC2 recommendations
aws compute-optimizer get-ec2-instance-recommendations \
  --query 'instanceRecommendations[].{Instance:currentInstanceType,Recommended:recommendationOptions[0].instanceType,Savings:recommendationOptions[0].estimatedMonthlySavings.value,Risk:recommendationOptions[0].performanceRisk}'

# Get Lambda recommendations
aws compute-optimizer get-lambda-function-recommendations

Выбор оптимального размера EC2 с помощью Compute Optimizer

Compute Optimizer анализирует загрузку CPU EC2, использование Memory (через агент CloudWatch), пропускную способность сети и IOPS EBS за последние 3, 14 или более 30 дней. Затем он выдаёт один из четырёх результатов: Optimized (текущий размер подходит), Over-provisioned (размер можно уменьшить), Under-provisioned (размер следует увеличить) или Not optimized (данных недостаточно). Всегда проверяйте риск для производительности — Compute Optimizer присваивает каждой рекомендации уровень риска VeryLow, Low, Medium, High.

# EC2 recommendation findings:
# Finding: OVER_PROVISIONED
# CurrentInstanceType: m5.4xlarge
# RecommendedInstanceType: m5.xlarge
# CPU utilisation: P99 = 22%, P50 = 4%
# Memory utilisation: P99 = 18%, P50 = 8%
# EstimatedMonthlySavings: $380
# PerformanceRisk: VeryLow

# Always check:
# - Does current instance have burstable credits? (T3)
# - Are there workload spikes not captured in averages?
# - Is there seasonality to consider?

Выбор оптимального размера Lambda

Стоимость функций Lambda рассчитывается за каждую миллисекунду времени выполнения с учётом выделенного объёма Memory. Выделение большего объёма Memory, чем требуется, приводит к лишним расходам, однако больший объём Memory также означает больше CPU — поэтому оптимальным является значение Memory, при котором минимальна стоимость одного вызова. Compute Optimizer анализирует длительность вызовов Lambda, частоту ошибок и показатели тайм-аутов, чтобы рекомендовать оптимальное значение Memory. Инструмент с открытым исходным кодом Lambda Power Tuning также может вызывать Вашу функцию с разными значениями Memory и эмпирически находить конфигурацию с минимальной стоимостью.

# Compute Optimizer Lambda recommendations
aws compute-optimizer get-lambda-function-recommendations \
  --function-arns arn:aws:lambda:us-east-1:123:function:my-function

# Response shows:
# currentMemorySize: 1024 MB
# recommendedMemorySize: 256 MB
# utilizationMetrics:
#   - type: MEMORY_MAXIMUM, value: 89 (MB)
# estimatedMonthlySavings: $45

# 89 MB actual vs 1024 MB allocated = 935 MB wasted

Выбор оптимального размера томов EBS

Тома EBS часто избыточно выделены как по размеру (неиспользуемое дисковое пространство), так и по IOPS (зарезервированные IOPS, которые никогда не используются). Compute Optimizer анализирует показатели VolumeReadOps, VolumeWriteOps, VolumeReadBytes, VolumeWriteBytes. Распространённая рекомендация — перейти с gp2 на gp3 (в нём размер и IOPS настраиваются раздельно): Вы сможете независимо выбрать оптимальное значение IOPS и часто сэкономить 20%. Также выявляйте неподключённые тома EBS (инстансы удалены, но тома остались) и создавайте их снимки либо удаляйте их.

# Get EBS volume recommendations
aws compute-optimizer get-ebs-volume-recommendations \
  --volume-arns arn:aws:ec2:us-east-1:123:volume/vol-12345

# Common finding: gp2 -> gp3 migration
# gp2: 500 GB = 500 GB * $0.10 = $50/month
#   IOPS: 1,500 (3 IOPS/GB, not configurable)
# gp3: 500 GB = $40/month + 3,000 IOPS free
#   Save $10/month plus get MORE baseline IOPS

# Find unattached EBS volumes
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[].{VolumeId:VolumeId,Size:Size,Created:CreateTime}'

Рекомендации для групп автоматического масштабирования

Compute Optimizer анализирует использование всех инстансов группы ASG и рекомендует изменения шаблона запуска для типа инстанса. Если все инстансы в ASG стабильно избыточны, переход на меньший тип инстанса снижает затраты в масштабе всей группы. Например, если ASG в среднем содержит 10 инстансов m5.large, переход на m5.medium позволяет сэкономить 50% на каждом инстансе. Compute Optimizer также рекомендует инстансы на базе Graviton, если Ваше программное обеспечение совместимо с ними, обеспечивая одновременно повышение производительности и снижение затрат.

# Get ASG recommendations
aws compute-optimizer get-auto-scaling-group-recommendations \
  --auto-scaling-group-arns arn:aws:autoscaling:us-east-1:123:autoScalingGroup:abc:autoScalingGroupName/my-asg

# If recommendation is to switch to Graviton:
# Current: m5.large (x86, $0.096/hr)
# Recommended: m6g.large (Graviton2, $0.077/hr)
# Savings: 20% per instance
# ASG at 10 instances average = $220/month savings

Trusted Advisor для анализа затрат

AWS Trusted Advisor — ещё один инструмент, который предоставляет рекомендации по оптимизации затрат, а также выполняет проверки безопасности, производительности, отказоустойчивости и ограничений сервисов. Основные проверки затрат: инстансы EC2 с низким использованием (менее 10% CPU в течение 4 и более дней), несвязанные эластичные IP-адреса (за них взимается плата, если они не подключены), недостаточно используемые тома EBS, простаивающие балансировщики нагрузки (без работоспособных целевых объектов) и неиспользуемые Reserved Instances. Базовые проверки Trusted Advisor бесплатны; для полного набора требуется тариф Business или Enterprise Support.

# Trusted Advisor: get cost optimisation checks
aws support describe-trusted-advisor-checks \
  --language en \
  --query 'checks[?category==`cost_optimizing`].{Name:name,Id:id}'

# Key checks:
# Qkj5MU5fNp: Low utilisation EC2 instances
# Z4AUBRNSmh: Unassociated Elastic IP addresses
# DAvU99Dc4C: Underutilized EBS volumes
# hjLMh88uM8: Idle load balancers
# 1e93e4c0b5: Unused reserved instances

Обновление поколений инстансов

AWS регулярно выпускает новые, более эффективные поколения инстансов EC2, которые обеспечивают более высокую производительность при меньшей или такой же стоимости. Переход с 5-го поколения (m5, c5, r5) на 7-е поколение (m7g, c7g, r7g) может обеспечить на 40% более высокую вычислительную производительность при сопоставимой или меньшей стоимости. Compute Optimizer специально выявляет возможности перехода на новые поколения, включая инстансы на базе Graviton. Обновление инстансов часто является самым простым действием по выбору оптимального размера: конфигурация та же, оборудование новее, производительность выше, стоимость ниже.

# EC2 instance generation comparison (same price tier):
# m5.large:  2 vCPU, 8 GB, $0.096/hr  (2019)
# m6i.large: 2 vCPU, 8 GB, $0.096/hr  (2021, ~10% faster)
# m7i.large: 2 vCPU, 8 GB, $0.1008/hr (2023, ~15% faster)
# m7g.large: 2 vCPU, 8 GB, $0.0808/hr (2023, Graviton3, cheapest)

# Upgrade path for Linux workloads:
# m5 -> m7g (Graviton): best price/performance
# m5 -> m7i: same architecture, no code changes

Выбор оптимального размера инстансов RDS

Инстансы RDS дороги и часто избыточно выделены. Используйте показатели CloudWatch для оценки использования RDS: CPUUtilization, FreeableMemory, ReadIOPS и WriteIOPS. Если CPU стабильно загружен менее чем на 20%, а объём свободной Memory постоянно высок, рассмотрите уменьшение размера. Для производственных баз данных с Multi-AZ выбор оптимального размера удваивает экономию, поскольку изменение применяется и к основному, и к резервному инстансу. Также рассмотрите переход с RDS MySQL/PostgreSQL на Aurora: это часто обеспечивает более высокую производительность при сопоставимой стоимости и оказывается выгоднее при масштабировании.

# Monitor RDS utilisation for right-sizing
aws cloudwatch get-metric-statistics \
  --namespace AWS/RDS \
  --metric-name CPUUtilization \
  --dimensions Name=DBInstanceIdentifier,Value=mydb \
  --start-time 2026-05-21T00:00:00Z \
  --end-time 2026-06-21T00:00:00Z \
  --period 86400 \
  --statistics Maximum Average

# If 30-day P99 CPU < 30%, consider downsizing
# If P99 CPU > 80%, consider upsizing

Внедрение процесса выбора оптимального размера

Выбор оптимального размера должен быть постоянным процессом, а не разовой задачей. Установите ежемесячный или ежеквартальный график проверок: получайте рекомендации Compute Optimizer, определяйте, какие из них безопасно применить, внедряйте изменения в окно технического обслуживания и измеряйте экономию. Автоматизируйте простые задачи: очистку неподключённых томов EBS, освобождение неиспользуемых эластичных IP-адресов и удаление простаивающих балансировщиков нагрузки можно выполнять с помощью скриптов. Создайте в CloudWatch панель мониторинга оптимизации затрат, которая отслеживает ежемесячные расходы по сервисам и выделяет необычные увеличения.

# Script to release unassociated Elastic IPs
aws ec2 describe-addresses \
  --query 'Addresses[?!AssociationId].AllocationId' \
  --output text | xargs -I {} \
  aws ec2 release-address --allocation-id {}

# Script to delete unattached EBS volumes (careful!)
# First check if snapshots exist before deleting
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[].VolumeId' \
  --output text

Выбор оптимального размера и изменение архитектуры

Выбор оптимального размера устраняет избыточное выделение ресурсов в существующих архитектурах, однако иногда проблема заключается в самой архитектуре. Для одного большого инстанса EC2, на котором работают несколько приложений, может потребоваться архитектурная декомпозиция (микросервисы на Fargate), а не просто переход на меньший инстанс. Для монолитной базы данных может потребоваться сегментирование или Caching, а не только уменьшение размера инстанса. Выбор оптимального размера — первый и самый быстрый шаг. Оптимизация архитектуры (Serverless, контейнеры, Caching) обеспечивает более глубокую и устойчивую экономию, но требует больших усилий. Опора Cost Optimisation рекомендует применять оба подхода.

# Cost optimisation hierarchy:
# Level 1: Right-sizing (quick wins, days)
#   - Compute Optimizer recommendations
#   - Delete unused resources
#   - Elastic IP, EBS cleanup

# Level 2: Purchasing model (weeks)
#   - Reserved Instances / Savings Plans
#   - Spot for eligible workloads

# Level 3: Architecture (months)
#   - Serverless migration
#   - Container consolidation
#   - Caching layer addition
#   - Database optimisation

Быстрая проверка

Проверьте, насколько хорошо Вы усвоили понятия AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что AWS Compute Optimizer применяет машинное обучение к показателям CloudWatch, чтобы рекомендовать вычислительные ресурсы оптимального размера, выбор оптимального размера применим к EC2, Lambda, EBS, ASG и ECS на Fargate, а переход на новые поколения инстансов, особенно на Graviton, одновременно повышает эффективность и снижает затраты. Сделайте выбор оптимального размера регулярной практикой, а не разовой задачей. Далее мы рассмотрим Reserved Instances, Savings Plans и модели приобретения Spot.

Часто задаваемые вопросы

Урок «Подбор размера и Compute Optimizer» бесплатный?

Да — полный текст урока «Подбор размера и Compute Optimizer» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «Подбор размера и Compute Optimizer»?

Используйте рекомендации AWS Compute Optimizer, чтобы уменьшить размер избыточно выделенных экземпляров EC2, функций Lambda и томов EBS и снизить затраты. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AWS Solutions Architect?

Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Подбор размера и Compute Optimizer»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AWS Solutions Architect?

Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Подбор размера и Compute Optimizer
  2. Резервируемые экземпляры, Savings Plans и Spot
  3. Cost Explorer, бюджеты и теги распределения затрат
  4. Оптимизация затрат на S3 и передачу данных
← Назад к AWS Solutions Architect