Настроить reserved instances для постоянной нагрузки

ТЕХНИЧЕСКОЕ ЗАДАНИЕ: Настроить reserved instances для постоянной нагрузки

1. Цель задачи

Освоить методику планирования и закупки Reserved Instances (RI) в AWS для workloads с предсказуемой постоянной нагрузкой. Вы научитесь анализировать текущее потребление ресурсов, рассчитывать оптимальный размер резервирования, оформлять покупку RI и оценивать реальную экономию относительно on-demand ценообразования.

Ключевой результат Снижение затрат на вычислительные ресурсы AWS для заданного сервиса не менее чем на 40% за счёт перехода с on-demand на Reserved Instances (1- или 3-летний срок), подтверждённое отчётом Cost Explorer.


2. Исходные данные

Что нужноОткуда взять
AWS аккаунт с развёрнутым сервисом (например, EC2 для inference API, RDS для базы знаний)Личный аккаунт AWS (Free Tier допустим, но нагрузка может быть смоделирована)
Логи использования вычислительных ресурсов за последние 1–3 месяца (vCPU часы, инстансы, регионы)AWS Cost Explorer, CloudWatch, AWS CUR (Cost and Usage Reports)
Текущая стоимость on-demand в месяц для целевого сервисаAWS Cost Explorer — фильтр по ресурсам (EC2, RDS, ElastiCache)
Понимание постоянной нагрузки (peak/off-peak, util%)CloudWatch метрики CPU, NetworkIn/Out, мониторинг собственного приложения
Ручка управления резервированиямиAWS Console -> EC2 -> Reserved Instances, или AWS CLI / SDK

Если нет реального сервиса с постоянной нагрузкой — симулируем:

  1. Запустите один t3.medium EC2 инстанс с простым HTTP-сервером (например, python3 -m http.server 8000), который работает 24/7 в течение тестового периода (минимум 3 дня).
  2. Имитируйте "стабильный" трафик с помощью автоматического cron-запроса каждые 30 секунд (curl localhost).
  3. В Cost Explorer увидите постоянное потребление.
  4. Далее используйте этот инстанс как цель для закупки RI в 1 год.

3. Технологический стек

КомпонентИнструментыНазначение
Платформа облакаAWS (US East / EU West)Вычислительные ресурсы
Мониторинг и метрикиAWS CloudWatch + Cost ExplorerАнализ использования и затрат
РезервированиеAWS Console, CLI (aws ec2 purchase-reserved-instances-offering)Закупка RI
Расчёт экономииAWS Cost Explorer / калькуляторОценка скидки
ДокументированиеMarkdown / Jupyter notebookФиксация расчетов и плана

4. Этапы выполнения

Этап 1: Анализ текущего потребления и затрат (2–3 часа)

Действия

  1. Определите целевые сервисы
    Выделите ресурсы, которые работают с постоянной нагрузкой: EC2 для inference, RDS для БД, ElastiCache и т.д. Запишите region, instance family, размер, количество.

  2. Соберите метрики за последние 30 дней.

    • Используйте Cost Explorer -> Usage -> фильтр по сервису.
    • Скачайте CSV с почасовыми cost и usage (OnDemand, hours).
    • Из CloudWatch получите среднюю загрузку CPU, RAM, network.
    • Определите baseline utilisation: если средняя utilisation > 60% и не скачет, нагрузка считается постоянной.
  3. Рассчитайте текущую ежемесячную стоимость on-demand
    В Cost Explorer задайте период 1 месяц, отфильтруйте по целевым инстансам, получите сумму.
    Пример: t3.medium (2 vCPU, 4 GB) в us-east-1 стоит $0.0416/ч => $30.0/мес за 1 инстанс.

  4. Оцените, сколько инстансов необходимо резервировать.

    • Если у вас 5 инстансов с utilisation > 60% круглосуточно — резервируйте все 5.
    • Если нагрузка сезонная, но предсказуемая — посчитайте baseline min workload.
    • Для постоянной нагрузки можно взять 80-100% от средних часов использования.

Ожидаемый результат этапа
Таблица с инстансами, их on-demand стоимостью в месяц, utilisation, рекомендация по количеству RI.


Этап 2: Выбор типа и срока RI (1 час)

Действия

  1. Изучите типы Reserved Instances в AWS:

    • Standard RI — фиксированный тип и регион, макс. скидка (до 72% на 3 года)
    • Convertible RI — можно менять семью инстансов (скидка до 54%)
    • Scheduled RI — резервирование на определённые дни/часы (не подходит для 24/7)
  2. Выберите срок оплаты

    • 1 год — даёт скидку ~40% от on-demand (если оплата upfront)
    • 3 года — скидка до 72% (требует приверженности)
    • Нулевой upfront (Partial upfront) — баланс между скидкой и затратами.
  3. Примите решение
    Для учебной задачи выберите 1 год Standard RI, Partial upfront (скидка ~40% — достаточна для выполнения KPI).

Ожидаемый результат этапа
Обоснованный выбор типа и срока RI. Например: "Standard RI, 1 год, Partial upfront, для t3.medium (5 штук)".


Этап 3: Покупка Reserved Instances (1 час)

Действия

  1. Перейдите в EC2 Console -> Reserved Instances -> Purchase Reserved Instances.
    Укажите платформу (Linux/Windows), тип (t3.medium), количество (5), регион (us-east-1), срок (1 год), опцию оплаты (Partial upfront).

  2. Добавьте в корзину и подтвердите покупку.
    Внимание: в реальной среде это означает обязательство платить; в тестовом аккаунте используйте AWS Free Tier (они не покрываются RI для t3.medium, но можно купить RI на минимальных суммах – стоимость будет ~$200 за год partial upfront). Если аккаунт новый и нет бюджета, можно симулировать покупку через CLI с флагом --dry-run или просто вычислить экономию аналитически.

  3. Для симуляции без реальных денег

    • Установите aws-cli.
    • Выполните aws ec2 describe-reserved-instances-offerings чтобы получить offer ID.
    • Запишите стоимость и скидку.
    • Оформите в Jupyter notebook расчёт экономии без фактической покупки.
  4. Проверьте активацию RI
    После покупки в консоли EC2 -> Reserved Instances появится запись. Скидка применяется автоматически к соответствующим инстансам, работающим в данный момент.

Ожидаемый результат этапа
Приобретённые (или симулированные) Reserved Instances; запись в консоли; стоимость покупки (или расчётная стоимость).


Этап 4: Верификация экономии и мониторинг (1–2 часа)

Действия

  1. Подождите 24–48 часов (в реальной системе) или сразу воспользуйтесь Cost Explorer с фильтром Reserved Instance.

  2. Сравните затраты за период "до" и "после":

    • До: on-demand стоимость за месяц.
    • После: стоимость on-demand для непокрытых часов + амортизация upfront (разделить сумму upfront на 12 месяцев).
      Формула: Новая ежем. стоимость = (количество часов в месяц * RI hourly rate) + (upfront / 12).
  3. Рассчитайте экономию
    Экономия = 1 - (Новая стоимость / Старая стоимость).
    Цель: >= 40%.

  4. Зафиксируйте результаты в отчёте
    Скриншоты Cost Explorer до/после, таблица с цифрами.

Ожидаемый результат этапа
Подтверждённая экономия ≥40%, оформленная в виде отчёта.


Этап 5: Документирование и автоматизация (1 час)

Действия

  1. Напишите краткую инструкцию для команды (1–2 страницы):

    • Как анализировать потребление
    • Когда выбирать Standard vs Convertible
    • Как рассчитывать upfront vs no upfront
    • Команды AWS CLI для автоматизации закупки (опционально).
  2. Создайте скрипт (Python/Bash) для

    • Получения текущих инстансов с тегом workload=production
    • Расчёта необходимого количества RI
    • Покупки RI (с флагом --dry-run для безопасности)
    • Отправки отчёта в Slack/email.
  3. Включите рекомендацию по реновации через 1 год (настройка оповещения об истечении срока RI).

Ожидаемый результат этапа
Готовая документация и опциональный скрипт автоматизации.


5. Критерии приемки (Definition of Done)

  • Проанализированы минимум 3 различных инстанса (или один, но с обоснованием постоянной нагрузки).
  • Выбран и обоснован тип RI (Standard), срок (1 или 3 года) и опция оплаты.
  • RI приобретены (или симулированы с детальным расчётом) в соответствии с выбранным планом.
  • Экономия, рассчитанная на основе реальных/симулированных данных, подтверждена ≥40%.
  • Создан отчёт в Markdown с таблицами затрат до/после, скриншотами Cost Explorer.
  • Написана инструкция для команды (минимум 5 шагов).
  • (Опционально) Написан автоматизированный скрипт закупки RI.

6. Ожидаемый результат

Основной артефакт
Файл reserved_instances_report.md, содержащий:

  • Анализ текущих затрат (таблица с инстансами, utilisation, on-demand стоимость)
  • Обоснование выбора RI (Standard, 1 год, Partial upfront)
  • Расчёт новой стоимости и экономии (с таблицей)
  • Скриншоты из Cost Explorer до и после применения RI
  • Инструкция по воспроизведению

Дополнительно (опционально):

  • Jupyter notebook с Python-расчётами
  • AWS CLI скрипт purchase_ri.sh
  • Метрики CloudWatch, показывающие стабильную нагрузку

7. Возможные сложности и их решение

СложностьРешение
Нет реальной нагрузки / аккаунт без затратИспользуйте симуляцию: запустите EC2 на Free Tier (t2.micro) на 3 дня, имитируйте трафик. Для RI возьмите offer-id из CLI и сделайте расчёт в Excel/notebook. Экономию считайте гипотетически.
Сложность с бюджетами и привязкой к RIAWS RI применяются на уровне аккаунта. Если инстансы не соответствуют типу/региону — скидка не применяется. Тщательно проверьте атрибуты.
RI не окупаются при низкой utilisationЗадача про постоянную нагрузку; если utilisation < 60% — возможно лучше использовать Spot Instances или Auto Scaling. Обоснуйте, что RI невыгодны, и предложите альтернативу.
Upfront платёж невозможно совершитьВыберите опцию No upfront (ежемесячная плата). Скидка будет ниже (~30%), но экономия ≥40% может быть не достигнута; в таком случае берите 3-летний срок No upfront (скидка ~50%).
Cost Explorer показывает 0 затрат из-за Free TierИспользуйте Cost and Usage Reports (CUR) или выставьте фильтр на ресурсы, не входящие в бесплатный лимит (например, t3.medium не входит в Tier).

8. Бюджет времени (оценка)

ЭтапВремя
Этап 1: Анализ потребления2–3 ч
Этап 2: Выбор типа RI1 ч
Этап 3: Покупка RI1 ч
Этап 4: Верификация экономии1–2 ч
Этап 5: Документирование1 ч
Итого6–8 ч

Примечание: При первом выполнении заложите +2 часа на изучение интерфейса AWS Cost Explorer и терминологии RI.


9. Связанные вопросы из базы знаний

ВопросТема
12Как устроены reserved instances в AWS?
15Разница между Standard и Convertible RI
23Как рассчитать TCO для облачных ресурсов?
34Оптимизация затрат на inference сервис
56Мониторинг utilisation инстансов
67Автоматизация закупки RI через AWS CLI
89Cost Explorer: создание отчётов по экономии
102Как учитывать upfront в ежемесячном бюджете?
145Что такое Savings Plans и чем отличаются от RI?
210Как проверить, применяются ли RI к вашим инстансам?

10. Чек-лист самопроверки

  • Я чётко определил(а), какие ресурсы подлежат резервированию, и обосновал(а) их "постоянность".
  • Я собрал(а) корректные данные из Cost Explorer и CloudWatch за минимум 30 дней.
  • Я выбрал(а) наиболее выгодный тип RI (Standard) и срок (1 год) или аргументировал(а) другой выбор.
  • Я рассчитал(а) экономию на основе реальных цифр: (on-demand - RI) / on-demand ≥ 0.40.
  • Я проверил(а), что рассчитанная экономия подтверждается на практике (или симуляции) — нет скрытых дополнительных затрат.
  • Я задокументировал(а) процесс и написал(а) инструкцию, понятную коллеге без опыта в RI.
  • (Опционально) Я написал(а) автоматизированный скрипт для повторения процесса.